58. MySQL高可用之 MGR 实战
目录
对一个企业级系统来说,数据库是非常核心的组成部分,数据库的可用性尤为重要。因此,数据库架构在设计时必须考虑足够的高可用,才可以确保业务的连续性,不会因为故障而导致业务中断。在高可用这一章,我们一起来学习一套时髦的 MySQL 高可用架构:3 节点 MGR+3 节点 ProxySQL+3 节点 Consul
1. 一套时髦的高可用架构
提起 MySQL 的高可用,大家都会想到 MHA、MMM、PXC、MGR,特别是 MGR,近几年成为新一代网红,也是 MySQL 官方主推的一套高可用方案。在 MGR 的基础上,结合一些成熟的开源软件,可以组合出几乎满足所有业务场景的高可用方案。
在这里介绍一套时髦的高可用架构:3 节点 MGR+3 节点 ProxySQL+3 节点 Consul
该架构主要分为三层:
- Consul:dns 解析、服务发现、健康检查;
- ProxySQL:负载均衡、读写分离、故障发现;
- MGR:单主模式、故障转移、强一致性。
2. MGR
下面从实战的角度一步步搭建 MGR 环境。
2.1 基本环境
MySQL-1 | MySQL-2 | MySQL-3 | |
---|---|---|---|
MySQL 版本 | MySQL 5.7.30 | MySQL 5.7.30 | MySQL 5.7.30 |
操作系统 | CentOS 7.8 | CentOS 7.8 | CentOS 7.8 |
服务器 IP | 192.168.0.1 | 192.168.0.2 | 192.168.0.3 |
端口 | 对外服务端口-3066 MGR 通讯端口-33061 |
对外服务端口-3066 MGR 通讯端口-33061 |
对外服务端口-3066 MGR 通讯端口-33061 |
服务器配置 | 2c4g | 2c4g | 2c4g |
2.2 安装配置
1. 安装插件
--安装 mgr 插件 INSTALL PLUGIN group_replication SONAME 'group_replication.so'; --检查 show plugins
2. 配置 hosts
vi /etc/hosts 192.168.0.1 mysql-1 192.168.0.2 mysql-2 192.168.0.3 mysql-3
3. 修改 auto.cnf
如果三台 MySQL 目录的 server-uuid 一致,需进行修改。
vi /mysql/data/auto.cnf --主库的 server-uuid 的末尾建议设置成 0001,依次类推,这样方便识别 [auto] server-uuid=c734397b-3b0a-11e8-add1-fa163e8e0001
4. 配置 my.cnf
#Group Replication binlog_checksum = NONE transaction_write_set_extraction = XXHASH64 slave_preserve_commit_order = true loose-group_replication_group_name = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' loose-group_replication_start_on_boot = off loose-group_replication_local_address = '192.168.0.1:33061' loose-group_replication_group_seeds ='192.168.0.2:33061, 192.168.0.3:33061, 192.168.0.1:33061' loose-group_replication_bootstrap_group = off # single primary loose-group_replication_single_primary_mode = on # multi primary #loose-group_replication_single_primary_mode = off #loose-group_replication_enforce_update_everywhere_checks=true
5. 启动 MGR-主库
--配置复制用户 set sql_log_bin=off; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY '123456'; set sql_log_bin=on; --建立 channel CHANGE MASTER TO MASTER_USER='repl_user', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery'; --第一个节点启动时,需要设置 bootstrap_group SET GLOBAL group_replication_bootstrap_group = ON; --启动 MGR START GROUP_REPLICATION; --取消 bootstrap_group SET GLOBAL group_replication_bootstrap_group = OFF; --查看当前 MGR 成员信息 SELECT * FROM performance_schema.replication_group_members;
6. 启动 MGR-从库
--配置复制用户 set sql_log_bin=off; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY '123456'; set sql_log_bin=on; --建立 channel CHANGE MASTER TO MASTER_USER='repl_user', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery'; --启动 MGR START GROUP_REPLICATION;
7. 查看 MGR
--查看当前 MGR 成员信息 SELECT * FROM performance_schema.replication_group_members; --查看只读参数 show variables like '%read_only%';
2.3 基础维护
1. 启动 MGR
START GROUP_REPLICATION;
2. 停止 MGR
STOP GROUP_REPLICATION;
3. 小结
本小节主要介绍了当前主流的高可用架构:3 节点 MGR+3 节点 ProxySQL+3 节点 Consul,以及从实战角度介绍如何搭建 MGR 环境。
MGR 在 MySQL 高可用领域,属于新一代网红,也是 MySQL 官方主推的高可用方案,掌握 MGR 这门技术已经变得越来越重要。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » 58. MySQL高可用之 MGR 实战
码云笔记 » 58. MySQL高可用之 MGR 实战