上节介绍的MySQLDUMP虽然能够实现很多数据逻辑复制场景,但它的应用也存在诸多限制。为了提高转储的速度和效率,本节将介绍MySQL社区版本自带的MySQLPUMP客户端实用程序,不用额外安装和配置即可使用。
MySQLPUMP软件介绍
MySQLPUMP概述
MySQLPUMP是在MySQL 5.7版本引入的,它与MySQLDUMP不存在包含与被包含的关系,但可将其视为MySQLDUMP在功能和特性上的扩展或衍生。与MySQLDUMP类似,MySQLPUMP客户端实用程序也可以用于执行逻辑备份,在用法上也与MySQLDUMP的SQL格式一致。上节节介绍的MySQLDUMP其实存在诸多限制,其既不支持多线程并行导出,也不支持转储文件压缩,同时还不支持对数据库各类对象的过滤。但这类场景和需求,在用户的日常工作中非常常见。幸运的是,MySQL官方提供的MySQLPUMP程序都具备这些特性,这对前者形成了很好的补充。
同样,MySQLPUMP章节的所有案例和场景,默认都是基于非GTID模式的MySQL环境。若用户环境是GTID模式,那么在指定“--all-databases”选项对实例进行全局转储时,建议启用“--set-gtid-purged”选项,以获得InnoDB表数据一致性备份开始前的二进制日志的起始位置;对于未显示使用“--all-databases”选项的所有其他类型备份,必须显式选择启用“--set-gtid-purged=ON”或禁用“--set-gtid-purged=OFF”选项,不然转储将会失败。
MySQLPUMP的功能和特性
MySQLPUMP实用程序包含但不限于下列功能或特性。
·可以并行处理数据库或数据库内的对象,以加快转储过程。
·可以更好更细地控制要转储的数据库或数据库对象(如表、触发器、存储过程、存储函数、数据库账户等)。
·将数据库账户转储为账户管理语句(CREATE USER、GRANT),而不是将其插入mysql系统数据库。
·程序本身支持压缩转储。
·进度指示器(估计值)。
·对于转储文件的重新加载,可以在插入行数据之后再为InnoDB表创建二级索引,以提高加载效率。
MySQLPUMP限制
MySQLPUMP包含但不限于以下限制。
·默认情况下,MySQLPUMP不会转储information_schema、performance_schema、ndbinfo或sys等系统库。
·MySQLPUMP不会转储InnoDB创建表空间语句。
·MySQLPUMP使用CREATE USER和GRANT语句以逻辑形式转储数据库账户。因此,mysql系统数据库的转储在默认情况下不包括用户定义的授权表。
MySQLPUMP并行处理
并行转储