Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Preparing the NDB Cluster for Replication

25.7.5 NDB 集群准备复制

为 NDB 集群准备复制需要执行以下步骤:

  1. 检查所有 MySQL 服务器的版本兼容性(见Section 25.7.2,“NDB 集群复制的总体要求”)。

  2. 在源集群上创建一个 replication 账户,并使用以下两个 SQL 语句授予相应的权限:

    mysqlS> CREATE USER 'replica_user'@'replica_host'
         -> IDENTIFIED BY 'replica_password';
    
    mysqlS> GRANT REPLICATION SLAVE ON *.*
         -> TO 'replica_user'@'replica_host';

    在前面的语句中,replica_用户是 replication 账户用户名,replica主机是 replica 主机名或 IP 地址,replica密码是为该账户分配的密码。

    例如,要创建一个名为 myreplica 的 replica 用户账户,该账户从主机名为 replica-主机 登录,并使用密码 53cr37,可以使用以下CREATE USERGRANT 语句:

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

    出于安全原因,建议使用一个唯一的用户账户(不用于其他目的)来进行 replication 账户。

  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 语句”

    为了提供复制备份能力,您还需要在副本的 my.cnf 文件中添加一个--ndb-connectstring 选项,以便于在开始复制过程之前。请参阅第 25.7.9 节,“NDB Cluster Backups With NDB Cluster Replication”,了解详细信息。

    在副本的 my.cnf 文件中可以设置的其他选项,请参阅第 19.1.6 节,“Replication and Binary Logging Options and Variables”

  4. 如果源集群已经在使用中,您可以创建源的备份,然后将其加载到副本中,以减少副本与源同步所需的时间。如果副本也运行 NDB Cluster,这可以使用第 25.7.9 节,“NDB Cluster Backups With NDB Cluster Replication” 中描述的备份和恢复过程。

    ndb-connectstring=management_host[:port]

    如果您不是在副本上使用 NDB Cluster,可以使用以下命令在源上创建备份:

    shellS> mysqldump --source-data=1

    然后将生成的数据dump文件复制到副本上。完成后,您可以使用mysql客户端将dump文件中的数据导入副本数据库,如下所示,其中dump_file是使用mysqldump在源上生成的文件名,db_name是要复制的数据库名称:

    shellR> mysql -u root -p db_name < dump_file

    关于mysqldump命令的所有选项,请见第6.5.4节,“mysqldump — 数据库备份程序”

    Note

    如果您将数据复制到副本上,这样做时,请确保在所有数据都加载完成前,停止副本连接到源以开始复制。您可以通过使用--skip-replica-start启动副本来实现这一点。一旦数据加载完成,接着按照下两个部分中的步骤进行操作。

  5. 确保每个 MySQL 服务器作为复制源都被分配了唯一的服务器 ID,并启用二进制日志记录,使用行基于格式。 (请参阅第 19.2.1 节,“Replication Formats”。)此外,我们强烈建议启用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 节,“Starting NDB Cluster Replication (Single Replication Channel)”,获取更多信息。