10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

23.4.23.2恢复不同数量的数据节点

可以从一个NDB备份恢复到一个拥有不同数量数据节点的集群。以下两个部分分别讨论目标集群的数据节点数量少于或多于备份源的情况。

23.4.23.2.1恢复节点数少于原节点数

如果较大的节点数是较小节点数的偶数倍,则可以恢复到数据节点数比原来更少的集群。在下面的示例中,我们将具有4个数据节点的集群上的备份使用到具有2个数据节点的集群上。

  1. 原集群的管理服务器在主机上host10.原始集群有四个数据节点,节点id和主机名如下所示,摘自管理服务器的节点id和主机名config.ini文件:

    [ndbd] NodeId=2 HostName=host2 [ndbd] NodeId=4 HostName=host4 [ndbd] NodeId=6 HostName=host6 [ndbd] NodeId=8 HostName=host8

    我们假设每个数据节点最初都是从ndbmtd——ndb-connectstring = host10或者是等价的。

  2. 请按照正常方式执行备份操作。看到23.5.8.2节"使用NDB集群管理客户端创建备份",以获取有关如何做到这一点的信息。

  3. 这里列出了备份在每个数据节点上创建的文件,其中N是节点ID和B为备份ID。

    • 备份,B-0.N. data

    • 备份,BN.ctl

    • 备份,BN. log

    这些文件在BackupDataDir/ /备份——备份B,在每个数据节点上。对于本例的其余部分,我们假设备份ID为1。

    是否可以将所有这些文件稍后复制到新的数据节点(可以在数据节点的本地文件系统上访问它们ndb_restore).将它们全部复制到一个位置是最简单的;我们认为这就是你所做的。

  4. 目标集群的管理服务器所在主机host20,目标器有两个数据节点,显示了节点id和主机名,来自管理服务器config.ini上的文件host20

    [ndbd] NodeId=3 hostname=host3 [ndbd] NodeId=5 hostname=host5

    每个数据节点进行处理host3而且host5应该从ndbmtd- c host20——初始或者等效的,这样新的(目标)集群从干净的数据节点文件系统开始。

  5. 将两组不同的备份文件复制到每个目标数据节点。对于本例,将原始集群中节点2和节点4的备份文件复制到目标集群中的节点3。这些文件列在这里:

    • BACKUP-1-0.2.Data

    • BACKUP-1.2.ctl

    • BACKUP-1.2.log

    • BACKUP-1-0.4.Data

    • BACKUP-1.4.ctl

    • BACKUP-1.4.log

    然后将节点6和节点8的备份文件复制到节点5;这些文件如下表所示:

    • BACKUP-1-0.6.Data

    • BACKUP-1.6.ctl

    • BACKUP-1.6.log

    • BACKUP-1-0.8.Data

    • BACKUP-1.8.ctl

    • BACKUP-1.8.log

    对于本例的其余部分,我们假设各自的备份文件已经保存到该目录中/ BACKUP-1在每个节点3和5上。

  6. 在这两个目标数据节点上,必须从两组备份进行恢复。首先,通过调用将备份从节点2和4恢复到节点3ndb_restorehost3如下所示:

    shell> ndb_restore -c host20——nodeid=2——backupid=1——restore-data——backup-path=/BACKUP-1 shell> ndb_restore -c host20——nodeid=4——backupid=1——restore-data——backup-path=/BACKUP-1

    然后通过调用将备份从节点6和8恢复到节点5ndb_restorehost5像这样:

    shell> ndb_restore -c host20——nodeid=6——backupid=1——restore-data——backup-path=/BACKUP-1 shell> ndb_restore -c host20——nodeid=8——backupid=1——restore-data——backup-path=/BACKUP-1
23.4.23.2.2恢复至比原节点数量更多的节点

指定的节点IDndb_restore命令为原备份节点的命令,而不是要恢复到的数据节点的命令。使用本节介绍的方法进行备份时,ndb_restore连接到管理服务器,获取备份恢复到的集群中的数据节点列表。恢复的数据按顺序分布,在执行备份时不需要知道或计算目标集群中的节点数量。

请注意

在更改每个节点组的LCP线程或LQH线程总数时,应该从使用创建的备份重新创建模式, mysqldump

  1. 创建数据备份.可以通过调用ndb_mgm客户端开始备份命令,就像这样:

    shell> ndb_mgm -e "START BACKUP 1"

    假设备份ID为1。

  2. 创建模式的备份。只有在更改每个节点组的LCP线程或LQH线程总数时,才需要执行此步骤。

    Shell > mysqldump——no-data——routines——事件——触发器——数据库
    重要的

    一旦创建了NDB本地备份使用ndb_mgm,在创建模式备份之前,一定不要做任何模式更改。

  3. 将备份目录拷贝到新集群。例如,如果要恢复的备份的ID为1,且BackupDataDir/备份/ node_nodeid,则该节点上备份文件的路径为/备份/ node_1 /备份/ BACKUP-1.在这个目录中有三个文件,列在这里:

    • BACKUP-1-0.1.Data

    • BACKUP-1.1.ctl

    • BACKUP-1.1.log

    您应该将整个目录复制到新节点。

    如果需要创建模式文件,请将其复制到SQL节点上可以读取它的位置mysqld

不要求从特定节点恢复备份。

从刚刚创建的备份中恢复,请执行以下步骤:

  1. 恢复模式

    • 如果您使用。创建单独的架构备份文件, mysqldump导入此文件mysql客户端,类似于这里显示的内容:

      mysql mysql < myschema.sql

      导入架构文件时,可能需要指定——用户而且——密码选项(以及可能的其他选项)除了显示的内容之外,为了mysql客户端能够连接MySQL服务器。

    • 如果你做需要创建模式文件时,可以使用重新创建模式ndb_restore——restore-meta(简式- m),类似如下所示:

      shell> ndb_restore——nodeid=1——backupid=1——restore-meta——BACKUP- path=/backups/node_1/BACKUP/BACKUP-1

      ndb_restore必须能够联系管理服务器;添加——ndb-connectstring选项,如果需要,使这成为可能。

  2. 恢复的数据.这需要为原始集群中的每个数据节点执行一次,每次使用该数据节点的节点ID。假设最初有4个数据节点,所需的命令集如下所示:

    ndb_restore——nodeid=1——backupid=1——restore-data——BACKUP- path=/backups/node_1/BACKUP/BACKUP-1——disable-indexes ndb_restore——nodeid=2——backupid=1——restore-data——BACKUP- path=/backups/node_2/BACKUP/BACKUP-1——disable-indexes ndb_restore——nodeid=3——backupid=1——restore-data——BACKUP- path=/backups/node_3/BACKUP/BACKUP-1——disable-indexes ndb_restore——nodeid=4——backupid=1——restore-data——BACKUP- path=/backups/node_4/BACKUP/BACKUP-1——disable-indexes

    它们可以并行运行。

    一定要添加——ndb-connectstring根据需要选择。

  3. 重建索引.这些都是被——disable-indexes选项。重新创建索引可以避免由于恢复在所有点上不一致而导致的错误。在某些情况下,重新构建索引还可以提高性能。要重建索引,在单个节点上执行以下命令一次:

    shell> ndb_restore——nodeid=1——backupid=1——BACKUP- path=/backups/node_1/BACKUP/BACKUP-1——rebuild-indexes

    如前所述,您可能需要添加——ndb-connectstring选项,这ndb_restore可以联系管理服务器。