为 NDB 集群准备复制包括以下步骤:
-
检查所有 MySQL 服务器的版本兼容性(见 第 25.7.2 节,“NDB 集群复制的一般要求”)。
-
在源集群上创建一个具有适当权限的复制帐户,使用以下两个 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 REPLICATION SOURCE TO
语句:mysqlR> CHANGE REPLICATION SOURCE TO -> SOURCE_HOST='source_host', -> SOURCE_PORT=source_port, -> SOURCE_USER='replica_user', -> SOURCE_PASSWORD='replica_password';
在前面的语句中,
source_host
是复制源的主机名或 IP 地址,source_port
是副本连接到源时使用的端口,replica_user
是在源上设置的副本用户名,replica_password
是在前一步骤中设置的密码。例如,要告诉副本使用主机名为
rep-source
的 MySQL 服务器,并使用在前一步骤中创建的复制帐户,使用以下语句:mysqlR> CHANGE REPLICATION SOURCE TO -> SOURCE_HOST='rep-source', -> SOURCE_PORT=3306, -> SOURCE_USER='myreplica', -> SOURCE_PASSWORD='53cr37';
有关该语句可以使用的完整选项列表,请参阅 第 15.4.2.1 节,“CHANGE MASTER TO 语句”。
要提供复制备份能力,还需要在副本的
my.cnf
文件中添加一个--ndb-connectstring
选项,然后启动复制过程。请参阅 第 25.7.9 节,“NDB 集群备份与 NDB 集群复制”,了解详细信息。有关在
my.cnf
文件中可以设置的其他选项,请参阅 第 19.1.6 节,“复制和二进制日志选项和变量”。 -
如果源集群已经在使用,可以创建源的备份,并将其加载到副本上,以减少副本与源同步所需的时间。如果副本也运行 NDB 集群,可以使用 第 25.7.9 节,“NDB 集群备份与 NDB 集群复制” 中描述的备份和还原过程。
ndb-connectstring=management_host[:port]
如果您 不 使用 NDB 集群在副本上,可以使用以下命令在源上创建备份:
shellS> mysqldump --source-data=1
然后,将生成的数据转储文件复制到副本上。然后,可以使用 mysql 客户端将数据从转储文件导入到副本数据库中,如下所示,其中
dump_file
是使用 mysqldump 在源上生成的文件名,db_name
是要复制的数据库的名称:shellR> mysql -u root -p db_name < dump_file
要查看与mysqldump一起使用的所有选项,请参阅第 6.5.4 节,“mysqldump — 数据库备份程序”。
Note如果您以这种方式将数据复制到副本中,请确保在加载所有数据之前停止副本尝试连接到源以开始复制。您可以通过使用
--skip-replica-start
启动副本来实现这一点。一旦数据加载完成,请按照下两节中的附加步骤进行操作。 -
确保每个充当复制源的 MySQL 服务器都分配了唯一的服务器 ID,并启用了基于行的二进制日志记录格式。(见第 19.2.1 节,“复制格式”。)此外,我们强烈建议启用
replica_allow_batching
系统变量(默认值)。使用
--ndb-replica-batch-size
设置副本上的写批处理大小,而不是--ndb-batch-size,并使用--ndb-replica-blob-write-batch-bytes
而不是--ndb-blob-write-batch-bytes来确定复制应用程序写入 blob 数据时使用的批处理大小。所有这些选项都可以在源服务器的my.cnf文件中设置,也可以在启动源mysqld进程时在命令行中设置。请参阅第 25.7.6 节,“启动 NDB 集群复制(单个复制通道)”,以获取更多信息。