10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美版)- 41.1 mb
PDF (A4)- 41.2 mb
PDF (RPM)- 39.8 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.6 mb
HTML下载(RPM)- 8.1 mb
手册页(TGZ)- 260.5 kb
手册页(Zip)- 371.7 kb
信息(Gzip)- 3.9 mb
信息(邮政编码)- 3.9 mb
本手册节选

MySQL 8.0参考手册// NDB集群备份与NDB集群复制

23.6.9带NDB集群复制的NDB集群备份

本节讨论使用NDB集群复制进行备份和恢复。我们假设复制服务器已经按照前面介绍的方式进行了配置(参见第23.6.5节“准备NDB集群进行复制”,以及接下来的部分)。这样做之后,进行备份并从中恢复的过程如下:

  1. 启动备份有两种不同的方法。

    • 一个方法。此方法要求在启动复制过程之前,源服务器上先前已启用集群备份进程。这可以通过在a中包含以下行来实现(mysql_cluster)节中my.cnf文件,在那里management_host的IP地址或主机名是NDB源集群的管理服务器,以及港口是管理服务器的端口号:

      ndb-connectstring =management_host[:港口
      请注意

      只有当默认端口(1186)未被使用时,才需要指定端口号。看到第23.2.3节“NDB集群的初始配置”,以获取有关NDB集群中端口和端口分配的更多信息。

      此时,可以在复制源上执行以下语句启动备份:

      壳牌年代> ndb_mgm -e "START BACKUP"
    • 方法B。如果my.cnf文件没有指定在哪里找到管理主机,您可以通过将此信息传递给NDB的一部分管理客户端开始备份命令。这可以按如下所示完成,其中management_host港口管理服务器的主机名和端口号:

      壳牌年代> ndb_mgmmanagement_host港口-e "START BACKUP"

      在我们前面概述的场景中(参见第23.6.5节“准备NDB集群进行复制”),这将执行如下:

      壳牌年代> ndb_mgm rep-source:1186 -e "START BACKUP"
  2. 将集群备份文件复制到正在联机的副本上。每个系统运行一个ndbd源集群的进程上有集群备份文件,并且所有必须将这些文件中的任何一个复制到副本,以确保恢复成功。备份文件可以复制到副本管理主机所在的计算机上的任何目录中,只要MySQL和NDB二进制文件在该目录中具有读权限。在本例中,我们假设这些文件已被复制到目录中/var/BACKUPS/BACKUP-1

    而副本集群不一定要有相同数量的ndbd进程(数据节点)作为源,强烈建议此数字相同。它必须在副本服务器启动时阻止复制进程启动。您可以通过使用——skip-slave-start选项,通过包含skip-slave-start在复制品中my.cnf文件,或从MySQL 8.0.24设置skip_slave_start系统变量。

  3. 在复制集群上创建源集群上存在且要复制的任何数据库。

    重要的

    一个创建数据库(或创建模式)语句必须在复制集群的每个SQL节点上执行。

  4. 类中的此语句重置复制集群mysql客户:

    mysqlR>复位slave;或者从MySQL 8.0.22: MySQLR>重置副本;
  5. 启动副本上的集群恢复过程ndb_restore为每个备份文件依次执行命令。对于其中的第一个,必须包含- m选项恢复集群元数据,如下所示:

    壳牌R> ndb_restore -creplica_host港口- n节点编号\ - bbackup-id- m - rdir

    dir在副本上放置备份文件的目录的路径。为ndb_restore剩下的备份文件对应的命令- m选择应被使用。

    用于从具有四个数据节点的源集群进行恢复(如图第23.6节,“NDB集群复制”),其中备份文件已拷贝到该目录/var/BACKUPS/BACKUP-1,在副本上执行的正确命令顺序可能如下所示:

    壳牌R> ndb_restore -c replica-host:1186 -n 2 -b 1 -m \ -r ./var/BACKUPS/BACKUP-1 shellR> ndb_restore -c replica-host:1186 \ -r ./var/BACKUPS/BACKUP-1 shellR> ndb_restore -c replica-host:1186 -n 4 -b 1 \ -r ./var/BACKUPS/BACKUP-1 shellR> ndb_restore -c replica-host:1186 -n 5 -b 1 -e \ -r ./var/BACKUPS/BACKUP-1
    重要的

    - e(或——restore-epoch)选项的最后调用ndb_restore在本例中,需要确保将epoch写入副本mysql.ndb_apply_status表格如果没有这些信息,副本将无法与源正常同步。(见第23.4.23节,“ndb_restore—恢复NDB集群备份”.)

  6. 中获取最近的历元ndb_apply_status表上的副本(如第23.6.8节“使用NDB集群复制实现故障切换”):

    mysqlRSELECT @latest:=MAX(epoch) FROM mysql.ndb_apply_status;
  7. 使用@latest根据上一步得到的epoch值,可以得到正确的起始位置@pos在正确的二进制日志文件中@filemysql.ndb_binlog_index使用如下所示的查询查询源的表:

    mysql年代SELECT -> @file:=SUBSTRING_INDEX(File, '/', -1), -> @pos:=Position -> FROM mysqlndb_binlog_index -> WHERE epoch >= @latest ->

    如果当前没有复制流量,您可以通过运行显示主人状态中显示的值位置中显示的所有文件中,文件名后缀值最大的文件的输出列文件列。在这种情况下,您必须确定这是哪个文件,并在下一步中手动或通过脚本解析输出来提供名称。

  8. 使用前一步中获得的值,现在可以发出适当的将复制源更改为语句(from MySQL 8.0.23)或将主机更改为语句(在MySQL 8.0.23之前)mysql客户:

    mysqlR-> MASTER_LOG_FILE='@file', -> MASTER_LOG_POS=@pos;或者从MySQL 8.0.23: MySQLR-> SOURCE_LOG_FILE='@file', -> SOURCE_LOG_POS=@pos;
  9. 既然副本知道从哪个二进制日志文件的哪一点开始从源读取数据,你可以使用下面的语句让副本开始复制:

    mysqlR>启动slave;或者从MySQL 8.0.22: MySQLR>启动副本;

要在第二个复制通道上执行备份和恢复,只需要重复这些步骤,将辅助源和副本的主机名和id替换为主源和副本服务器的主机名和id,并在其上运行上述语句。

有关执行群集备份和从备份恢复群集的其他信息,请参见第23.5.8节“NDB集群在线备份”