https://github.com/rafipiccolo/docker-mysql-master-slave/blob/master/build.sh
docker rm -f mysql_master mysql_slave;
rm -rf /root/docker/mysql_slave /root/docker/mysql_master;
mkdir -p /root/docker/mysql_slave/data /root/docker/mysql_master/data;
cat - > /root/docker/mysql_master/myconfig.cnf <<EOF
[mysqld]
# skip-host-cache
# skip-name-resolve
server-id = 1
log_bin = mysql-bin
binlog_do_db = mydb
EOF
docker run -p 5506:3306 --name mysql_master \
-e MYSQL_ROOT_PASSWORD=xxxxxxxx \
-v /root/docker/mysql_master/data:/var/lib/mysql \
-v /root/docker/mysql_master/myconfig.cnf:/etc/mysql/conf.d/myconfig.cnf \
mysql
cat - > /root/docker/mysql_slave/myconfig.cnf <<EOF
[mysqld]
# skip-host-cache
# skip-name-resolve
server-id = 2
replicate-do-db = mydb
EOF
docker run -p 6606:3306 --name mysql_slave \
-e MYSQL_ROOT_PASSWORD=xxxxxxxx \
-v /root/docker/mysql_slave/data:/var/lib/mysql \
-v /root/docker/mysql_slave/myconfig.cnf:/etc/mysql/conf.d/myconfig.cnf \
mysql
# get status on the master
echo "show master status;" | docker exec -i mysql_master mysql -u root -pxxxxxxxx
# on slave : start following the master : adapt this command from the show master output
echo "change master to master_host='raphaelpiccolo.com',master_port=5506,master_user='root',master_password='xxxxxxxx',master_log_file='mysql-bin.000003',master_log_pos=157;" | docker exec -i mysql_slave mysql -u root -pxxxxxxxx;
echo "start slave;" | docker exec -i mysql_slave mysql -u root -pxxxxxxxx;
# get status on the slave
echo "show slave status \G;" | docker exec -i mysql_slave mysql -u root -pxxxxxxxx;
echo "show variables like 'server_id';" | docker exec -i mysql_slave mysql -u root -pxxxxxxxx;
# create data on master
echo "create database mydb;" | docker exec -i mysql_master mysql -u root -pxxxxxxxx
echo "create table t_user(id bigint primary key ,name varchar(200));" | docker exec -i mysql_master mysql -u root -pxxxxxxxx mydb
echo "insert into t_user values(1,'mindong');" | docker exec -i mysql_master mysql -u root -pxxxxxxxx mydb
# verify on slave
echo "select * from t_user;" | docker exec -i mysql_slave mysql -u root -pxxxxxxxx mydb