您的位置:首页 > 数据库 > MySQL

mysql5.7的GROUP REPLICATION操作步骤

2018-01-18 17:25 337 查看

mysql5.7的GROUP REPLICATION操作步骤

MySql:5.7.18-enterprise-commercial-advanced-log

Centos:7.3

环境:

centos128  192.168.44.128
centos129  192.168.44.129
centos130  192.168.44.130


一、设置配置文件

[root@centos128 3306]# cat my.cnf
[mysqld]
# basic settings
user = mysql
port = 3306
server-id=1
socket = /data/3306/mysql.sock
basedir = /data/mysql
datadir = /data/3306/data
pid_file= /data/3306/mysql.pid
innodb_log_group_home_dir = /data/3306/data
innodb_undo_directory = /data/3306/data
tmpdir = /tmp
sql_mode= STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
autocommit = 1
character_set_server=utf8
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
max_allowed_packet = 16777216
event_scheduler = 1
large-pages
thread_cache_size=0
plugin-load=thread_pool.so
binlog_checksum=NONE

slave_parallel_type = LOGICAL_CLOCK
slave_preserve_commit_order = ON

#group replication
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.44.128:33061"
loose-group_replication_group_seeds= "192.168.44.128:33061,192.168.44.129:33061,192.168.44.130:33061"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE

# connection #
interactive_timeout = 1800
wait_timeout = 1800
lock_wait_timeout = 1800
skip_name_resolve = 1
max_connections = 512
max_connect_errors = 1000000
#slave-skip-errors=1236

relay_log_space_limit=1024

# table cache performance settings
innodb_data_file_path=ibdata1:500M:autoextend
table_open_cache = 4096
table_definition_cache = 4096
table_open_cache_instances = 128

# session memory settings #
read_buffer_size = 16M
read_rnd_buffer_size = 32M
sort_buffer_size = 32M
tmp_table_size = 64M
join_buffer_size = 128M
thread_cache_size = 64

# log settings #
log_error = /data/3306/logs/error.log
slow_query_log = 1
slow_query_log_file =/data/3306/logs/slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 7
long_query_time = 2
min_examined_row_limit = 100
binlog_format = ROW
binlog-rows-query-log-events = 1
log-bin-trust-function-creators = 1
log_bin = /data/3306/logs/log/mysql_bin
log_bin_index = /data/3306/logs/log/mysql_bin.index
expire-logs-days = 3
log-slave-updates = 1
relay_log_purge=0

slave_parallel_workers=5

# innodb settings #
innodb_page_size = 16384
innodb_buffer_pool_size = 1G [memory/2]
innodb_buffer_pool_instances = 1
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 4096
innodb_lock_wait_timeout = 5
innodb_io_capacity = 1000
innodb_io_capacity_max = 1000
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_undo_logs = 128
innodb_undo_tablespaces = 3
innodb_flush_neighbors = 0
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 16777216
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 67108864
innodb_write_io_threads = 16
innodb_read_io_threads = 16
innodb_file_per_table = 1
innodb_stats_persistent_sample_pages = 64
innodb_autoinc_lock_mode = 2
innodb_online_alter_log_max_size=1G
innodb_open_files=4096
metadata_locks_hash_instances=64
secure_file_priv=/tmp

master_info_repository=TABLE
relay_log_info_repository=TABLE
gtid_mode=on
enforce_gtid_consistency=on


注意各节点的my.cnf的差异:

centos128上:

server-id=1
loose-group_replication_local_address= "192.168.44.128:33061"


centos129上:

server-id=2
loose-group_replication_local_address= "192.168.44.129:33061"


centos130上:

server-id=3
loose-group_replication_local_address= "192.168.44.130:33061"


其它的都一样。

另外每个库的uuid也要是唯一的,否则,开启复制时会报

2018-01-16T12:10:56.431527Z 0 [ERROR] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: b376058d-5762-11e7-baa0-000c29e6b568:1-2 > Group transactions: '
2018-01-16T12:10:56.431608Z 0 [ERROR] Plugin group_replication reported: 'The member contains transactions not present in the group. The member will now exit the group.'
2018-01-16T12:10:56.431624Z 0 [Note] Plugin group_replication reported: 'To force this member into the group you can use the group_replication_allow_local_disjoint_gtids_join option'


并且各member都不在一个组里。原因是因为建库时只是复制数据库到其它节点服务器上的,没有修改datadir下的auto.cnf文件里的uuid。把各uuid改成不一样就可以正常加入组,并正常的复制。

通过

SELECT * FROM performance_schema.replication_group_members


可以查看memeber_id,如果member_id一样说不定就是这样的问题

二、建库

1, mysql 下载及解压

解压路径:

tar zxvf mysql-advanced-5.7.18-linux-glibc2.5-x86_64.tar.gz


