群组复制-单主模式实战篇

自定义jdbc客户端兼容群组模式
直接进入正题
下载mysql5.7+,进入安装目录

[root@localhost mysql]# cd /usr/local/mysql

[root@localhost mysql]# ll
总用量 48
drwxr-xr-x.  2 mysql mysql  4096 11月  2 09:59 bin
-rw-r--r--.  1 mysql mysql 17987 11月  2 09:59 COPYING
drwxr-xr-x.  5 mysql mysql    36 11月  2 14:12 data
drwxr-xr-x.  2 mysql mysql    55 11月  2 09:59 docs
drwxr-xr-x.  3 mysql mysql  4096 11月  2 09:59 include
drwxr-xr-x.  5 mysql mysql   230 11月  2 09:59 lib
drwxr-xr-x.  4 mysql mysql    30 11月  2 09:59 man
-rw-r--r--.  1 mysql mysql  2478 11月  2 09:59 README
srwxrwxrwx.  1 mysql mysql     0 11月  2 15:11 s1.sock
-rw-------.  1 mysql mysql     6 11月  2 15:11 s1.sock.lock
srwxrwxrwx.  1 mysql mysql     0 11月  2 15:16 s2.sock
-rw-------.  1 mysql mysql     6 11月  2 15:16 s2.sock.lock
srwxrwxrwx.  1 mysql mysql     0 11月  2 15:25 s3.sock
-rw-------.  1 mysql mysql     6 11月  2 15:25 s3.sock.lock
drwxr-xr-x. 28 mysql mysql  4096 11月  2 09:59 share
drwxr-xr-x.  2 mysql mysql    90 11月  2 09:59 support-files

[root@localhost mysql] mkdir data/s1 s2 s3

第一个实例(主)

初始化data数据,密码为空

./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/s1

创建conf配置
vi data/s1/s1.cnf

[mysqld]
bind-address=0.0.0.0
datadir=/usr/local/mysql/data/s1
port=24801
basedir=/usr/local/mysql
socket=/usr/local/mysql/s1.sock

#服务id,全局唯一
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

#本机ip地址
report_host=192.168.32.128
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
#群组复制属性,特别注意:group_replication_local_address的端口并不是mysql绑定的外部端口,是group独有的端口,用于组内节点的内部通信。
loose-group_replication_local_address= "127.0.0.1:24901"
loose-group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
#群组复制主节点引导默认关闭,在启动后通过全局变量动态设置
loose-group_replication_bootstrap_group=off

切换组账户,启动实例

su mysql
./mysqld --defaults-file=../data/s1/s1.cnf &

ok后进入shell

./mysql -P 24801 -uroot -p -S /usr/local/mysql/s1.sock

shell下逐步执行

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'rpl_user';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_user' FOR CHANNEL 'group_replication_recovery';
安装插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
查看插件
SHOW PLUGINS;

#设置主节点引导开关(单主模式只允许有一台设置该属性)
SET GLOBAL group_replication_bootstrap_group=ON;
START/STOP GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
查看运行状态
SELECT * FROM performance_schema.replication_group_members;

+---------------------------+--------------------------------------+-------------+-------------+---------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE  |
+---------------------------+--------------------------------------+-------------+-------------+---------------+
| group_replication_applier | ce9be252-2b71-11e6-b8f4-00212844f856 | myhost      |       24801 | ONLINE        |
+---------------------------+--------------------------------------+-------------+-------------+---------------+

新建测试数据
mysql> CREATE DATABASE test;
mysql> USE test;
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
mysql> INSERT INTO t1 VALUES (1, 'Luis');

mysql> SELECT * FROM t1;
+----+------+
| c1 | c2   |
+----+------+
|  1 | Luis |
+----+------+

