MySQL mgr部署文档

云掣YunChe3个月前技术文章274


一、环境说明

1.1服务器信息

截图_20250122172137.png1.2目录规划


1.2目录规划

截图_20250122172420.png

二、环境配置


2.1 关闭防火墙和selinux

service iptabls stop
/etc/selinux/config
SELINUX=disabled


2.2 配置主机名

hostname

2.3 配置ip域名映射

vi /etc/hosts
172.16.104.8  172-16-104-8
172.16.104.9  172-16-104-9
172.16,104.10 172-16-104-10

2.4 操作系统调优

cat>>/etc/sysctl.conf <<EOF
vm.swappiness = 0
fs.aio-max-nr = 1048576
fs.file-max = 681574400
kernel.shmmax = 137438953472
kernel.shmmni = 4096
kernel.sem = 250 32000 100 200
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
EOF
 
cat>>/etc/security/limits.conf <<EOF
mysql soft nproc 65536
mysql hard nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536
EOF
 
cat>>/etc/profile<<EOF
if [ $USER = "mysql" ]; then
    ulimit -u 16384 -n 65536
fi
EOF

2.5 关闭numa

cat>>/etc/sysctl.conf <<EOF
vm.swappiness = 0
fs.aio-max-nr = 1048576
fs.file-max = 681574400
kernel.shmmax = 137438953472
kernel.shmmni = 4096
kernel.sem = 250 32000 100 200
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
EOF
 
cat>>/etc/security/limits.conf <<EOF
mysql soft nproc 65536
mysql hard nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536
EOF
 
cat>>/etc/profile<<EOF
if [ $USER = "mysql" ]; then
    ulimit -u 16384 -n 65536
fi
EOF

三、部署mysql


3.1 创建用户

groupadd mysql
useradd -g mysql mysql -s /sbin/nologin
id mysql

3.2 配置目录

mkdir -pv /data/mysql/{data,logs,binlog,tmp,redo}
chown -R mysql:mysql /data/mysql/

3.3 解压安装包

mkdir -pv /data/mysql/{data,logs,binlog,tmp,redo}
chown -R mysql:mysql /data/mysql/

3.4 配置环境变量

mkdir -pv /data/mysql/{data,logs,binlog,tmp,redo}
chown -R mysql:mysql /data/mysql/

3.5 修改配置文件

[client]
port    = 3306
socket  = /data/mysql/data/mysql.sock
 
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/data/mysql/data
tmpdir =/data/mysql/tmp
socket=/data/mysql/data/mysql.sock
log-error = /data/mysql/logs/error.log
symbolic-links=0
 
server-id=30061   //各节点server-id不要一致
port=3306
gtid_mode=on
enforce_gtid_consistency=on
log-bin = /data/mysql/binlog/binlog
binlog_format=row
binlog_checksum=none
log_slave_updates=on
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log = /data/mysql/binlog/relaylog
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="02eb0070-4419-463f-ac3aece40c0f6ac0"
loose-group_replication_start_on_boot=off
loose-group_replication_member_weigth = 40
loose-group_replication_local_address="172.16.104.8:30061"  //各节点服务器ip:server-id
loose-group_replication_group_seeds="172.16.104.8:30061,172.16.104.9:30062,172.16.104.10:30063"

3.6 初始化

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure &
//初始化加上--initialize-insecure 选项会设置密码为空


3.7 启动mysql

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &


四、配置MGR

4.1启动mgr单主模式

#以下步骤所有节点均执行
mysql  #登陆数据库
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so'; #安装插件
mysql> SET SQL_LOG_BIN=0; #关闭binlog
mysql> CREATE USER repl@'%' IDENTIFIED BY 'repl'; #创建复制账号
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%'; #授权
mysql> FLUSH PRIVILEGES; #刷新权限
mysql> SET SQL_LOG_BIN=1; #开启binlog
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery'; #创建复制
 
