LAMP架构之mysql(4):mysql组复制(有错误)

1.15 后半场+1.16开头

一、mysql组复制

组复制是三个节点均是master和slave,任意一个节点有改动,其他节点都能同步过去。

1、数据库重新初始化

server1、2、3:停掉数据库,删除/data/mysql的数据。后边要重新初始化。

/etc/init.d/mysqld  stop

rm -fr /data/mysql/*

LAMP架构之mysql(4):mysql组复制(有错误)_第1张图片

配置文件修改:三个节点的配置文件均有改动。

千万别写错!

这是server1的配置文件:  /etc/my.cnf

[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" ##禁用这几个引擎
server_id=1  ####srever2和3分别写id=2和id=3
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.73.1:33061" ##这里要注意写本机ip,server2、3要改
group_replication_group_seeds= "172.25.73.1:33061,172.25.73.2:33061,172.25.73.3:33061"
########所有节点的ip,33061是组复制的监听端口。
group_replication_bootstrap_group=off
group_replication_ip_whitelist="172.25.73.0/24,127.0.0.1/8" ##把172.25.73网段加入白名单
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
group_replication_allow_local_disjoint_gtids_join=ON ##强制加入组,这个不写后边server2、3加入数据库组的时候会报错,加不进去。

 LAMP架构之mysql(4):mysql组复制(有错误)_第2张图片

 LAMP架构之mysql(4):mysql组复制(有错误)_第3张图片

LAMP架构之mysql(4):mysql组复制(有错误)_第4张图片

 三个节点重新初始化并修改密码,都是一样的操作。

 mysqld --initialize --user=mysql

/etc/init.d/mysqld start

mysql -p

 alter user root@localhost identified by 'westos';   ##直接修改密码为westos

LAMP架构之mysql(4):mysql组复制(有错误)_第5张图片

 2、组复制部署

       注:第一个做组复制节点是引导节点,在这里选server1当引导节点。引导节点的操作和另外的节点削微不太一样

server1登陆数据库以后:

SET SQL_LOG_BIN=0;  ###关闭日志功能,新建用户的这些操作不想让其他节点获取

CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;   # ##刷新

SET SQL_LOG_BIN=1; ##开启日志功能

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

 SET GLOBAL group_replication_bootstrap_group=ON;  (只在第一个节点执行)

START GROUP_REPLICATION;

SET GLOBAL group_replication_bootstrap_group=OFF; (只在第一个节点执行)
 

LAMP架构之mysql(4):mysql组复制(有错误)_第6张图片

 server1上,

SELECT * FROM performance_schema.replication_group_members;  查看第一个节点是否部署成功,看到online就可以了,其他节点同样,不是online就是出错了。

LAMP架构之mysql(4):mysql组复制(有错误)_第7张图片

 server2\3上:

SET SQL_LOG_BIN=0;  ###关闭日志功能,新建用户的这些操作不想让其他节点获取

CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;   # ##刷新

SET SQL_LOG_BIN=1; ##开启日志功能

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='passw

ord' FOR CHANNEL 'group_replication_recovery';

START GROUP_REPLICATION;

这里报错了,在server1查询状态时,发现2和3的状态都是RECOVERING。

 LAMP架构之mysql(4):mysql组复制(有错误)_第8张图片

排错开始

 server2、3退出数据库,查看日志是否有解决办法

你可能感兴趣的:(mysql,架构,数据库)