Documentation Home
MySQL 8.0 参考手册  / 第十七章复制  / 17.4 复制解决方案  / 17.4.1 使用复制进行备份  /  16.3.1.2 从副本备份原始数据

16.3.1.2 从副本备份原始数据

为保证所复制文件的完整性,应在副本服务器关闭时备份 MySQL 副本上的原始数据文件。如果 MySQL 服务器仍在运行,后台任务可能仍在更新数据库文件,尤其是那些涉及具有后台进程的存储引擎的任务,例如InnoDB. 使用InnoDB,这些问题应该在崩溃恢复期间得到解决,但由于副本服务器可以在备份过程中关闭而不影响源的执行,因此利用此功能是有意义的。

要关闭服务器并备份文件:

  1. 关闭副本 MySQL 服务器:

    $> mysqladmin shutdown
  2. 复制数据文件。您可以使用任何合适的复制或存档实用程序,包括cptarWinZip。例如,假设数据目录位于当前目录下,您可以按如下方式归档整个目录:

    $> tar cf /tmp/dbbackup.tar ./data
  3. 再次启动 MySQL 服务器。在 Unix 下:

    $> mysqld_safe &

    在 Windows 下:

    C:\> "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld"

通常,您应该备份副本 MySQL 服务器的整个数据目录。如果您希望能够恢复数据并作为副本运行(例如,在副本发生故障时),那么除了副本的数据外,您还应该备份副本状态文件、复制元数据存储库和中继日志文件。恢复副本的数据后,需要这些文件来恢复复制。

如果您丢失了中继日志但仍然有该 relay-log.info文件,您可以检查它以确定复制 SQL 线程在源的二进制日志中执行了多远。然后您可以使用 CHANGE MASTER TOMASTER_LOG_FILE选项 MASTER_LOG_POS告诉副本从该点重新读取二进制日志。这要求二进制日志仍然存在于源服务器上。

如果您的副本正在复制LOAD DATA语句,您还应该备份 SQL_LOAD-*存在于副本用于此目的的目录中的所有文件。副本需要这些文件来恢复任何中断 LOAD DATA操作的复制。这个目录的位置就是 slave_load_tmpdir系统变量的值。如果服务器不是使用该变量集启动的,则目录位置是 tmpdir系统变量的值。