16.3.1.1 使用 mysqldump 备份副本

使用mysqldump创建数据库的副本可以使您以一种格式捕获数据库中的所有数据,该格式可以将信息导入到另一个 MySQL Server 实例中(请参见第 4.5.4 节“ mysqldump-数据库备份程序”)。由于信息的格式为 SQL 语句,因此在需要紧急访问数据时,可以轻松地将该文件分发并应用于正在运行的服务器。但是,如果数据集的大小很大,则mysqldump可能不切实际。

使用mysqldump时,应在开始转储过程之前停止副本上的复制,以确保转储包含一致的数据集:

  • 停止副本处理请求。您可以使用mysqladmin完全停止对副本的复制:
shell> mysqladmin stop-slave

或者,您可以仅停止复制 SQL 线程以暂停事件执行:

shell> mysql -e 'STOP SLAVE SQL_THREAD;'

这使副本可以 continue 从源的二进制日志接收数据更改事件,并使用 I/O 线程将它们存储在中继日志中,但是可以防止副本执行这些事件并更改其数据。在繁忙的复制环境中,允许 I/O 线程在备份期间运行可能会在重新启动复制 SQL 线程时加快追赶过程。

  • 运行mysqldump以转储数据库。您可以转储所有数据库,也可以选择要转储的数据库。例如,要转储所有数据库:
shell> mysqldump --all-databases > fulldb.dump
  • 转储完成后,再次启动副本操作:
shell> mysqladmin start-slave

在前面的示例中,您可能希望将登录凭据(用户名,密码)添加到命令中,并将该过程 Binding 到一个脚本中,该脚本可以每天自动运行。

如果使用此方法,请确保监视复制过程,以确保运行备份所花费的时间不会影响副本保持跟上源事件的能力。参见第 16.1.7.1 节“检查复制状态”。如果副本无法跟上,您可能要添加另一个副本并分发备份过程。有关如何配置此方案的示例,请参见第 16.3.5 节“将不同的数据库复制到不同的副本”