最近因为压测的需求需要使用mgr搭建数据库,网上教程也比较多,但是实际自己操作还是会遇到很多问题,所以记录下来以后再去搞就更熟练了。感谢大佬的博客,基本流程就是这个博客里的步骤。
MySQL MGR 集群搭建(单主模式&多主模式) - 简书 (jianshu.com)
安转mysql,我这次使用的是mysql8.0,在三台机器搭建
1.新建mysql配置文件,就是那个cnf结尾的文件,可以自己定义名字,新建文
件/home/mysql/etc/mysql_mgr.cnf
每个节点都需要配置,serverid和loose-group_replication_local_address,report_host三个参数不一样,配置的时候还需要注意要保证不同的节点之间网络是要互通的
[mysqld]
port=3306
basedir=/usr/local/mysql8.0
datadir=/mysql/data_mgr_8.0/
socket=/mysql/data_mgr_8.0/mysql.sock
pid_file=/mysql/data_mgr_8.0/mysql.pid
default_authentication_plugin=mysql_native_passwordserver_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONElog_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLEtransaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=OFF这里33062及其他两个端口自己去定义
loose-group_replication_local_address= "172.16.40.7:33062"
loose-group_replication_group_seeds= "172.16.40.6:33061,172.16.40.7:33062,172.16.40.2:33063"
loose-group_replication_bootstrap_group=OFF需要注意这句不能少,配置允许接入组的ip
loose-group_replication_ip_whitelist="172.16.40.7,172.16.40.6,172.16.40.2"这里配置本节点的ip
report_host=172.16.40.7
report_port=3306
[client]
port=3306
socket=/mysql/data_mgr_8.0/mysql.sock
2.初始化数据库
useradd mysql
mkdir -p /mysql/data_mgr_8.0
sudo chown -R mysql.mysql /mysql/data_mgr_8.0/
sudo chown -R mysql.mysql /home/mysql/etc/
/usr/local/mysql8.0/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql8.0 --datadir=/mysql/data_mgr_8.0 --user=mysql
3.按照步骤启动数据库,安装插件,设置账号
# 启动数据库
su - mysql -c "/usr/local/mysql8.0/bin/mysqld_safe --defaults-file=/home/mysql/etc/my_mgr_8.0.cnf &"
# 登录数据库
/usr/local/mysql8.0/bin/mysql -S /mysql/data_mgr_8.0/mysql.sock
# 安装MGR插件
mysql>INSTALL PLUGIN group_replication SONAME 'group_replication.so';
#设置复制账号
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER repl@'%' IDENTIFIED BY 'repl';
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='repl' FOR CHANNEL 'group_replication_recovery';
4.设置为单住模式
在mgr主节点执行
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
其他节点执行:
START GROUP_REPLICATION;
切换主节点方式在大佬的文章中也有,下面主要记录出现的问题及解决办法。因为删除了data数据重新安装初始化,前面踩的坑只能描述下
1.需要注意几个节点之间的ip是互通的
2.需要注意mysql的版本,8以上版本会有密码编码的问题
3.如果一直处于reciever状态,可以使用restart master来尝试
TEST