Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

19.4.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 8.4\bin\mysqld"

通常,您应该备份整个副本MySQL服务器的数据目录。如果您想在副本服务器失败时恢复数据并继续操作,可以在备份数据时还需要副本服务器的连接元数据存储库和应用程序元数据存储库,以及relay日志文件。这些项目需要在恢复副本服务器的数据后恢复复制。假设用于副本服务器的连接元数据存储库和应用程序元数据存储库的表(见第19.2.4节,“Relay Log and Replication Metadata Repositories”),这在MySQL 8.4中是默认的,这些表将在备份数据目录时一起备份。如果使用文件存储库,您需要单独备份这些文件。relay日志文件需要单独备份,如果它们位于数据目录以外的位置。

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

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