移到目录/usr/local/,并更名为mysql:

mv mysql-advanced-5.7.18-linux-glibc2.5-x86_64 /data/mysql


2,mysql 路径及用户的创建

添加用户及组:

groupadd mysql
useradd -g mysql mysql


生成路径

mkdir -p /data/3306/data /data/3306/logs/log   /data/3307/data /data/3307/logs/log


设置mysql目录的所有者及组:

chown -R mysql:mysql /data


3,创建DB instance

/data/3306/必须为空

defaults-file 在5.7.14版本之后就不再使,如果使用就会报错

./mysqld --initialize-insecure --datadir=/data/3306/data --basedir=/data/mysql/ --user=mysql  --defaults-file=/data/3306/my.cnf


这里说明下,初始化参数我使用了–initialize-insecure,这样不会设置初始化root密码,如果是 –initialize的话,会随机生成一个密码:

在5.7.14版本之后就不再使,如果使用就会报错

[root@centos128 bin]# mysqld --initialize-insecure --datadir=/data/3306/data --basedir=/data/mysql/ --user=mysql  --defaults-file=/data/3306/my.cnf
2017-06-22T13:38:42.569214Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-06-22T13:38:42.693496Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-06-22T13:38:42.733273Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-06-22T13:38:42.793859Z 0 [ERROR] unknown variable 'defaults-file=/data/3306/my.cnf'
2017-06-22T13:38:42.793908Z 0 [ERROR] Aborting


传一个正常的my.cnf文件到/etc下

[root@centos128 bin]# mysqld --initialize-insecure --datadir=/data/3306/data --basedir=/data/mysql/ --user=mysql  #直接采用默认的/etc/my.cnf


创建成功

这里是initialize-insecure可以初始mysql是不需要密码,如果需要看【修改登录密码】

修改登录密码:

5.7版本:

