docker-mysql-master-slave
docker-mysql-master-slave copied to clipboard
mysql 8
i tried it and got a failure. In short, i can't even start the master with your config file. do you have an advice to make it run with mysql 8 ?
this is a sample script
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 = /var/log/mysql/mysql-bin.log
binlog_format = ROW
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 \
-d mysql
Hi @vbabak (and @rafipiccolo)
First, thanks for your effort.
I've got problems with mysql 5.7, so I migrated your setup to use v8.
If you are interested, I can open a PR.
pull request or not i'd like to see a working script for mysql 8 :)
In the end what i want is a script to start a mysql master slave + do a rolling upgrade
It's not that easy, after loading up the two instances with docker, they should be configured properly. There are some little differences in syntax between mysql 5 & 8, but the concept is the same.
You can find infos here: https://developpaper.com/docker-builds-mysql-8-master-slave/
Hi @vbabak (and @rafipiccolo)
First, thanks for your effort.
I've got problems with mysql 5.7, so I migrated your setup to use v8.
If you are interested, I can open a PR.
That would be great. @funder7 do you have a fork with your setup?
Hi @vasconde, I'll try to create one in the next days!
ok, i have a working sequence of command to create a master + a slave + a test
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 / set correct master_host master_port
echo "change master to master_host='EXTERNAL MYSQL HOST',master_port=EXTERNALMYSQLPORT,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