暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL搭建MGR

原创 张帅 云和恩墨 2022-03-24
1037

二进制安装MySQL5.7.33

1.安装Redhat6.9操作系统

IP:192.168.50.20

root密码:123456

磁盘分区:

/boot 500m

swap 4096m

/tmp 4096m

/ 15360m

2.提前下载安装包并上传到服务器/usr/local路径下。

https://downloads.mysql.com/archives/community/

0

0

使用MD5进行校验 

 md5sum mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz

解压安装包

 tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz

设置软连接 

 ln -s mysql-5.7.33-linux-glibc2.12-x86_64/ mysql

卸载原有mysql :

查看旧版本MySQL:

rpm -qa |grep mysql

卸载旧版本MySQL:

rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64

3.创建组,用户

groupadd mysqluseradd -g mysql mysqlecho "mysql" | passwd --stdin mysql

(密码是mysql)

将mysql加入mysql组

cd /usr/local

chown -R mysql:mysql mysql*

0

编辑初始化文件:vi /etc/my.cnf

[mysqld]

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

log_error = /usr/local/mysql/mysql-error.log

port = 3306

socket = /usr/local/mysql/mysqld.sock

pid_file = /usr/local/mysql/mysqld.pid

character-set-server=utf8

lower_case_table_names=1

max_connections=1000

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

[mysql]

default-character-set=utf8

[client]

default-character-set=utf8

编辑完成后,退出

准备进行初始化:

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data进行初始化

初始化后去查看日志文件中的临时密码:grep 'temporary password' /usr/local/mysql/mysql-error.log

复制mysql的服务:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

启动mysql:/etc/init.d/mysqld start

查看mysql进程:ps -ef|grep mysql

配置环境变量:vi /etc/profile

MYSQL_HOME=/usr/local/mysql

export PATH=.:$PATH:$MYSQL_HOME/bin

使其生效:source /etc/profile

创建socket软连接:ln -s /usr/local/mysql/mysqld.sock /tmp/mysql.sock

登录MySQL:mysql -uroot -p,密码为grep后的临时密码

修改密码:alter user root@'localhost' identified by '1234';

使用MGR插件搭建高可用

1.修改hosts文件,将服务器IP都加入其中。(三个节点都要修改)

vi /etc/hosts

192.168.50.20 db

192.168.50.21 db1

192.168.50.22 db2

2.关闭防火墙,否则三个节点无法相互识别

Redhat6.9命令:service iptables stop

0

3.修改my.cnf文件,三个节点都要修改,将新增内容加入【mysqld】下,三个节点需要修改对应的server_id,loose-group_replication_local_address,report_host。(红色标注中间内容为新增内容)

[mysqld]

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

log_error = /usr/local/mysql/mysql-error.log

port = 3306

socket = /usr/local/mysql/mysqld.sock

pid_file = /usr/local/mysql/mysqld.pid

character-set-server=utf8

lower_case_table_names=1

max_connections=1000

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

server_id=1

gtid_mode=ON

enforce_gtid_consistency=ON

master_info_repository=TABLE

relay_log_info_repository=TABLE

log_bin=binlog

binlog_format=ROW

log_slave_updates=ON

binlog_checksum=NONE

transaction_write_set_extraction=XXHASH64

loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"

loose-group_replication_start_on_boot=off

loose-group_replication_local_address= "192.168.50.20:33061"

loose-group_replication_group_seeds= "192.168.50.20:33061,192.168.50.21:33061,192.168.50.22:33061"

loose-group_replication_bootstrap_group=off

loose-group_replication_member_weight=50

report_host=192.168.50.20(此参数为报告作用,向mgr报告自己在哪个节点)

report_port=3306

[mysql]

default-character-set=utf8

[client]

default-character-set=utf8

4.三个节点全部修改后,重启mysqld服务。

service mysqld restart

5.以root用户登录,并进行相关配置。(三个节点都要做)

安装mgr插件:INSTALL PLUGIN group_replication SONAME 'group_replication.so';

命令语句先不写入binlog:SET SQL_LOG_BIN=0;

设置复制用户:

create user mgr@'%' identified by '12345';

确保用户的加密方式为mysql_native_password,否则可能导致mgr启动失败。

0

给复制用户授权:grant replication slave on *.* to mgr@'%';

刷新权限:flush privileges;

打开binlog进行记录:SET SQL_LOG_BIN=1;

设置恢复路径:

CHANGE MASTER TO MASTER_USER='mgr', MASTER_PASSWORD='12345' FOR CHANNEL 'group_replication_recovery';

6.配置完成后,在20节点启动单主模式

SET GLOBAL group_replication_bootstrap_group=ON;

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group=OFF;

其他节点开启组复制:

START GROUP_REPLICATION;

7.此时查看MGR组信息

SELECT * FROM performance_schema.replication_group_members;

0

主节点是50.20,只有主节点能够读写,其他节点只能读。

0


且创建的表必须有主键,否则会报错

mysql> insert into test values (1,'test1');

ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.

0

8.单主模式切换多主模式

首先三个节点停止组复制:

stop group_replication;

set global group_replication_single_primary_mode=OFF;

set global group_replication_enforce_update_everywhere_checks=ON;

随意节点执行开启命令:

SET GLOBAL group_replication_bootstrap_group=ON;

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group=OFF;

此时在其他节点进行插入测试:

0

说明单主模式已切换为多主模式。

9.多主模式切换回单主模式

三个节点执行:

stop group_replication;

set global group_replication_enforce_update_everywhere_checks=OFF;

set global group_replication_single_primary_mode=ON;

主节点执行:

SET GLOBAL group_replication_bootstrap_group=ON;

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group=OFF;

其他节点执行:

START GROUP_REPLICATION;

插入测试:

insert into tes values (4,'test4');

0

说明多主模式已切换为单主模式

最后修改时间:2022-03-28 16:16:53
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论