MySQL mgr部署文档

云掣YunChe4个月前技术文章449


一、环境说明

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)


相关文章

REPMGR-PG高可用搭建(二)

REPMGR-PG高可用搭建(二)

REPMGR搭建步骤一、介绍repmgr是第二象限开源的一套流复制集群管理工具,用于管理PostgreSQL服务器群集中的复制和故障转移。 支持故障自动转移和手动切换;支持分布式管理集群节点,易扩展,...

数据湖技术之iceberg(二)iceberg的特点

1  Iceberg的概念及特点Apache Iceberg是一种用于大型数据分析场景的开放表格式(Table Format)。Iceberg使用一种类似于SQL表的高性能表格式,Icebe...

高效便捷!解锁阿里云跨账号专线互联的全新实施方案

高效便捷!解锁阿里云跨账号专线互联的全新实施方案

01背    景为持续提升金融云环境的合规标准以及可用区内产品服务的性能和稳定性,阿里云将对杭州地域BCD三个金融云可用区进行基础设施架构升级与改造,对应可用区云产品将于 2024...

dbms_support包跟踪10046

系统默认没有安装dbms_support这个包,可以手动执行$ORACLE_HOME/rdbms/admin/dbmssupp.sql脚本来创建该包。安装dbms_support包: SQL>...

服务器间文件传输方法

一、windows间互传当我们想要对业务数据进行传输时,需要借助第三方工具或者系统自带的服务进行数据传输,以下介绍三种常见数据传输方法1、通过windows自带的系统映射服务拷贝数据到目标服务器;端口...

Flinksql Kafka 接收流数据并打印到控制台

Flinksql Kafka 接收流数据并打印到控制台

本文目的使用Flink SQL创建一个流处理作业,将来自Kafka主题"dahua_picrecord"的数据写入到另一个表”print_table”控制台中。使用sql-client前 需要启动ya...

发表评论    

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