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