欢迎光临
我们一直在努力

Linux-MGR单主集群部署

1.MGR 是什么?

它把多个独立的 MySQL 实例,组成了一个能够自动协调、强一致性、高可用的数据库集群。

2.MGR 的两种模式

MGR模式

模式 特点 使用场景
单主模式 同一时间一个主节点可读写,其它为只读备用节点,自动故障转移 生产环境首选
多主模式 所有节点均可读写,且自动同步 需要多点写入的特定场景

3.MGR优点

MGR优点

1.强一致性

基本无数据丢失风险

2.高可用与自动化

自动故障检测与主节点选举

3.原生集成

MySQL 官方插件

4.拓展灵活

动态调整集群规模

4.MGR使用的约束与要求

MGR 的约束与要求

1.版本要求

MySQL 5.7.17+版本

2.存储引擎 必须使用InnoDB
3.网络要求 延迟低,稳定
4.配置要求 需启用GTID
5.多主模式限制 不支持级联外键

5.实验环境规划

实验环境准备

主机名 IP 端口 系统 MySQL版本
mysql-node1 192.168.189.139 3306\\33060\\33061 Centos9 8.0.44
mysql-node2 192.168.189.142
mysql-node3 192.168.189.143

数据库默认端口3306

MySQL X Protoco默认端口33060

MySQL Group Replication组通信端口33061

6.实验前置准备(所有主机都执行)

6.1关闭防火墙

systemctl disable –now firewalld

sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

6.2本地DNS域名解析-/etc/hosts

vim /etc/hosts

6.3安装MySQL

Linux-安装MySQL-CSDN博客(选择Centos9 MySQL8.0.44)

dnf install -y https://repo.mysql.com//mysql84-community-release-el9-2.noarch.rpm
dnf config-manager –disable mysql-8.4-lts-community
dnf config-manager –disable mysql-tools-8.4-lts-community
dnf config-manager –enable mysql80-community
dnf config-manager –enable mysql-tools-community
dnf install -y mysql-community-server
systemctl enable –now mysqld

6.4初始化MySQL

过滤初始密码

grep 'password' /var/log/mysqld.log

修改MySQL密码

mysqladmin -uroot -p"临时密码" password "新密码"

登录MySQL

mysql -uroot -p"新密码"

7.创建第一个实例-mysql-node1

基本思路

mysql-node1

1.修改配置MySQL配置文件-/etc/my.cnf

2.创建复制用户

3.配置复制用户凭证与信道(如果节点故障恢复后,可以用信道同步数据)

4.启动复制组(首次需使用集群创建命令,其他节点不用)

5.验证是否成功SELECT * FROM performance_schema.replication_group_members;

mysql-node其他节点

1.与上面步骤相同

2.到第4步可以直接加入复制组,不需要使用集群创建命令

3.验证是否成功SELECT * FROM performance_schema.replication_group_members;

7.1配置参数-/etc/my.cnf(MySQL配置文件)

vim /etc/my.cnf
#关闭其他存储引擎
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
#启动GTID
server-id=1
gtid_mode=ON
enforce_gtid_consistency=ON
#配置MGR
plugin_load_add='group_replication.so' #加载MGR插件
group_replication_group_name="71397dad-e092-11f0-bb1f-000c29ba195e" #集群UUID
group_replication_start_on_boot=off #开机不自启
group_replication_local_address= "mysql-node1:33061" #本节点通信地址
group_replication_group_seeds= "mysql-node1:33061,mysql-node2:33061,mysql-node3:33061" #集群成员
group_replication_bootstrap_group=off #不自动引导集群
~

7.2创建复制用户

7.2.0登录MySQL

mysql -uroot -p'Root@123'

7.2.1删除所有binlog日志

RESET MASTER;

7.2.2暂时关闭binlog日志

SET SQL_LOG_BIN=0;

7.2.3创建配置用户-jack

CREATE USER jack@'%' IDENTIFIED WITH mysql_native_password BY 'Jack@123';

7.2.4授予配置用户权限

权限用途

REPLICATION SLAVE 主从复制
CONNECTION_ADMIN 连接管理
BACKUP_ADMIN 备份管理
GROUP_REPLICATION_STREAM MGR流控制

GRANT REPLICATION SLAVE,CONNECTION_ADMIN,BACKUP_ADMIN,GROUP_REPLICATION_STREAM ON *.* TO jack@'%';

7.2.5刷新权限

FLUSH PRIVILEGES;

7.2.6开启binlog日志

SET SQL_LOG_BIN=1;

7.3配置用户凭证

当新节点加入集群时,它会通过一个名为'group_replication_recovery'的通道来从现有节点复制数据,以同步到最新状态。这个命令就是为这个恢复通道设置复制源的用户名和密码。(用于新节点加入后同步已有数据)

CHANGE REPLICATION SOURCE TO SOURCE_USER='jack',SOURCE_PASSWORD='Jack@123' FOR CHANNEL 'group_replication_recovery';

7.4启动复制组

7.4.1开启创建新集群命令(只在创建MGR新集群时使用一次)

SET GLOBAL group_replication_bootstrap_group=ON;

7.4.2使用指定用户启动复制组

启动组复制,并且在启动过程中,使用指定的用户(jack)和密码(Jack@123)来连接集群中的其他节点进行认证,以便进行状态恢复和数据同步

START GROUP_REPLICATION USER='jack', PASSWORD='Jack@123';

7.4.3关闭创建新集群命令

SET GLOBAL group_replication_bootstrap_group=OFF;

7.4.4查看集群成员状态-performance_schema库下replication_group_members表

SELECT * FROM performance_schema.replication_group_members;

7.5测试

7.5.1显示binlog事件

SHOW BINLOG EVENTS;