#启动MGR,在172.16.104.8上执行
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
 
#将其他节点加入MGR,在从库172.16.104.9、172.16.104.10上执行
mysql> START GROUP_REPLICATION;
查看MGR组信息
root@mysql 02:30:  [(none)]>  SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 19b47031-c397-11ea-a83b-000c29652de7 | node2       |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
| group_replication_applier | 627eae86-c38a-11ea-9dcf-000c2989a02a | node1       |        3306 | ONLINE       | PRIMARY     | 8.0.20         |
| group_replication_applier | 652b5dc9-c397-11ea-a416-000c2936f782 | node3       |        3306 | ONLINE       | SECONDARY   | 8.0.20         |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3 rows in set (0.00 sec)
#如果在启动过程中报错,可以参考
performance_schema.replication_connection_status或者日志输出解决问题。

4.2切换为MGR多主模式

#以下步骤所有节点均执行
mysql> stop group_replication;
#是否启动单主模式,如果启动,则本实例是主库,提供读写,其他实例仅提供读,如果为off就是多主模式了
mysql> set global group_replication_single_primary_mode=OFF;
#多主模式下,强制检查每一个实例是否允许该操作,如果不是多主,可以关闭 mysql> set global
group_replication_enforce_update_everywhere_checks=ON;
 
#只在一个节点上执行,任意节点都可以
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
#在其余节点执行
mysql> START GROUP_REPLICATION;
mysql> SELECT * FROM performance_schema.replication_group_members; +---------------------------+--------------------------------------+---------------+-------------+--------------+-------------+----------------+ | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | +---------------------------+--------------------------------------+---------------+-------------+--------------+-------------+----------------+ | group_replication_applier | 2a7335b3-c743-11e9-bcbb-000c29586226 | 172.16.104.8 | 3306 | ONLINE | PRIMARY | 8.0.17 | |
group_replication_applier | 9bff969a-c743-11e9-90c0-000c29a2154f | 172.16.104.9 | 3306 | ONLINE | PRIMARY | 8.0.17 | |
group_replication_applier | c8dca41c-c744-11e9-8443-000c2943d916 | 172.16.104.10|3306| ONLINE | PRIMARY | 8.0.17 | +---------------------------+--------------------------------------+---------------+-------------+--------------+-------------+----------------+ 3 rows in set (0.03 sec)

4.3切换为MGR单主模式

#以下步骤所有节点均执行
mysql> stop group_replication;
mysql> set global group_replication_enforce_update_everywhere_checks=OFF;
mysql> set global group_replication_single_primary_mode=ON;
#主节点执行,在192.168.0.118上执行
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
#在其余节点执行
START GROUP_REPLICATION;
查看MGR组信息
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST   | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+---------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 2a7335b3-c743-11e9-bcbb-000c29586226 | 192.168.0.118 |        3306 | ONLINE       | PRIMARY     | 8.0.17         |
| group_replication_applier | 9bff969a-c743-11e9-90c0-000c29a2154f | 192.168.0.119 |        3306 | ONLINE       | SECONDARY   | 8.0.17         |
| group_replication_applier | c8dca41c-c744-11e9-8443-000c2943d916 | 192.168.0.120 |        3306 | ONLINE       | SECONDARY   | 8.0.17         |
+---------------------------+--------------------------------------+---------------+-------------+--------------+-------------+----------------+
3 rows in set (0.00 sec)

4.4单主模式下的failover

#mgr查找主节点:
SHOW STATUS LIKE 'group_replication_primary_member';
SELECT * FROM performance_schema.replication_group_members;
 
