wiki:GROUPReplicate2

Version 3 (modified by krit, 2 years ago) (diff)

--

Group Replicate using swarm network only

Ref here

  1. build image from Dockerfile with tag
    $ docker build -t mysqlubuntu .
    
  1. create docker swarm network for attachable
    $ docker network create --driver overlay --attachable group1
    
  1. download mysql-8.0.11 from here select Linux - Generic (glibc 2.12) (x86, 64-bit), TAR. Then unzip and place in folder. In this test, we put in /home/ubuntu/GR_2/mysql-8.0.11. We start.sh script in this attach file.
    $ chmod -R 777 /home/ubuntu/GR_2/mysql-8.0.11
    $ ./start.sh
    
  1. access to node1 with
    $ docker exec -it node1 ./bin/mysql -uroot --socket=/tmp/mysql.0.sock
    
  1. set node1 as primary node
    create user 'repl'@'%';
    GRANT ALL  ON * . * TO repl@'%';
    flush privileges;
    SET @@GLOBAL.group_replication_group_name='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee';
    SET @@GLOBAL.group_replication_local_address='node1:6606';
    SET @@GLOBAL.group_replication_group_seeds='node1:6606,node2:6606,node3:6606';
    SET @@GLOBAL.group_replication_bootstrap_group=1;
    change master to master_user='repl' for channel 'group_replication_recovery';
    START GROUP_REPLICATION;
    SET @@GLOBAL.group_replication_bootstrap_group=0;
    SELECT * FROM performance_schema.replication_group_members;
    
  1. start node2 with ./start.sh, pls make change on --name node2, --hostname node2, -e DATADIR="d2", -e SERVERID=2. Then, exec on node2
    $ docker exec -it node2 ./bin/mysql -uroot --socket=/tmp/mysql.0.sock
    
  1. set group replicate on node2
    SET @@GLOBAL.group_replication_group_name='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee';
    SET @@GLOBAL.group_replication_local_address='node2:6606';
    SET @@GLOBAL.group_replication_group_seeds='node1:6606,node2:6606,node3:6606';
    SET @@GLOBAL.group_replication_bootstrap_group=0;
    SET @@global.group_replication_recovery_retry_count=5;
    change master to master_user='repl' for channel 'group_replication_recovery';
    START GROUP_REPLICATION;
    SELECT * FROM performance_schema.replication_group_members;
    
  1. start node3 same as in step 6, 7, then set group replicate on node3
    SET @@GLOBAL.group_replication_group_name='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee';
    SET @@GLOBAL.group_replication_local_address='node3:6606';
    SET @@GLOBAL.group_replication_group_seeds='node1:6606,node2:6606,node3:6606';
    SET @@GLOBAL.group_replication_bootstrap_group=0;
    SET @@global.group_replication_recovery_retry_count=5;
    change master to master_user='repl' for channel 'group_replication_recovery';
    START GROUP_REPLICATION;
    SELECT * FROM performance_schema.replication_group_members;
    
  1. check status all node with mysql command.
    mysql> SELECT * FROM performance_schema.replication_group_members;
    

Attachments (3)

Download all attachments as: .zip