本节讨论使用NDB群集复制从它们中备份和还原。我们假设Replication Server已经配置为先前已被配置(参见第21.6.5节“准备NDB集群进行复制”,以及紧接着的部分)。完成此操作,备份的过程然后从中恢复如下:
有两种不同的方法可以启动备份。
方法A.此方法要求在开始复制过程之前先前在源服务器上启用群集备份过程。这可以通过包括以下行
[mysql_cluster]
章节my.cnf文件
, 在哪里Management_Host.
是IP地址或主机名NDB.
源集群的管理服务器,以及港口
是管理服务器的端口号:ndb-connectstring =Management_Host.[:港口]
笔记仅当不使用默认端口(1186)时,才需要指定端口号。看第21.2.3节“NDB集群的初始配置”,有关NDB集群中端口和端口分配的更多信息。
在这种情况下,可以通过在Replication Source上执行此语句来启动备份:
壳S.> ndb_mgm -e“开始备份”
方法B.如果是
我.CNF.
文件未指定在哪里找到管理主机,可以通过将此信息传递给备份过程NDB.
管理客户作为其中的一部分开始备份
命令。这可以如这里所示完成,在哪里Management_Host.
和港口
是管理服务器的主机名和端口号:壳S.> ndb_mgm.Management_Host.:港口- “开始备份”
在我们的场景中如前所述(见第21.6.5节“准备NDB集群进行复制”),这将执行如下:
壳S.> ndb_mgm代表源:1186 -e“开始备份”
将群集备份文件复制到正在进行的副本。每个系统运行NDBD.源群集的进程有位于它上的群集备份文件,全部必须将这些文件复制到副本以确保成功恢复。只要MySQL和NDB二进制文件在该目录中拥有读取权限,就可以将备份文件复制到计算机上的任何目录中。在这种情况下,我们假设这些文件已被复制到目录中
/ var /备份/备份-1
。虽然没有必要副本群集具有相同数量的NDBD.进程(数据节点)作为源,强烈建议这个数字是相同的。它是必要的是副本开始
- skip-slave-start
选项,以防止重新启动复制过程。在源群集上的副本集群上创建任何数据库,并将复制。
使用此语句重置副本群集mysql.客户:
mysql.R.>重置奴隶;
您现在可以使用副本在副本上开始群集恢复过程ndb_restore.依次为每个备份文件命令。对于第一个,有必要包括
-M.
恢复群集元数据的选项,如下所示:壳R.> ndb_restore -c.replica_host.:港口-N节点ID.\ -b.备份ID.-先生谜语
谜语
是备份文件已放置在副本上的目录的路径。为了ndb_restore.对应于剩余备份文件的命令,-M.
选项应该是不是使用。用于从具有四个数据节点的源群集还原(如图所示)第21.6节“NDB群集复制”)备份文件已复制到目录
/ var /备份/备份-1
,在副本上执行的正确命令序列可能如下所示:壳R.> ndb_restore -c -c-host:1186-n 2 -b 1-m \ -r ./var/backups/backup-1 shellR.> ndb_restore -c replica-host:1186-n 3 -b 1 \ -r ./var/backups/backup-1 shellR.> ndb_restore -c -c-host:1186-n 4 -b 1 \ -r ./var/backups/backup-1 shellR.> ndb_restore -c副本 - 主机:1186-n 5 -b 1 -e \ -r ./var/backups/backup-1
重要的这
-e.
(或者- restore-epoch.
)选项在最终调用时ndb_restore.在此示例中,需要确保将时期写入副本mysql.ndb_apply_status.
桌子。如果没有此信息,则副本无法与源正确同步。(看第21.4.24节“ndb_restore - 恢复NDB群集备份”。)现在您需要获得最新的时代
ndb_apply_status.
表上的表格(如讨论的)第21.6.8节“使用NDB群集复制实施故障转移”):mysql.R.>从mysql.ndb_apply_status选择@latest:= max(epoch);
使用
@最新的
作为上一步中获得的epoch值,您可以获得正确的起始位置@POS.
在正确的二进制日志文件中@文件
来自mysql.ndb_binlog_index.
使用此处显示的查询的源上的表:mysql.S.>选择 - > @file:= substring_index(文件,'/',-1), - > @pos:= position - >来自mysql.ndb_binlog_index - >其中epoch> = @latest - >按epoch asc限制1的顺序;
如果目前没有复制流量,则可以通过运行来获取此信息
显示主状态
在源并使用所示的值位置
名称具有后缀的文件的输出列,其中所有文件的最大值文件
柱子。在这种情况下,您必须确定它是哪个文件并手动在下一步中提供名称,也必须使用脚本解析输出。使用上一步中获得的值,您现在可以发出适当的
改变大师
副本中的声明mysql.客户:mysql.R.>更改大师到 - > master_log_file ='@ file', - > master_log_pos = @ pos;
现在,副本了解二进制日志文件从源开始读取数据的点,可以使副本与此语句开始复制:
mysql.R.>开始奴隶;
要在第二复制通道上执行备份和还原,因此只需要重复这些步骤,替换辅助源和副本的主源和副本的ID,适当地,运行上述语句在他们。
有关从备份执行群集备份和还原群集的其他信息,请参阅第21.5.8节“NDB集群的在线备份”。