#模拟主节点宕机:
[root@172-16-104-8 data]# mysqladmin -uroot -p  shutdown
Enter password:
2020-10-28T11:54:54.927610Z mysqld_safe mysqld from pid file /data/mysql/data/172-16-104-8.pid ended
[1]+  Done                    /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf  (wd: /data)
(wd now: /data/mysql/data)
 
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST   | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+---------------+-------------+--------------+
| group_replication_applier | 0f2c4453-18e6-11eb-b5c0-faebd3a13700 | 172-16-104-10 |        3306 | ONLINE       |
| group_replication_applier | 79f6ff2c-18e4-11eb-964a-fa566a1b9b00 | 172-16-104-9  |        3306 | ONLINE       |
+---------------------------+--------------------------------------+---------------+-------------+--------------+
2 rows in set (0.00 sec)
#主节点切换到了节点172.16.104.10
mysql> SHOW STATUS LIKE 'group_replication_primary_member';
+----------------------------------+--------------------------------------+
| Variable_name                    | Value                                |
+----------------------------------+--------------------------------------+
| group_replication_primary_member | 0f2c4453-18e6-11eb-b5c0-faebd3a13700 |
+----------------------------------+--------------------------------------+
1 row in set (0.02 sec)
 
mysql> show variables like '%group_replication_member_weight%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| group_replication_member_weight | 50    |
+---------------------------------+-------+
1 row in set (0.01 sec)
 
 
将主节点重启后,重新加入
mysql> select * from performance_schema.replication_group_members;
+---------------------------+-----------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+-----------+-------------+-------------+--------------+
| group_replication_applier |           |             |        NULL | OFFLINE      |
+---------------------------+-----------+-------------+-------------+--------------+
1 row in set (0.00 sec)
 
mysql> set global group_replication_single_primary_mode=on;
Query OK, 0 rows affected (0.00 sec)
 
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.02 sec)
 
mysql> start group_replication;
Query OK, 0 rows affected (3.01 sec)
 
mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST   | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+---------------+-------------+--------------+
| group_replication_applier | 0f2c4453-18e6-11eb-b5c0-faebd3a13700 | 172-16-104-10 |        3306 | ONLINE       |
| group_replication_applier | 10517159-18cd-11eb-bd67-faa7dd2bc000 | 172-16-104-8  |        3306 | ONLINE       |
| group_replication_applier | 79f6ff2c-18e4-11eb-964a-fa566a1b9b00 | 172-16-104-9  |        3306 | ONLINE       |
+---------------------------+--------------------------------------+---------------+-------------+--------------+
3 rows in set (0.00 sec)


相关文章

Debezium部署以及同步之DB2数据到Kafka的同步

Debezium部署以及同步之DB2数据到Kafka的同步

因为Debezium依赖于kafka之上,所以我们先部署kafka和zookeeper(忽略)。1 环境介绍Debezium1.9版本 Db2 11.5版本  附官网:http...

Redis 命令行 redis-cli 介绍

前言redis-cli 是 Redis 自带的命令行工具,是运维和开发人员常用的工具,本篇文章将介绍它的使用技巧和一些有趣的功能。1. 连接 Redis 服务redis-cli 默认连接的是 127....

PostgreSQL 流复制

前言PostgreSQL 流复制(Streaming Replication)是 9.0 提供的一种新的 WAL 传递方法。使用流复制时,每当 Primary 节点 WAL 产生,就会马上传递到 St...

rabbitmq-迁移方案

rabbitmq-迁移方案

rabbitmq共有两种迁移方案:迁移方式优点缺点可用性原理文件导入方式数据100%成功业务要修改地址暂停提供服务可以使用拷贝元数据方式添加集群方式不可用,数据会丢失(添加机器之前会清空之前所有的信息...

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构(2)

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构(2)

        3.0 在云服务器进行环境配置        将项目放到云服务器上运行,那么离不开项目所依赖的环境,比如...

Hbase映射为Hive外表

Hbase映射为Hive外表

Hbase对应Hive外表(背景:在做数据ETL中,可能原始数据在列式存储Hbase中,这个时候,如果我们想清洗数据,可以考虑把Hbase表映射为Hive的外表,然后使用Hive的HQL来清除处理数据...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。