可以从一个NDB备份恢复到一个拥有不同数量数据节点的集群。以下两个部分分别讨论目标集群的数据节点数量少于或多于备份源的情况。
如果较大的节点数是较小节点数的偶数倍,则可以恢复到数据节点数比原来更少的集群。在下面的示例中,我们将具有4个数据节点的集群上的备份使用到具有2个数据节点的集群上。
原集群的管理服务器在主机上
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
或者是等价的。请按照正常方式执行备份操作。看到23.5.8.2节"使用NDB集群管理客户端创建备份",以获取有关如何做到这一点的信息。
这里列出了备份在每个数据节点上创建的文件,其中
N
是节点ID和B
为备份ID。备份,
B
-0.N
. data备份,
B
.N
.ctl备份,
B
.N
. log
这些文件在
BackupDataDir
/ /备份——备份
,在每个数据节点上。对于本例的其余部分,我们假设备份ID为1。B
是否可以将所有这些文件稍后复制到新的数据节点(可以在数据节点的本地文件系统上访问它们ndb_restore).将它们全部复制到一个位置是最简单的;我们认为这就是你所做的。
目标集群的管理服务器所在主机
host20
,目标器有两个数据节点,显示了节点id和主机名,来自管理服务器config.ini
上的文件host20
:[ndbd] NodeId=3 hostname=host3 [ndbd] NodeId=5 hostname=host5
每个数据节点进行处理
host3
而且host5
应该从ndbmtd- c host20
——初始
或者等效的,这样新的(目标)集群从干净的数据节点文件系统开始。将两组不同的备份文件复制到每个目标数据节点。对于本例,将原始集群中节点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上。在这两个目标数据节点上,必须从两组备份进行恢复。首先,通过调用将备份从节点2和4恢复到节点3ndb_restore在
host3
如下所示: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_restore在
host5
像这样: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
指定的节点IDndb_restore命令为原备份节点的命令,而不是要恢复到的数据节点的命令。使用本节介绍的方法进行备份时,ndb_restore连接到管理服务器,获取备份恢复到的集群中的数据节点列表。恢复的数据按顺序分布,在执行备份时不需要知道或计算目标集群中的节点数量。
在更改每个节点组的LCP线程或LQH线程总数时,应该从使用创建的备份重新创建模式, mysqldump.
创建数据备份.可以通过调用ndb_mgm客户端
开始备份
命令,就像这样:shell> ndb_mgm -e "START BACKUP 1"
假设备份ID为1。
创建模式的备份。只有在更改每个节点组的LCP线程或LQH线程总数时,才需要执行此步骤。
Shell > mysqldump——no-data——routines——事件——触发器——数据库
重要的一旦创建了
NDB
本地备份使用ndb_mgm,在创建模式备份之前,一定不要做任何模式更改。将备份目录拷贝到新集群。例如,如果要恢复的备份的ID为1,且
BackupDataDir
=/备份/ node_
,则该节点上备份文件的路径为nodeid
/备份/ node_1 /备份/ BACKUP-1
.在这个目录中有三个文件,列在这里:BACKUP-1-0.1.Data
BACKUP-1.1.ctl
BACKUP-1.1.log
您应该将整个目录复制到新节点。
如果需要创建模式文件,请将其复制到SQL节点上可以读取它的位置mysqld.
不要求从特定节点恢复备份。
从刚刚创建的备份中恢复,请执行以下步骤:
恢复模式.
如果您使用。创建单独的架构备份文件, 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
选项,如果需要,使这成为可能。
恢复的数据.这需要为原始集群中的每个数据节点执行一次,每次使用该数据节点的节点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
根据需要选择。重建索引.这些都是被
——disable-indexes
选项。重新创建索引可以避免由于恢复在所有点上不一致而导致的错误。在某些情况下,重新构建索引还可以提高性能。要重建索引,在单个节点上执行以下命令一次:shell> ndb_restore——nodeid=1——backupid=1——BACKUP- path=/backups/node_1/BACKUP/BACKUP-1——rebuild-indexes
如前所述,您可能需要添加
——ndb-connectstring
选项,这ndb_restore可以联系管理服务器。