目录
一、mysql的分布式集群(组复制)
组复制对配置的要求比较高,而且和之前的环境有一些差别,因此要先清理一下之前实验的环境。
1、把所有节点的mysql程序停止掉
2、把所有节点的mysql数据清理一下(初始化mysql)
3、重新配置mysql
4、在master中设置
第一步:设置master的配置文件如下</etc/my.cfg>
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
plugin_load_add='group_replication.so'
transaction_write_set_extraction=XXHASH64
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address= "172.25.254.1:33061"
group_replication_group_seeds= "172.25.254.1:33061,172.25.254.2:33061,172.25.254.3:33061"
group_replication_bootstrap_group=off
group_replication_ip_whitelist="172.25.0.0/24,127.0.0.1/8"
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
group_replication_allow_local_disjoint_gtids_join=1 #表示有初始化时有新的数据加进来则丢弃本机数据
第二步:初始化mysql
mysqld --initialize --user=mysql #初始化mysql
/etc/init.d/mysqld start #启动mysql
mysql > alter user root@localhost identified by 'westos'; #更改mysql密码
第三步:在master的mysql内部设置
mysql> SET SQL_LOG_BIN=0; #禁止二进制日志
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'password'; #创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO repl_user@'%'; #授权用户访问
mysql> FLUSH PRIVILEGES; #刷新数据库配置
mysql> SET SQL_LOG_BIN=1; #允许二进制日志
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery'; #设置组复制
以上设置完成后,显示所有插件,可以看到“组复制”已经添加完成。
mysql> SHOW PLUGINS; #显示所有插件
接着设置:
mysql> SET GLOBAL group_replication_bootstrap_group=ON; #开启组复制引导(只需要在第一个启动节点上设置)
START GROUP_REPLICATION; #启动组复制插件
SET GLOBAL group_replication_bootstrap_group=OFF; #关闭组复制引导
设置完成后检查:
SELECT * FROM performance_schema.replication_group_members;
5、在slave中设置
第一步:更改配置文件</etc/my.cnf>。和master中一模一样,只是需要注意序号。server2和server3两个slave的序号分别为2和3。
第二步:初始化mysql(操作步骤同上)
第三步:在slave的mysql内部设置(操作步骤同上)
注意:与第一个节点不同的地方是,这一步只需要启动组复制插件即可,不需要启动组复制引导!!!!!
#和master相比,仅执行这一步
START GROUP_REPLICATION; #启动组复制插件
另外两个slave节点添加完成后,查询总共可以查询到三个节点已经并联起来了
第四步:测试
在server1中创建表
在server2中查看信息以同步,并插入新数据
在server3中查看信息已同步,并插入新数据
在server1中查看从其他节点可以查到同步过来的信息