December 12 2017

mysql mgr搭建

node1 : ssh root@10.18.19.55

node2 : ssh root@10.18.19.233

node3 : ssh root@10.18.19.234

 

Server version: 8.0.3-rc-log MySQL Community Server (GPL)

 

#binlog binlog配置,Group Replication是要根据GTID来进行同步的,所以需要开启GTID

server_id= 1  #启用全局事物标识符  不同的节点的这个数据不同

gtid_mode=ON

enforce_gtid_consistency=ON

log-slave-updates=1

log-bin=/u01/my3306/log/mysql-bin

binlog_format             = row

master_info_repository    = table #复制元数据存入系统表

relay_log_info_repository = table #复制元数据存入系统表

binlog_checksum= none #禁用二进制日志事件校验和

 

#group replication

#server必须为每个事物收集写集合,使用XXHASH64哈希算法将其编码为散列

transaction_write_set_extraction=XXHASH64

loose-group_replication_group_name=”bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb”

#插件在server启动时不自动启动组复制

loose-group_replication_start_on_boot=off

#使用10.18.19.55:33061接受来自组中其他成员的传入连接 不同的节点的这个数据不同

loose-group_replication_local_address= “10.18.19.55:33061”

loose-group_replication_group_seeds= “10.18.19.55:33061,10.18.19.233:33061,10.18.19.234:33061”

#插件不自动引导组

loose-group_replication_bootstrap_group=off

###本次搭建的是mutil_mode

loose-group_replication_single_primary_mode=FALSE

loose-group_replication_enforce_update_everywhere_checks= TRUE

slave_preserve_commit_order=on

slave_parallel_type=LOGICAL_CLOCK

 

这个时候不管在哪一节点都是这样子的

dbadmin@(none) 02:42:16>c

+—————————+———–+————-+————-+————–+————-+—————-+

| CHANNEL_NAME              | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |

+—————————+———–+————-+————-+————–+————-+—————-+

| group_replication_applier |           |             |        NULL | OFFLINE      |             |                |

+—————————+———–+————-+————-+————–+————-+—————-+

1 row in set (0.00 sec)

 

 

 

查看mgr的插件有没有安装

dbadmin@(none) 02:46:01>select * from INFORMATION_SCHEMA.PLUGINS  where PLUGIN_NAME like ‘%group_replication%’;

+——————-+—————-+—————+——————-+———————+———————-+————————+—————+—————————+—————-+————-+

| PLUGIN_NAME       | PLUGIN_VERSION | PLUGIN_STATUS | PLUGIN_TYPE       | PLUGIN_TYPE_VERSION | PLUGIN_LIBRARY       | PLUGIN_LIBRARY_VERSION | PLUGIN_AUTHOR | PLUGIN_DESCRIPTION        | PLUGIN_LICENSE | LOAD_OPTION |

+——————-+—————-+—————+——————-+———————+———————-+————————+—————+—————————+—————-+————-+

| group_replication | 1.1            | ACTIVE        | GROUP REPLICATION | 1.2                 | group_replication.so | 1.8                    | ORACLE        | Group Replication (1.1.0) | GPL            | ON          |

+——————-+—————-+—————+——————-+———————+———————-+————————+—————+—————————+—————-+————-+

1 row in set (0.00 sec)

如果没有 就安装复制组插件

mysql> install plugin group_replication soname ‘group_replication.so’;

 

 

 

执行change master 认主

我们以55为主 在55上执行

dbadmin@(none) 02:48:30>show master status\G

*************************** 1. row ***************************

File: mysql-bin.000009

Position: 191

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set: 0d1a2f17-c2ce-11e7-a306-0050568f6a9d:1-40

1 row in set (0.00 sec)

 

 

然后在两个从节点上执行:

 

set global gtid_purged = ‘0d1a2f17-c2ce-11e7-a306-0050568f6a9d:1-40′;

change master to master_user=’slave’,master_password=’slave’ for channel ‘group_replication_recovery’;

 

 

 

配置引导组,此引导应仅有单个server独立完成,该server启动组并且只启动一次 在55上执行

set global group_replication_bootstrap_group=on;

 

 

然后我们可以把这个group起动起来如果报错的话可以按下面的情况进行解决

start group_replication;

 

2017-12-12T06:54:56.799275Z 9 [ERROR] Plugin group_replication reported: ‘In order to use parallel applier on Group Replication, parameter slave-parallel-type must be set to ‘LOGICAL_CLOCK’.’

 

解决:

set global slave_parallel_type=LOGICAL_CLOCK;

set global slave_preserve_commit_order=on;

 

 

2017-12-12T06:57:46.403624Z 9 [Warning] Plugin group_replication reported: ‘Group Replication requires slave-preserve-commit-order to be set to ON when using more than 1 applier threads.’

解决:

set global slave_preserve_commit_order=on;

 

 

— 设置group_replication_bootstrap_group为ON是为了标示以后加入集群的服务器以这台服务器为基准,以后加入的就不需要设置。

— 作为首个节点启动mgr集群

set global group_replication_bootstrap_group=ON;

start group_replication;

set global group_replication_bootstrap_group=OFF;

 

在其他的节点修改主从关系

change master to master_user=’slave’,master_password=’slave’ for channel ‘group_replication_recovery’;

然后起动:

dbadmin@(none) 04:03:48>start group_replication;

Query OK, 0 rows affected (3.33 sec)

 

dbadmin@(none) 04:03:56>SELECT * FROM performance_schema.`replication_group_members`;

+—————————+————————————–+————–+————-+————–+————-+—————-+

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST  | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |

+—————————+————————————–+————–+————-+————–+————-+—————-+

| group_replication_applier | 0d1a2f17-c2ce-11e7-a306-0050568f6233 | 10.18.19.233 |        3306 | ONLINE       | PRIMARY     | 8.0.3          |

| group_replication_applier | 0d1a2f17-c2ce-11e7-a306-0050568f6234 | 10.18.19.234 |        3306 | ONLINE       | PRIMARY     | 8.0.3          |

| group_replication_applier | 0d1a2f17-c2ce-11e7-a306-0050568f6a55 | 10.18.19.55  |        3306 | ONLINE       | PRIMARY     | 8.0.3          |

+—————————+————————————–+————–+————-+————–+————-+—————-+

3 rows in set (0.00 sec)

 

查看log可以发现:

2017-12-12T06:59:11.633983Z 9 [Note] Plugin group_replication reported: ‘auto_increment_increment is set to 7’

2017-12-12T06:59:11.633996Z 9 [Note] Plugin group_replication reported: ‘auto_increment_offset is set to 551’

 

 

 

过程中还有一个很傻的错误

 

2017-12-12T07:18:11.082985Z 0 [Note] Plugin group_replication reported: ‘Starting group replication recovery with view_id 15130630110805550:2’

2017-12-12T07:18:12.083407Z 20 [Note] Plugin group_replication reported: ‘Only one server alive. Declaring this server as online within the replication group’

2017-12-12T07:18:12.084666Z 0 [Note] Plugin group_replication reported: ‘This server was declared online within the replication group’

 

 

这个就是当我起动从节点的时候 主的就挂掉mgr 只有一个online 原因是因为我是克隆的机器 所以uuid没有改

 

vi /u01/my3306/data/auto.cnf

改成不一样的值就可以了

 

 



Copyright 2019. All rights reserved.

Posted 2017年12月12日 by ucjmh in category "mysql

Leave a Reply

Your email address will not be published. Required fields are marked *