```
mysqld_safe  --defaults-file=/data/3307/my.cnf --user=mysql --skip-grant-tables --skip-networking  --datadir=/data/3307/data   &
mysql -u root mysql --socket=/data/3307/mysql.sock

update mysql.user set authentication_string=password('root') where USER='root' and host='root' or host='localhost';
flush privileges;


restart:

mysqladmin shutdown  -u root -proot --socket=/data/3307/mysql.sock


/data/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf >/dev/null  2>&1 > /dev/null &


mysql -uroot  -p  --socket=/data/3307/mysql.sock  -hlocalhost


set password for 'root'@'localhost'=password('root');
flush privileges;


如法炮制cenos129,centos130.

mysqld --initialize-insecure --datadir=/data/3306/data --basedir=/data/mysql/ --user=mysql


三、搭建GR

my.cnf中搭建GR的重要参数必段有:

server_id=1                     #设置复制过程是不同的server_id
gtid_mode=ON                    #开启GTID事务模式
enforce_gtid_consistency=ON     #开启GTID事务模式
master_info_repository=TABLE       #slave的master_info放在TABLE里
relay_log_info_repository=TABLE    #slave的relay_log_info放在TABLE里
binlog_checksum=NONE            #关闭binlog的checksum
log_slave_updates=ON            #接收master的log信息并写入slave的binary log里
log_bin=binlog                  #开启binary log
binlog_format=ROW               #binary log的日志格式为row
transaction_write_set_extraction=XXHASH64         #server为每个事务收集write set并用XXHASH64哈唏算法编码这个set
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"    #表示plugin连接、创建的group的名称
loose-group_replication_start_on_boot=off         #当server开启时,plugin并不会自动开启
loose-group_replication_local_address= "192.168.44.128:33061"    #表示本地以IP,PORT与group中的其它member进行连接
loose-group_replication_group_seeds= "192.168.44.128:33061,192.168.44.129:33061,192.168.44.130:33061"  #告诉plugin这些IP加入group中通过port相互联系。那些想加入group的就是seed member
loose-group_replication_bootstrap_group= off      #关闭boostrap the group
loose-group_replication_single_primary_mode=FALSE #关闭single_primary_mode
loose-group_replication_enforce_update_everywhere_checks= TRUE    #当multi-master时对任何更改开启强一制性检查


a.centos128 开启GR设置:

SET SQL_LOG_BIN=0;         #当前用户的操作不记录到binary log
CREATE USER rpl_user@'%';  #创建复制用户rpl_user@'%'
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';   #授用户rpl_user@'%'复制权限
SET SQL_LOG_BIN=1;         #当前用户的操作录记到binary log
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';  #来自其它member的恢复需要的user credentials
FLUSH PRIVILEGES;

INSTALL PLUGIN group_replication SONAME 'group_replication.so';     #安装Group Replication plugin
SHOW PLUGINS;

SET GLOBAL group_replication_bootstrap_group=ON;


#开启bootstrap the group

START GROUP_REPLICATION;                              #开启GR
SET GLOBAL group_replication_bootstrap_group=OFF;     #关闭bootstrap the group


SELECT * FROM performance_schema.replication_group_members;
root@localhost:(none) 04:29:21>SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | b376058d-5762-11e7-baa0-000c29e6b568 | centos128   |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+


b.centos129 开启GR设置:

SET SQL_LOG_BIN=0;         #当前用户的操作不记录到binary log
CREATE USER rpl_user@'%';  #创建复制用户rpl_user@'%'
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';   #授用户rpl_user@'%'复制权限
SET SQL_LOG_BIN=1;         #当前用户的操作录记到binary log
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';  #来自其它member的恢复需要的user credentials
FLUSH PRIVILEGES;

INSTALL PLUGIN group_replication SONAME 'group_replication.so';     #安装Group Replication plugin
SHOW PLUGINS;

START GROUP_REPLICATION;                              #开启GR,这里不需要开启bootstrap the group,只需要只启一次就够了

SELECT * FROM performance_schema.replication_group_members;
root@localhost:(none) 04:42:45>SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 574d6e9a-fc15-11e7-9fcf-000c29879d51 | centos129   |        3306 | ONLINE       |
| group_replication_applier | b376058d-5762-11e7-baa0-000c29e6b568 | centos128   |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+


可以看见centos128的member 以及新添加的centos129的member

b.centos130 开启GR设置:

SET SQL_LOG_BIN=0;         #当前用户的操作不记录到binary log
CREATE USER rpl_user@'%';  #创建复制用户rpl_user@'%'
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';   #授用户rpl_user@'%'复制权限
SET SQL_LOG_BIN=1;         #当前用户的操作录记到binary log
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';  #来自其它member的恢复需要的user credentials
FLUSH PRIVILEGES;

INSTALL PLUGIN group_replication SONAME 'group_replication.so';     #安装Group Replication plugin
SHOW PLUGINS;

START GROUP_REPLICATION;                              #开启GR,这里不需要开启bootstrap the group,只需要只启一次就够了

SELECT * FROM performance_schema.replication_group_members;
root@localhost:(none) 04:45:00>SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 574d6e9a-fc15-11e7-9fcf-000c29879d51 | centos129   |        3306 | ONLINE       |
| group_replication_applier | b376058d-5762-11e7-baa0-000c29e6b568 | centos128   |        3306 | ONLINE       |
| group_replication_applier | e87b5168-fc15-11e7-9fcf-000c29879d51 | centos130   |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+


可以看见centos128,centos129的member和新添加的centos130

四、GR相关的视图

查看GR中的memeber:

SELECT * FROM performance_schema.replication_group_members \G ;
root@localhost:(none) 04:29:26>SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 574d6e9a-fc15-11e7-9fcf-000c29879d51 | centos129   |        3306 | ONLINE       |
| group_replication_applier | b376058d-5762-11e7-baa0-000c29e6b568 | centos128   |        3306 | ONLINE       |
| group_replication_applier | e87b5168-fc15-11e7-9fcf-000c29879d51 | centos130   |        3306 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+


查看GR中的memeber的统计信息:

select * from performance_schema.replication_group_member_stats \G ;
root@localhost:(none) 04:45:07>select * from performance_schema.replication_group_member_stats \G ;
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
VIEW_ID: 15162633783937117:7
MEMBER_ID: b376058d-5762-11e7-baa0-000c29e6b568
COUNT_TRANSACTIONS_IN_QUEUE: 0
COUNT_TRANSACTIONS_CHECKED: 0
COUNT_CONFLICTS_DETECTED: 0
COUNT_TRANSACTIONS_ROWS_VALIDATING: 0
TRANSACTIONS_COMMITTED_ALL_MEMBERS: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-12
LAST_CONFLICT_FREE_TRANSACTION:

root@localhost:(none) 04:47:41>select * from performance_schema.replication_group_member_stats \G ;
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
VIEW_ID: 15162633783937117:7
MEMBER_ID: 574d6e9a-fc15-11e7-9fcf-000c29879d51
COUNT_TRANSACTIONS_IN_QUEUE: 0
COUNT_TRANSACTIONS_CHECKED: 0
COUNT_CONFLICTS_DETECTED: 0
COUNT_TRANSACTIONS_ROWS_VALIDATING: 0
TRANSACTIONS_COMMITTED_ALL_MEMBERS: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-12
LAST_CONFLICT_FREE_TRANSACTION:

root@localhost:(none) 04:47:07>select * from performance_schema.replication_group_member_stats \G;
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
VIEW_ID: 15162633783937117:7
MEMBER_ID: e87b5168-fc15-11e7-9fcf-000c29879d51
COUNT_TRANSACTIONS_IN_QUEUE: 0
COUNT_TRANSACTIONS_CHECKED: 0
COUNT_CONFLICTS_DETECTED: 0
COUNT_TRANSACTIONS_ROWS_VALIDATING: 0
TRANSACTIONS_COMMITTED_ALL_MEMBERS: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-12
LAST_CONFLICT_FREE_TRANSACTION:


查看replication连接status:

select * from performance_schema.replication_connection_status \G ;
root@localhost:(none) 04:58:01>select * from performance_schema.replication_connection_status \G ;
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
GROUP_NAME: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
SOURCE_UUID: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
THREAD_ID: NULL
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-5:8-15
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
*************************** 2. row ***************************
CHANNEL_NAME: group_replication_recovery
GROUP_NAME:
SOURCE_UUID:
THREAD_ID: NULL
SERVICE_STATE: OFF
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET:
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00

root@localhost:tt 04:53:51>select * from performance_schema.replication_connection_status  \G:
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
GROUP_NAME: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
SOURCE_UUID: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
THREAD_ID: NULL
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-14
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
*************************** 2. row ***************************
CHANNEL_NAME: group_replication_recovery
GROUP_NAME:
SOURCE_UUID:
THREAD_ID: NULL
SERVICE_STATE: OFF
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET:
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00

root@localhost:tt 04:53:10>select * from performance_schema.replication_connection_status  \G ;
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
GROUP_NAME: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
SOURCE_UUID: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
THREAD_ID: NULL
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-14
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
*************************** 2. row ***************************
CHANNEL_NAME: group_replication_recovery
GROUP_NAME:
SOURCE_UUID:
THREAD_ID: NULL
SERVICE_STATE: OFF
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET:
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00


查看replicaton的applier的状态:

select * from performance_schema.replication_applier_status \G ;
root@localhost:(none) 04:59:09>select * from performance_schema.replication_applier_status ;
+----------------------------+---------------+-----------------+----------------------------+
| CHANNEL_NAME               | SERVICE_STATE | REMAINING_DELAY | COUNT_TRANSACTIONS_RETRIES |
+----------------------------+---------------+-----------------+----------------------------+
| group_replication_applier  | ON            |            NULL |                          0 |
| group_replication_recovery | OFF           |            NULL |                          0 |
+----------------------------+---------------+-----------------+----------------------------+

root@localhost:tt 04:59:16>select * from performance_schema.replication_applier_status ;
+----------------------------+---------------+-----------------+----------------------------+
| CHANNEL_NAME               | SERVICE_STATE | REMAINING_DELAY | COUNT_TRANSACTIONS_RETRIES |
+----------------------------+---------------+-----------------+----------------------------+
| group_replication_applier  | ON            |            NULL |                          0 |
| group_replication_recovery | OFF           |            NULL |                          0 |
+----------------------------+---------------+-----------------+----------------------------+

root@localhost:tt 04:54:03>select * from performance_schema.replication_applier_status ;
+----------------------------+---------------+-----------------+----------------------------+
| CHANNEL_NAME               | SERVICE_STATE | REMAINING_DELAY | COUNT_TRANSACTIONS_RETRIES |
+----------------------------+---------------+-----------------+----------------------------+
| group_replication_applier  | ON            |            NULL |                          0 |
| group_replication_recovery | OFF           |            NULL |                          0 |
+----------------------------+---------------+-----------------+----------------------------+


查看哪个是primary


select *from  performance_schema.replication_group_members where member_id =(select variable_value from performance_schema.global_status WHERE VARIABLE_NAME= 'group_replication_primary_member');


五、重置操作:

a,重新声明组操作(关闭其它的库)

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;


其它的组上:

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;


b.允许当前server加入group,即便有事务不存在当前group:

group_replication_allow_local_disjoint_gtids_join = true


c.uninstall plugin:

UNINSTALL PLUGIN group_replication

问题:

1.表必须有主键(创建无主键的表不会报错,但在插入数据的时候会抛出:ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.)

create table t ( t int primary key)

2.

2018-01-16T12:10:56.431527Z 0 [ERROR] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: b376058d-5762-11e7-baa0-000c29e6b568:1-2 > Group transactions: '
2018-01-16T12:10:56.431608Z 0 [ERROR] Plugin group_replication reported: 'The member contains transactions not present in the group. The member will now exit the group.'
2018-01-16T12:10:56.431624Z 0 [Note] Plugin group_replication reported: 'To force this member into the group you can use the group_replication_allow_local_disjoint_gtids_join option'


group_replication_allow_local_disjoint_gtids_join = true 


原因是因为建库时只是复制数据库到其它节点服务器上的,没有修改datadir下的auto.cnf文件里的uuid。把各uuid改成不一样就可以正常加入组,并正常的复制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: