### 23.7.7 使用两个复制通道进行 NDB 集群复制

[](<>)[](<>)

在更完整的示例场景中，我们设想两个复制通道来提供冗余，从而防止单个复制通道可能出现故障。这需要总共四个复制服务器，源集群上的两个源服务器和副本集群上的两个副本服务器。出于以下讨论的目的，我们假设唯一标识符的分配如下所示：

[](<>)

**表 23.71 文中描述的 NDB Cluster 复制服务器**

| 服务器编号 | 描述 |
| ----- | --- |
| 1 | 源 - 主复制通道 (*小号*) |
| 2 | 源 - 辅助复制通道 (*S'*) |
| 3 | 副本 - 主复制通道 (*R*) |
| 4 | 副本 - 辅助复制通道（*R'*) |

使用两个通道设置复制与设置单个复制通道没有根本不同。首先，[**mysqld**](mysqld.html)必须启动主要和次要复制源服务器的进程，然后是主要和次要副本的进程。复制过程可以通过发出[`开始复制`](start-replica.html)每个副本的声明。此处显示了命令及其需要发出的顺序：

1.  启动主复制源：

    ```
    shellS> mysqld --ndbcluster --server-id=1 \
                   --log-bin &
    ```

2.  启动辅助复制源：

    ```
    shellS'> mysqld --ndbcluster --server-id=2 \
                   --log-bin &
    ```

3.  启动主副本服务器：

    ```
    shellR> mysqld --ndbcluster --server-id=3 \
                   --skip-slave-start &
    ```

4.  启动辅助副本服务器：

    ```
    shellR'> mysqld --ndbcluster --server-id=4 \
                    --skip-slave-start &
    ```

5.  最后，通过执行[`开始复制`](start-replica.html)主副本上的语句，如下所示：

    ```
    mysqlR> START SLAVE;
    ```

    从 MySQL 8.0.22 开始，还可以使用以下语句：

    ```
    mysqlR> START REPLICA;
    ```

    警告

    此时必须启动主通道。仅在主复制通道发生故障时才需要启动辅助复制通道，如中所述[第 23.7.8 节，“使用 NDB Cluster Replication 实现故障转移”](mysql-cluster-replication-failover.html).同时运行多个复制通道可能会导致在副本上创建不需要的重复记录。

    如前所述，不必在副本上启用二进制日志记录。
