CDH mysql 元数据库备份

2 篇文章 0 订阅

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'     (mysql.user表控制)

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的系统数据库我们可以不保存,涉及权限的可以重新授权)。

注:单库备份只有表创建insert 数据。 无权限和库创建信息。

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

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

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

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

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

4 mysql数据库恢复

mysql -u root -p [dbnams] < backup.sql

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

 1)  sys

Sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容

 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:代理用户权限表

4)mysql库

    mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。

  • 保存MySQL的权限、参数、对象和状态信息。
  • 如哪些user可以访问这个数据、DB参数、插件、主从

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值