CDH mysql 元数据库备份

    技术2022-07-10  150

    1 前言 mysql-client和mysql-server

    mysql-client操作mysql实例的客户端有很多,mysql-client只是其中一种,包括mysql,mysqldump,mysqlslap,这些访问,备份,压力测试的工具。

    mysql-server是服务端,也就是说,你服务端没安装,客户端没对象去操作。

     

    2 安装mysql-client端元

    2.1 先卸载marial db的库包

    rpm -qa|grep mariadb

    rpm -e --nodeps  mariadb-server-*

    2.2 安装 client

    必须先安装依赖包,如下3个包分别后者依赖前者。

    sudo rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm

    sudo  rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm

    sudo rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm

    [sudo rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm] 这个包可选。 如果是正好再hue server节点,安装了mysql客户端,最好装下这个包,不然有可能hue无法启动报如下错误:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient.so.18: cannot open shared object file: No such file or directory. Did you install mysqlclient or MySQL-python。

     

     

    3 安装客户端后,就可以使用mysqldump逻辑备份(client端可以在任一节点操作)

    3.1 创建备份用户dumper

    创建用户可以在任意主机(%)连接数据库服务的权限(备份节点在hadoop002, DB在hadoop001)。

    create user dumper@'%' identified by '123456'

    3.2 授权

     grant select on *.* to dumper@'%';

    授予查询表数据权限。  grant show view on *.* to dumper@'%'; 

    授予查询视图权限  grant lock tables on *.* to dumper@'%';

    锁表,用于保持数据一致性。避免导出数据开启后,业务数据写入。  grant trigger on *.* to dumper@'%'; 

    授予查询触发器权限;

     

    3.3 备份

    3.3.1备份:hive metastore元数据库(重要)

    mysqldump  -u dumper -p123456 -h hadoop002 metastore > /tmp/metastore.mysql

    查看上述备份文件, 主要是一些DDL和DML操作: 删除表、创建表、insert table数据。

    3.3.2 其它组件元数据库备份:

    scm库:  cloudera server manager相关库

    amon库: cloudera service monitor  。。。

    Reports Manager:  rman

     

    我们可以一个一个备份上述各组件的元数据库(下节3.3.3的系统数据库我们可以不保存,涉及权限的可以重新授权)。

     2)我们也可以一次性备份所有数据库

     mysqldump  -u dumper -p123456 -h hadoop002 --all-databases > /tmp/all-databases.mysql

    一次性备份,多了一create database的脚本,其它同单独备份数据库一样(删表、建表,写数据)

    注:一次性备份所有库,只包含业务库和mysql库(用户权限)

    ,其它系统表不在(sys, performance_schema, information_schema)

     

     

    3.3.3 mysq系统自带库简介(本节与备份无关,可忽略)。

     1)  sys

     i) sys系统库支持MySQL 5.6或更高版本。 主要用于管理性能和诊断相关的查询。

     sys系统库提供了一些代替直接访问performance_schema的视图,所以必须启用performance_schema(performance_schema系统参数设置为ON)之后sys系统库的大部分功能才能正常使用

    ii)如果要充分使用sys系统库的功能,则必须启用某些performance_schema的instruments和consumers,如下: 

    * 所有wait instruments  * 所有stage instruments  * 所有statement instruments 

     注意上述开启会消耗系统性能。默认情况下performance_schema的设置基本满足sys系统库的大部分数据收集功能

     iii) sys 系统库下包含许多视图,它们以各种方式对performance_schema表进行聚合计算展示。这些视图中大部分都是成对出现,两个视图名称相同,但有一个视图是带'x$'字符前缀的,例如:host_summary_by_file_io和x$host_summary_by_file_io,代表按照主机进行汇总统计的文件I/O性能数据,两个视图访问数据源是相同的,但是创建视图的语句中,不带x$的视图是把相关数值数据经过单位换算再显示的(显示为毫秒、秒、分钟、小时、天等),带x$前缀的视图显示的是原始的数据(皮秒),

     

       2) performance_schema |

         性能相关。sys库对此做了进一步实用性提升

    具体参考:https://www.cnblogs.com/dinghailong128/p/12821635.html

     3)    information_schema   

    SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。

    TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。

    COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。

    STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。

    USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。

    SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。

    TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。

    COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。

    CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。 COLLATIONS表:提供了关于各字符集的对照信息。

    COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。

    KEY_COLUMN_USAGE表:描述了具有约束的键列。

    ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。

    VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。

    TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表  

    举例:查看数据库各个表数据占用空间大小

    SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), 'MB') as data FROM information_schema.tables WHERE TABLE_SCHEMA='sandbox_sub' ORDER BY DATA_LENGTH+INDEX_LENGTH desc;

    查看数据库中各个表字段个数

    SELECT TABLE_NAME,count(TABLE_NAME) from information_schema.COLUMNS where TABLE_SCHEMA='sandbox_sub' GROUP BY TABLE_NAME;

       mysql库

    MySQL 访问权限系统表包含如下几张表:

    user:包含用户帐户和全局权限和其他非权限列表(安全配置选项和资源控制选项列)

    db:数据库级别的权限表

    tables_priv:表级别的权限表

    columns_priv:列级权限表

    procs_priv:存储过程和函数权限表

    proxies_priv:代理用户权限表

     

        可参考:http://blog.itpub.net/26736162/viewspace-2651251/

    Processed: 0.042, SQL: 9