二进制安装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/
使用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*
编辑初始化文件: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
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启动失败。
给复制用户授权: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;
主节点是50.20,只有主节点能够读写,其他节点只能读。
且创建的表必须有主键,否则会报错
mysql> insert into test values (1,'test1');
ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.
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;
此时在其他节点进行插入测试:
说明单主模式已切换为多主模式。
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');




