环境&版本

MySQL版本:5.7, 在官方镜像上自己调整了下后重新docker commit出来的镜像

  1. docker commit a404c6c174a2 mine/mysql:v2
  2. docker run --name mysqlMaster1 -p 3307:3306 -e MYSQL_LOG_CONSOLE=true -e MYSQL_ROOT_PASSWORD=lagou123456 -d mine/mysql:v2
  3. docker run --name mysqlMaster2 -p 3308:3306 -e MYSQL_LOG_CONSOLE=true -e MYSQL_ROOT_PASSWORD=lagou123456 -d mine/mysql:v2
  4. docker run --name mysqlSlave1 -p 3309:3306 -e MYSQL_LOG_CONSOLE=true -e MYSQL_ROOT_PASSWORD=lagou123456 -d mine/mysql:v2
  5. docker run --name mysqlSlave2 -p 3310:3306 -e MYSQL_LOG_CONSOLE=true -e MYSQL_ROOT_PASSWORD=lagou123456 -d mine/mysql:v2
  6. docker run --name mysqlSlave3 -p 3311:3306 -e MYSQL_LOG_CONSOLE=true -e MYSQL_ROOT_PASSWORD=lagou123456 -d mine/mysql:v2
  7. docker run --name mysqlSlave4 -p 3312:3306 -e MYSQL_LOG_CONSOLE=true -e MYSQL_ROOT_PASSWORD=lagou123456 -d mine/mysql:v2

修改每一台的/etc/mysql/my.cnf(特别是server-id),重启

  1. vim /etc/mysql/my.cnf
  2. [mysqld]
  3. log-bin=mysql-bin
  4. server-id=1
  5. docker restart mysqlMaster2

设置主从关系

  1. mysql -uroot -plagou123456
  2. #master
  3. create user 'repl'@'%' identified by 'lagou123456';
  4. grant REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by 'lagou123456';
  5. flush privileges;
  6. #slave
  7. CHANGE MASTER TO MASTER_HOST='172.17.0.5', MASTER_USER='repl',MASTER_PASSWORD='lagou123456',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=834;
  8. start slave;
  9. show slave status \G;

应用相关

只需要配一下shardingjdbc的datasource就可以了,上层的orm框架可以随便选