= Group Replicate using swarm network only = Ref [https://github.com/wagnerjfr/mysql-group-replication-binaries-docker here] 1. build image from Dockerfile with tag {{{ $ docker build -t mysqlubuntu . }}} 2. create docker swarm network for attachable {{{ $ docker network create --driver overlay --attachable group1 }}} 3. download mysql-8.0.11 from [https://downloads.mysql.com/archives/community/ 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 }}} 4. access to node1 with {{{ $ docker exec -it node1 ./bin/mysql -uroot --socket=/tmp/mysql.0.sock }}} 5. 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; }}} 6. 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 }}} 7. 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; }}} 8. 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; }}} 9. check status all node with mysql command. {{{ mysql> SELECT * FROM performance_schema.replication_group_members; }}} 10. create database and table need ref [https://lefred.be/content/mysql-group-replication-and-table-design/ here] * InnoDB Storage Engine: data must be stored in the InnoDB transactional storage engine. * Primary Keys: every table that is to be replicated by the group must have an explicit primary key defined. {{{ mysql> create table test_tbl_nopk_uniq_notnull (id int not null unique key, name varchar(10)); mysql> insert into test_tbl_nopk_uniq_notnull values (1,'lefred'); Query OK, 1 row affected (0.01 sec) }}}