via docker containers and docker-compose
Running as default compose files:
docker-compose up --build
Config for all mysql services (8.x version) (it's identical for all of them except "--loose-group-replication-local-address={ some uniq name }:6606" command) located in /configs/my-cnf file (with comments).
!! Be sure that you're running first master node than slaves !!
setup master node (run next commands in mysql. Explanation of this procedure located in scripts/my-init.sql):
CALL set_as_master;
Which call next commands:
SET @@GLOBAL.group_replication_bootstrap_group=1;
create user IF NOT EXISTS 'repl'@'%';
GRANT REPLICATION SLAVE ON *.* TO repl@'%';
flush privileges;
change master to master_user='root' for channel 'group_replication_recovery';
START GROUP_REPLICATION;
and the next command
SELECT * FROM performance_schema.replication_group_members;
should return next result:
group_replication_applier 74f3c403-f3fe-11ea-a955-0242ac130003 alpha 3306 ONLINE PRIMARY 8.0.21
setup slave node (run next commands in mysql. Explanation of this procedure located in scripts/my-init.sql):
CALL set_as_slave;
Which call next commands:
change master to master_user='repl' for channel 'group_replication_recovery';
START GROUP_REPLICATION;
SET @@global.read_only=1;
and the next command
SELECT * FROM performance_schema.replication_group_members;
should return next result:
group_replication_applier 74f3c403-f3fe-11ea-a955-0242ac130003 alpha 3306 ONLINE PRIMARY 8.0.21
group_replication_applier 7500e656-f3fe-11ea-8b39-0242ac130002 beta 3306 ONLINE SECONDARY 8.0.21
In this implementation works auto failover. So if master will go down or becoma unreachable, some of the slaves will become the master.