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/