19.4.1.1 使用mysqldump备份副本
使用mysqldump可以创建一个数据库副本,允许您将数据库中的所有数据捕获到一个格式中,以便将信息导入到另一个MySQL Server实例中(请参见第6.5.4节,“mysqldump — A Database Backup Program”)。由于信息的格式是SQL语句,因此文件可以轻松地分布并应用到运行的服务器上,以便在紧急情况下访问数据。然而,如果您的数据集非常大,mysqldump可能不太实用。
考虑使用MySQL Shell dump utilities,这些工具提供了多线程并行dump、文件压缩和进度信息显示,以及云功能,如Oracle Cloud Infrastructure Object Storage流式传输和MySQL HeatWave Service兼容性检查和修改。可以轻松地将dump导入到MySQL Server实例或MySQL HeatWave Service DB System中使用MySQL Shell load dump utilities。MySQL Shell的安装说明可以在这里找到。
使用mysqldump时,您应该在开始dump过程前停止复制,以确保dump包含一致的数据集:
-
停止复制副本的请求处理。您可以使用mysqladmin完全停止复制:
$> mysqladmin stop-replica
或者,您可以只停止复制SQL线程,以暂停事件执行:
$> mysql -e 'STOP REPLICA SQL_THREAD;'
这使得副本继续接收来自源的二进制日志的数据变化事件,并将其存储在中继日志中使用复制接收线程,但是防止副本执行这些事件并改变其数据。在繁忙的复制环境中,允许复制接收线程在备份过程中运行可能会加速重新同步的过程,当您重新启动复制线程时。
-
运行mysqldump来dump您的数据库。您可以dump所有数据库或选择要dump的数据库。例如,dump所有数据库:
$> mysqldump --all-databases > fulldb.dump
-
dump完成后,重新启动复制:
$> mysqladmin start-replica
在上面的示例中,您可能想添加登录凭证(用户名、密码)到命令中,并将过程捆绑到脚本中,以便每天自动运行。
如果您使用这种方法,请确保监控复制过程,以确保备份运行时间不影响副本的能力来跟踪来自源的事件。见第19.1.7.1节,“复制状态检查”。如果副本无法跟踪,您可能需要添加另一个副本并分布备份过程。关于如何配置这种场景的示例,请见第19.4.6节,“将不同数据库复制到不同的副本”。