mysql> SHOW BINLOG EVENTS;
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                                                               |
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------+
| binlog.000001 |   4 | Format_desc    |         1 |         123 | Server ver: 5.7.19-gr080-log, Binlog ver: 4                        |
| binlog.000001 | 123 | Previous_gtids |         1 |         150 |                                                                    |
| binlog.000001 | 150 | Gtid           |         1 |         211 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1'  |
| binlog.000001 | 211 | Query          |         1 |         270 | BEGIN                                                              |
| binlog.000001 | 270 | View_change    |         1 |         369 | view_id=14724817264259180:1                                        |
| binlog.000001 | 369 | Query          |         1 |         434 | COMMIT                                                             |
| binlog.000001 | 434 | Gtid           |         1 |         495 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:2'  |
| binlog.000001 | 495 | Query          |         1 |         585 | CREATE DATABASE test                                               |
| binlog.000001 | 585 | Gtid           |         1 |         646 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:3'  |
| binlog.000001 | 646 | Query          |         1 |         770 | use `test`; CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL) |
| binlog.000001 | 770 | Gtid           |         1 |         831 | SET @@SESSION.GTID_NEXT= 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:4'  |
| binlog.000001 | 831 | Query          |         1 |         899 | BEGIN                                                              |
| binlog.000001 | 899 | Table_map      |         1 |         942 | table_id: 108 (test.t1)                                            |
| binlog.000001 | 942 | Write_rows     |         1 |         984 | table_id: 108 flags: STMT_END_F                                    |
| binlog.000001 | 984 | Xid            |         1 |        1011 | COMMIT /* xid=38 */                                                |
+---------------+-----+----------------+-----------+-------------+--------------------------------------------------------------------+

第一个实例(主)部署完成,等待后续节点加入

第二个cnf(过程同第一个)

[mysqld]
datadir=/usr/local/mysql/data/s2
port=24802
basedir=/usr/local/mysql
socket=/usr/local/mysql/s2.sock

server_id=2
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

report_host=192.168.32.128
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= "127.0.0.1:24902"
loose-group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group= off

启动完成后进入shell,依次添加

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_user' FOR CHANNEL 'group_replication_recovery';
安装插件	
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
启动插件
START GROUP_REPLICATION;

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+---------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE  |
+---------------------------+--------------------------------------+-------------+-------------+---------------+
| group_replication_applier | 395409e1-6dfa-11e6-970b-00212844f856 | myhost      |       24801 | ONLINE        |
| group_replication_applier | ac39f1e6-6dfa-11e6-a69d-00212844f856 | myhost      |       24802 | ONLINE        |
+---------------------------+--------------------------------------+-------------+-------------+---------------+

第三个实例(过程同第一个)

[mysqld]
datadir=/usr/local/mysql/data/s3
port=24803
basedir=/usr/local/mysql
socket=/usr/local/mysql/s3.sock

server_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

report_host=192.168.32.128

#
### Group Replication configuration
#
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= "127.0.0.1:24903"
loose-group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group= off

启动完成后进入shell,依次添加

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_user' FOR CHANNEL 'group_replication_recovery';
安装插件	
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
启动插件
START GROUP_REPLICATION;

mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+---------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE  |
+---------------------------+--------------------------------------+-------------+-------------+---------------+
| group_replication_applier | 395409e1-6dfa-11e6-970b-00212844f856 | myhost      |       24801 | ONLINE        |
| group_replication_applier | 7eb217ff-6df3-11e6-966c-00212844f856 | myhost      |       24803 | ONLINE        |
| group_replication_applier | ac39f1e6-6dfa-11e6-a69d-00212844f856 | myhost      |       24802 | ONLINE        |
+---------------------------+--------------------------------------+-------------+-------------+---------------+

至此单主模式(三个节点)部署完成

各实例分配root帐号

CREATE USER root@'%' IDENTIFIED BY 'root';
GRANT all ON *.* TO root@'%';

各实例都可以执行查询当前主信息:

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');

猜你喜欢

转载自blog.csdn.net/lmx1989219/article/details/83987191
今日推荐