使用 mysqldump 创建数据库副本使您能够以一种允许将信息导入 MySQL 服务器的另一个实例的格式捕获数据库中的所有数据(请参阅 第 6.5.4 节“mysqldump - 数据库备份程序”)。因为信息的格式是 SQL 语句,所以如果在紧急情况下需要访问数据,可以轻松地分发文件并将其应用于正在运行的服务器。但是,如果您的数据集大小非常大,则 mysqldump 可能不切实际。
考虑使用 MySQL Shell 转储实用程序,它提供多线程并行转储、文件压缩和进度信息显示,以及云功能,如 Oracle 云基础设施对象存储流式传输,以及 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 节,“将不同的数据库复制到不同的副本”。