MySQL 5.7 使用组复制部署InnoDB集群

采用组复制部署InnoDB集群
如果您有一个现有的组复制部署,并且希望使用它来创建一个集群,请将adoptFromGR选项传递给dba.createCluster()函数。创建的InnoDB集 群匹配复制组是单主还是多主。这意味着不能将multiPrimary选项与adoptFromGR选项结合使用。

组复制成员可能包含MyISAM表。将所有这样的表转换为InnoDB,然后再将组纳入InnoDB集群。

我这里已经存在组复制了

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 07542900-d3b4-11ef-a088-005056a390e6 | mysqlcs     |        3308 | ONLINE       |
| group_replication_applier | f81625c0-d3b3-11ef-9c8d-005056a390e6 | mysqlcs     |        3306 | ONLINE       |
| group_replication_applier | ffc6ff15-d3b3-11ef-9e2d-005056a390e6 | mysqlcs     |        3307 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.01 sec)

要采用已有的组复制组,请使用MySQL Shell连接到组成员。使用dba.createCluster()创建一个集群,传入adoptFromGR选项。例如:

[root@mysqlcs ~]# mysqlsh --log-level=DEBUG3 root@localhost
Please provide the password for 'root@localhost': ******
Save password for 'root@localhost'? [Y]es/[N]o/Ne[v]er (default No):
MySQL Shell 8.0.41

Copyright (c) 2016, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.
Creating a session to 'root@localhost'
Fetching schema names for auto-completion... Press ^C to stop.
Your MySQL connection id is 94 (X protocol)
Server version: 5.7.26-log Source distribution
No default schema selected; type \use  to set one.


 MySQL  localhost:33060+  JS > var cluster = dba.createCluster('prodCluster', {adoptFromGR: true})
WARNING: Support for AdminAPI operations in MySQL version 5.7 is deprecated and will be removed in a future release of MySQL  Shell
A new InnoDB Cluster will be created based on the existing replication group on instance 'mysqlcs:3306'.

Creating InnoDB Cluster 'prodCluster' on 'mysqlcs:3306'...

Adding Seed Instance...
Adding Instance 'mysqlcs:3308'...
Adding Instance 'mysqlcs:3306'...
Adding Instance 'mysqlcs:3307'...
Resetting distributed recovery credentials across the cluster...
WARNING: Instance 'mysqlcs:3308' cannot persist configuration since MySQL version 5.7.26 does not support the SET PERSIST  command (MySQL version >= 8.0.11 required). Please use the dba.configureLocalInstance() command locally to persist the  changes.
WARNING: Instance 'mysqlcs:3306' cannot persist configuration since MySQL version 5.7.26 does not support the SET PERSIST  command (MySQL version >= 8.0.11 required). Please use the dba.configureLocalInstance() command locally to persist the  changes.
WARNING: Instance 'mysqlcs:3307' cannot persist configuration since MySQL version 5.7.26 does not support the SET PERSIST  command (MySQL version >= 8.0.11 required). Please use the dba.configureLocalInstance() command locally to persist the  changes.
Cluster successfully created based on existing replication group.

连接并对其发出dba.createCluster()的组复制成员用作创建组的种子实例。


 MySQL  localhost:33060+  JS > cluster.status()
WARNING: Support for AdminAPI operations in MySQL version 5.7 is deprecated and will be removed in a future release of MySQL  Shell
{
    "clusterName": "prodCluster",
    "defaultReplicaSet": {
        "name": "default",
        "primary": "mysqlcs:3306",
        "ssl": "DISABLED",
        "status": "OK",
        "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",
        "topology": {
            "mysqlcs:3306": {
                "address": "mysqlcs:3306",
                "memberRole": "PRIMARY",
                "mode": "R/W",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE",
                "version": "5.7.26"
            },
            "mysqlcs:3307": {
                "address": "mysqlcs:3307",
                "memberRole": "SECONDARY",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE",
                "version": "5.7.26"
            },
            "mysqlcs:3308": {
                "address": "mysqlcs:3308",
                "memberRole": "SECONDARY",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE",
                "version": "5.7.26"
            }
        },
        "topologyMode": "Single-Primary"
    },
    "groupInformationSourceMember": "mysqlcs:3306"
}
 MySQL  localhost:33060+  JS >


 MySQL  localhost:33060+  JS > cluster.describe();
WARNING: Support for AdminAPI operations in MySQL version 5.7 is deprecated and will be removed in a future release of MySQL  Shell
{
    "clusterName": "prodCluster",
    "defaultReplicaSet": {
        "name": "default",
        "topology": [
            {
                "address": "mysqlcs:3308",
                "label": "mysqlcs:3308",
                "role": "HA"
            },
            {
                "address": "mysqlcs:3306",
                "label": "mysqlcs:3306",
                "role": "HA"
            },
            {
                "address": "mysqlcs:3307",
                "label": "mysqlcs:3307",
                "role": "HA"
            }
        ],
        "topologyMode": "Single-Primary"
    }
}
 MySQL  localhost:33060+  JS >

发表评论

电子邮件地址不会被公开。