8.添加第二个实例-mysql-node2(只有8.1与8.4与上面不同)

8.1配置参数-/etc/my.cnf(MySQL配置文件)

vim /etc/my.cnf

#关闭其他存储引擎
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
#启动GTID
server-id=2
gtid_mode=ON
enforce_gtid_consistency=ON
#配置MRG
plugin_load_add='group_replication.so'
group_replication_group_name="71397dad-e092-11f0-bb1f-000c29ba195e" #集群UUID
group_replication_start_on_boot=off
group_replication_local_address= "mysql-node2:33061" #本节点通信地址
group_replication_group_seeds= "mysql-node1:33061,mysql-node2:33061,mysql-node3:33061"
group_replication_bootstrap_group=off

8.2创建复制用户

8.2.0登录MySQL

mysql -uroot -p'Root@123'

8.2.1删除所有binlog日志

RESET MASTER;

8.2.2暂时关闭binlog日志

SET SQL_LOG_BIN=0;

8.2.3创建配置用户-jack

CREATE USER jack@'%' IDENTIFIED WITH mysql_native_password BY 'Jack@123';

8.2.4授予配置用户权限

权限用途

REPLICATION SLAVE 主从复制
CONNECTION_ADMIN 连接管理
BACKUP_ADMIN 备份管理
GROUP_REPLICATION_STREAM MGR流控制

GRANT REPLICATION SLAVE,CONNECTION_ADMIN,BACKUP_ADMIN,GROUP_REPLICATION_STREAM ON *.* TO jack@'%';

8.2.5刷新权限

FLUSH PRIVILEGES;

8.2.6开启binlog日志

SET SQL_LOG_BIN=1;

8.3配置用户凭证

当新节点加入集群时,它会通过一个名为'group_replication_recovery'的通道来从现有节点复制数据,以同步到最新状态。这个命令就是为这个恢复通道设置复制源的用户名和密码。(用于新节点加入后同步已有数据)

CHANGE REPLICATION SOURCE TO SOURCE_USER='jack',SOURCE_PASSWORD='Jack@123' FOR CHANNEL 'group_replication_recovery';

8.4启动复制组

8.4.1使用指定用户启动复制组

启动组复制,并且在启动过程中,使用指定的用户(jack)和密码(Jack@123)来连接集群中的其他节点进行认证,以便进行状态恢复和数据同步

START GROUP_REPLICATION USER='jack', PASSWORD='Jack@123';

8.4.2查看集群成员状态-performance_schema库下replication_group_members表

SELECT * FROM performance_schema.replication_group_members;

主机状态需要显示online才算成功

9.添加第三个实例-msyql-node3

 9.1配置参数-/etc/my.cnf(MySQL配置文件)

vim /etc/my.cnf

#关闭其他存储引擎
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
#启动GTID
server-id=3
gtid_mode=ON
enforce_gtid_consistency=ON
#配置MRG
plugin_load_add='group_replication.so'
group_replication_group_name="71397dad-e092-11f0-bb1f-000c29ba195e" #集群UUID
group_replication_start_on_boot=off
group_replication_local_address= "mysql-node3:33061" #本节点通信地址
group_replication_group_seeds= "mysql-node1:33061,mysql-node2:33061,mysql-node3:33061"
group_replication_bootstrap_group=off

9.2创建复制用户

9.2.0登录MySQL

mysql -uroot -p'Root@123'

9.2.1删除所有binlog日志

RESET MASTER;

9.2.2暂时关闭binlog日志

SET SQL_LOG_BIN=0;

9.2.3创建配置用户-jack

CREATE USER jack@'%' IDENTIFIED WITH mysql_native_password BY 'Jack@123';

9.2.4授予配置用户权限

权限用途

REPLICATION SLAVE 主从复制
CONNECTION_ADMIN 连接管理
BACKUP_ADMIN 备份管理
GROUP_REPLICATION_STREAM MGR流控制

GRANT REPLICATION SLAVE,CONNECTION_ADMIN,BACKUP_ADMIN,GROUP_REPLICATION_STREAM ON *.* TO jack@'%';

9.2.5刷新权限

FLUSH PRIVILEGES;

9.2.6开启binlog日志

SET SQL_LOG_BIN=1;

9.3配置用户凭证

当新节点加入集群时,它会通过一个名为'group_replication_recovery'的通道来从现有节点复制数据,以同步到最新状态。这个命令就是为这个恢复通道设置复制源的用户名和密码。(用于新节点加入后同步已有数据)

CHANGE REPLICATION SOURCE TO SOURCE_USER='jack',SOURCE_PASSWORD='Jack@123' FOR CHANNEL 'group_replication_recovery';

9.4启动复制组

9.4.1使用指定用户启动复制组

启动组复制,并且在启动过程中,使用指定的用户(jack)和密码(Jack@123)来连接集群中的其他节点进行认证,以便进行状态恢复和数据同步

START GROUP_REPLICATION USER='jack', PASSWORD='Jack@123';

9.4.2查看集群成员状态-performance_schema库下replication_group_members表

SELECT * FROM performance_schema.replication_group_members;

主机状态显示online才算成功

10验证与测试集群

10.1数据同步测试

10.2模拟mysql-node1停机

10.2.1在mysql-node1关闭MySQL服务

systemctl stop mysqld

10.2.2在mysql-node2查看集群成员状态

10.2.3使用mysql-node2创建数据库test3后再将mysql-node1加入集群

10.2.3.1使用mysql-node2创建数据库test3

10.2.3.2将mysql-node1加入集群

START GROUP_REPLICATION USER='jack', PASSWORD='Jack@123';

赞(0)
未经允许不得转载:171主机测评 » Linux-MGR单主集群部署
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址