MySQL 5.7: 把现有的复制组迁移到InnoDB Cluster

MySQL 5.7: 使用组复制(MySQL Group Replication)
MySQL 5.7: 使用MySQL Router实现应用程序的高可用
MySQL 5.7: 把现有的复制组迁移到InnoDB Cluster
MySQL 5.7: 使用PMM监视和管理数据库php

MySQL InnoDB 集群是一堆集合到一块儿工做的产品, 用于提供一个完整的高可用方案. html

复制组不是一个完整的高可用方案, 它只是实现了数据库端的故障转移, 可是并无为应用程序提供一个单一的入口, 本文可结合MySQL 5.7: 使用MySQL Router实现应用程序的高可用 建立一个InnoDB集群建立一个完整的HA方案.mysql

  • 能够使用MySQL Shell来配置MySQL服务器组以建立一个MySQL InnoDB数据库集群.linux

  • 默认为单主模式, 集群中的服务器只有一个能写.sql

  • 余下的服务器做为主服务器的备用.数据库

  • 建立集群至少须要三台机器.ubuntu

  • 客户端应用程序经过MySQL Router链接到主服务器.segmentfault

  • 若是主服务器失败, 集群自动选主, MySQL Router自动把链接路由到新主服务器

  • 高级用于能够配置集群有多主架构

因为前面咱们已经建立了一个复制组.

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+----------------+-------------+--------------+
| group_replication_applier | 255a577c-c68f-11e7-a0a7-00163e0c0288 | 172.18.149.215 |        3306 | ONLINE       |
| group_replication_applier | 77befd8c-c68e-11e7-9623-00163e0af475 | 172.18.149.213 |        3306 | ONLINE       |
| group_replication_applier | a44c7ec7-c68e-11e7-9cf8-00163e0afda9 | 172.18.149.214 |        3306 | ONLINE       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+
3 rows in set (0.00 sec)

如今咱们只须要安装MySQL Router和MySQL Shell

wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb
dpkg -i mysql-apt-config_0.8.9-1_all.deb

查看版本信息

root:~# mysqlrouter --version
MySQL Router v2.1.4 on Linux (64-bit) (GPL community edition)

使用 MySQL Shell 配置集群

登陆

root:~# mysqlsh --uri root@172.18.149.213:3306
Creating a Session to 'root@172.18.149.213:3306'
Enter password:
Your MySQL connection id is 80
Server version: 5.7.20-log MySQL Community Server (GPL)
No default schema selected; type \use <schema> to set one.
MySQL Shell 1.0.10

Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.

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.

Currently in JavaScript mode. Use \sql to switch to SQL mode and execute queries.
mysql-js>

建立集群

mysql-js> var cluster = dba.createCluster('dc', {adoptFromGR: true});

执行成功后会自动建立一个新的数据库: mysql_innodb_cluster_metadata, 用于存放集群的元数据, 该元数据会被MySQL Router用到, 以实现高可用性.

参考资料

dba.createCluster('dc', {adoptFromGR: true}) 的BUG

root:~# mysqlsh --version
mysqlsh   Ver 1.0.10 for Linux on x86_64 - for MySQL 5.7.19 (MySQL Community Server (GPL))

从现有的复制组建立 InnoDB 集群的问题: https://bugs.mysql.com/bug.ph... MySQL Shell 的一个BUG, 降级到 1.0.9 正常.

相关文章
相关标签/搜索