准备 NDB Cluster 进行复制包括以下步骤:
检查所有 MySQL 服务器的版本兼容性(请参阅 第 21.7.2 节,“NDB Cluster 复制的一般要求”)。
使用以下两条 SQL 语句在具有适当权限的源集群上创建一个复制帐户:
mysqlS> CREATE USER 'replica_user'@'replica_host' -> IDENTIFIED BY 'replica_password'; mysqlS> GRANT REPLICATION SLAVE ON *.* -> TO 'replica_user'@'replica_host';
在前面的语句中,
replica_user
是复制帐户用户名,replica_host
是副本的主机名或 IP 地址,replica_password
是分配给该帐户的密码。例如,要创建一个名为 的副本用户帐户,
myreplica
从名为 的主机登录replica-host
并使用密码53cr37
,请使用以下CREATE USER
和GRANT
语句:mysqlS> CREATE USER 'myreplica'@'replica-host' -> IDENTIFIED BY '53cr37'; mysqlS> GRANT REPLICATION SLAVE ON *.* -> TO 'myreplica'@'replica-host';
出于安全原因,最好为复制帐户使用唯一的用户帐户(不用于任何其他目的)。
设置副本以使用源。使用 mysql客户端,这可以通过以下
CHANGE MASTER TO
语句完成:mysqlR> CHANGE MASTER TO -> MASTER_HOST='source_host', -> MASTER_PORT=source_port, -> MASTER_USER='replica_user', -> MASTER_PASSWORD='replica_password';
在前面的语句中,
source_host
是复制源的主机名或IP地址,source_port
是副本连接到源时使用的端口,是在源replica_user
上为副本设置的用户名 ,是为副本replica_password
设置的密码该用户帐户在上一步中。例如,要告诉副本使用主机名为
rep-source
上一步创建的复制帐户的 MySQL 服务器,请使用以下语句:mysqlR> CHANGE MASTER TO -> MASTER_HOST='rep-source', -> MASTER_PORT=3306, -> MASTER_USER='myreplica', -> MASTER_PASSWORD='53cr37';
有关可与此语句一起使用的选项的完整列表,请参阅第 13.4.2.1 节,“CHANGE MASTER TO 语句”。
要提供复制备份功能,您还需要在开始复制过程之前向
--ndb-connectstring
副本的文件添加一个选项。my.cnf
有关详细信息,请参阅 第 21.7.9 节,“使用 NDB Cluster 复制的 NDB Cluster 备份”。有关可以
my.cnf
为副本设置的其他选项,请参阅 第 16.1.6 节,“复制和二进制日志记录选项和变量”。如果源集群已在使用中,您可以创建源的备份并将其加载到副本上,以减少副本与源同步所需的时间。如果副本也在运行 NDB Cluster,这可以使用 第 21.7.9 节,“使用 NDB Cluster 复制的 NDB Cluster 备份”中描述的备份和恢复过程来完成。
ndb-connectstring=management_host[:port]
如果您没有在副本上使用 NDB Cluster,则可以在源上使用此命令创建备份:
shellS> mysqldump --master-data=1
然后通过将转储文件复制到副本,将生成的数据转储导入副本。在此之后,您可以使用 mysql客户端将转储文件中的数据导入副本数据库,如下所示,其中 是在源上使用mysqldump
dump_file
生成的文件的名称,是要复制的数据库的名称:db_name
shellR> mysql -u root -p db_name < dump_file
有关与mysqldump 一起使用的选项的完整列表 ,请参阅第 4.5.4 节,“mysqldump — 数据库备份程序”。
笔记如果您以这种方式将数据复制到副本,您应该确保副本是使用
--skip-slave-start
命令行上的选项启动的,或者包含skip-slave-start
在副本的my.cnf
文件中以防止它在尝试连接到源之前开始复制所有数据都已加载。数据加载完成后,请按照接下来两节中概述的其他步骤进行操作。确保为每个充当复制源的 MySQL 服务器分配一个唯一的服务器 ID,并使用基于行的格式启用二进制日志记录。(请参阅 第 16.2.1 节,“复制格式”。)此外,我们建议启用
slave_allow_batching
系统变量;从 NDB 7.6.23 开始,如果此变量设置为 ,则会发出警告OFF
。您还应该考虑增加与--ndb-batch-size
和--ndb-blob-write-batch-bytes
选项一起使用的值。所有这些选项都可以在源服务器的my.cnf
文件中设置,或者在启动源 mysqld进程时在命令行上设置。看 第 21.7.6 节,“启动 NDB Cluster 复制(单个复制通道)”,了解更多信息。