Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Backing Up Raw Data from a Replica

19.4.1.2 从副本中备份原始数据

为了保证复制文件的完整性,在副本服务器关闭时备份原始数据文件。如果 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 8.3\bin\mysqld"

通常情况下,您应该备份副本 MySQL 服务器的整个数据目录。如果您想恢复数据并作为副本(例如,在副本失败的情况下),除了数据外,您还需要副本的连接元数据存储库和应用元数据存储库,以及中继日志文件。这些项目是恢复副本数据后恢复复制所需的。假设使用表格存储副本的连接元数据存储库和应用元数据存储库(见 第 19.2.4 节,“中继日志和复制元数据存储库”),这是 MySQL 8.3 的默认设置,这些表将与数据目录一起备份。如果使用文件存储存储库(已弃用),您必须单独备份这些文件。中继日志文件必须单独备份,如果它们位于不同的位置而不是数据目录。

如果您丢失了中继日志,但仍有 relay-log.info 文件,可以检查它以确定复制 SQL 线程在源服务器的二进制日志中的执行位置。然后,您可以使用 CHANGE REPLICATION SOURCE TO 语句,带有 SOURCE_LOG_FILESOURCE_LOG_POS 选项,告诉副本从该点重新读取源服务器的二进制日志。这需要源服务器上的二进制日志仍然存在。

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