Documentation Home
MySQL 8.0 参考手册  / 第十七章复制  / 17.4 复制解决方案  / 17.4.1 使用复制进行备份  /  17.4.1.1 使用 mysqldump 备份副本

17.4.1.1 使用 mysqldump 备份副本

使用mysqldump创建数据库的副本使您能够以一种格式捕获数据库中的所有数据,该格式使信息能够导入到另一个 MySQL 服务器实例(请参阅 第 4.5.4 节,“mysqldump — 数据库备份程序” ”)。由于信息的格式是SQL语句,当您在紧急情况下需要访问数据时,可以很容易地将文件分发并应用到正在运行的服务器上。但是,如果您的数据集非常大,mysqldump可能不切实际。

小费

考虑使用MySQL Shell 转储实用程序,它提供多线程并行转储、文件压缩和进度信息显示,以及 Oracle Cloud Infrastructure 对象存储流和 MySQL 数据库服务兼容性检查和修改等云功能。使用MySQL Shell 负载转储实用程序可以轻松地将转储导入 MySQL 服务器实例或 MySQL 数据库服务数据库系统。可以在此处找到 MySQL Shell 的安装说明。

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

  1. 停止副本处理请求。您可以使用mysqladmin在副本上完全停止复制 :

    $> mysqladmin stop-slave

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

    $> mysql -e 'STOP SLAVE SQL_THREAD;'
    Or from MySQL 8.0.22:
    $> mysql -e 'STOP REPLICA SQL_THREAD;'

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

  2. 运行mysqldump以转储数据库。您可以转储所有数据库或选择要转储的数据库。例如,要转储所有数据库:

    $> mysqldump --all-databases > fulldb.dump
  3. 转储完成后,再次开始复制:

    $> mysqladmin start-slave

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

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