在 MySQL Utilities 中,包含众多管理 MySQL 的脚本工具,比如数据库结构对比、用户账户克隆、索引检查等等。目的是将复杂操作封装到单个工具中,以简化操作。
使用开源工具最担心:登船之后,船长跑路。目前 MySQL Utilities 支持 Python 2 环境,还没有得到支持 Python 3 环境的消息。至少在 MySQL 8 以前可以放心使用。
相关连接
项目仓库:https://github.com/mysql/mysql-utilities
下载地址:https://downloads.mysql.com/archives/utilities
Appendix F MySQL Utilities
开始安装
第一步、下载
我们安装 1.6.5 版本,可以直接从官网下载页中获取:
#!/bin/sh
# https://dev.mysql.com/downloads/utilities/
wget https://downloads.mysql.com/archives/get/p/30/file/mysql-utilities-1.6.5.tar.gz
第二步、安装
当下载完成后,执行以下命令安装该工具:
#!/bin/sh
tar -xf mysql-utilities-1.6.5.tar.gz
cd mysql-utilities-1.6.5
python ./setup.py install --record instfile.log # 安装命令工具
1)使用选项 --record instfile.log 记录安装到系统的文件,在卸载时使用(手动删除)。
2)执行 python setup.py help 查看其他选项及帮助信息。
3)所有命令会默认安装在 /usr/local/ 中。
安装到系统的命令
在 MySQL Utilities 中,工具可以分为以下类别:
二进制日志相关的工具
数据库对象相关的工具;
通用工具;
高可用相关的工具;
服务相关的工具;
专业操作工具;
下面将按照分类介绍这些工具的作用。
二进制日志操作(Binary Log Operations)
下面的这几个工具使用于二进制日志文件操作的
mysqlbinlogmove
重新定位二进制日志文件;
根据其序列号或修改日期移动文件;
mysqlbinlogpurge
二进制日志清除工具;
mysqlbinlogrotate
轮转二进制日志;
数据库对象的操作(Database Operations)
下面的这几个命令是用于数据库操作
mysqldbcompare
比较两台服务器或同一服务器上的数据库
比较定义和数据
生成差异报告
生成SQL转换语句
mysqldbcopy
在服务器之间复制数据库
在同一台服务器上克隆数据库
支持重命名
mysqldbexport
从一个或多个数据库导出元数据/数据
格式:SQL, CSV, TAB, Grid, Vertical
mysqldbimport
从一个或多个文件导入元数据和数据
从mysqldbexport读取所有格式
mysqldiff
比较数据库对象定义
生成差异报告
通用操作(General Operations)
下面程序是用于执行一般操作的工具,比如报告和搜索。
mysqlgrants
显示每个对象的授权。
由用户,用户授予和GRANT语句生成报告。
mysqldiskusage
显示数据库的磁盘使用情况
以SQL,CSV,TAB,Grid,Vertical生成报表
mysqlfrm
读取.frm文件,可选择逐字节诊断模式
从表定义数据中生成CREATE语句
mysqlindexcheck
读取一个或多个表的索引
检查冗余和重复的索引
以SQL,CSV,TAB,Grid,Vertical生成报表
mysqluserclone
将用户帐户克隆到相同或不同的服务器
显示用户授权
mysqlmetagrep
搜索元数据
使用Regexp进行数据库搜索
生成用于搜索查询的SQL语句
mysqlprocgrep
搜索进程信息
生成用于搜索的SQL语句
杀死与查询匹配的进程
mysqluc
用于运行MySQL实用程序的命令行客户机
允许持久连接到MySQL服务器
实用程序名称和选项的自动补全
允许使用较短的名称调用命令,例如使用“serverinfo”调用mysqlserverinfo
高可用相关工具(High Availability Operations)
mysqlfailover
在复制拓扑上提供自动故障转移
使用全局事务标识符(GTID,MySQL服务器5.6.5+)
mysqlreplicate
设置复制
从开始,当前,指定的Binary Log位置开始
mysqlrpladmin
管理复制拓扑
允许恢复主机
命令包括elect,failover,gtid,health,start,stop和switchover
mysqlrplcheck
检查复制配置
测试master上的Binary Log记录
mysqlrplms
提供循环多源复制(从服务器连续循环多个主机以存储统一数据集)
使用全局事务标识符(GTID,MySQL Server 5.6.9+)
mysqlrplshow
显示Slave所属的Master
可以递归搜索
将复制拓扑显示为图形或列表
mysqlrplsync
检查复制设置中服务器之间的数据一致性
使用全局事务标识符(GTID)
MySQL 5.5.14+
mysqlslavetrx
跳过Slave上的多个事务。
使用全局事务标识符(GTID)
服务器操作(Server Operations)
mysqlserverclone
启动正在运行的服务器的新实例。
mysqlserverinfo
显示服务器信息
可以在主机上搜索运行的服务器 访问在线或离线服务器
专业操作(Specialized Operations)
mysqlauditadmin
监控审计日志
复制、轮转、配置审计日志
mysqlauditgrep
搜索审计日志
已不同的格式输出
常见错误列表
#1 No module named connector.conversion
ImportError: No module named connector.conversion
问题原因:因为该工具使用 Python 开发,在连接数据库时需要 mysql-connector 库,而在系统中没有安装该库,所以产生该错误。
解决办法:安装 mysql-connector 库:pip install mysql-connector==2.1.4
注意事项:在我们的场景中,最开始从 pip 中安装的是 mysql-connector 2.2.3 版本。当我们执行安装命令后,产生安装失败提示”...... Unable to find Protobuf include directory. ......“错误。解决办法是在网上找到的,需要使用 mysql-connector 2.1.4 版本。
相关文章
「MySQL」- 使用 XtraBackup 备份
「Percona Toolkit」- 安装及介绍
参考文献
MySQL Utilities 1.6 Manual
访问MySQL Utilities的下载页面
Github Source Code
Homepage