文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  准备 NDB 集群进行复制

25.7.5 准备 NDB 集群进行复制

准备 NDB 集群进行复制包括以下步骤:

  1. 检查所有 MySQL 服务器的版本兼容性(请参阅 第 25.7.2 节 “NDB 集群复制的一般要求”)。

  2. 使用以下两个 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 USERGRANT 语句:

    mysqlS> CREATE USER 'myreplica'@'replica-host'
         -> IDENTIFIED BY '53cr37';
    
    mysqlS> GRANT REPLICATION SLAVE ON *.*
         -> TO 'myreplica'@'replica-host';

    出于安全原因,最好为复制帐户使用唯一的用户帐户(不用于任何其他目的)。

  3. 将副本设置为使用源。可以使用 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.2 节 “CHANGE REPLICATION SOURCE TO 语句”

    要提供复制备份功能,还需要在开始复制过程之前,将 --ndb-connectstring 选项添加到副本的 my.cnf 文件中。有关详细信息,请参阅 第 25.7.9 节 “使用 NDB 集群复制进行 NDB 集群备份”

    有关可以在 my.cnf 中为副本设置的其他选项,请参阅 第 19.1.6 节 “复制和二进制日志记录选项和变量”

  4. 如果源集群已在使用中,则可以创建源的备份并将其加载到副本上,以减少副本与源同步所需的时间。如果副本也在运行 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 — 数据库备份程序”

    注意

    如果以这种方式将数据复制到副本,请确保在加载所有数据之前,阻止副本尝试连接到源以开始复制。您可以通过使用 --skip-replica-start 启动副本,来做到这一点。数据加载完成后,请按照接下来的两节中概述的其他步骤进行操作。

  5. 确保充当复制源的每个 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 集群复制(单个复制通道)”