1、环境搭建
1.1、 拉取mysql5.7.13 : docker pull mysql:5.7.13 1.2、启动mysql,端口分别是3311,3312 sudo docker run -p 3311:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13 sudo docker run -p 3312:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13
2、配置主节点
2.1、进入主节点,编辑配置文件: 1) sudo docker exec -it mysql-master /bin/bash (mysql-master:要配置mysql容器的名称) 2.2、更改成国内源: 1) cd /etc/apt 2) mv sources.list sources.list.bak 3) echo deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse > sources.list 2.3、更新并安装vim: 1) apt-get update 2) apt-get install vim 2.4、配置修改 1) vi /etc/mysql/my.cnf 找到[mysqld] 2) 输入: server-id=101 # 唯一的编号 log-bin=mysql-bin # 这个是关键配置项 2.5、重启 1) service mysql restart 2) sudo docker restart mysql-master
3、配置从节点
3.1、进入从节点、编辑配置文件 1) sudo docker exec -it mysql-slave /bin/bash 3.2、更改成国内源 1) cd /etc/apt 2) mv sources.list sources.list.bak 3) echo deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse > sources.list 3.3、更新并安装vim 1) apt-get update 2) apt-get install vim 3.4、配置修改 1) vi /etc/mysql/my.cnf 找到[mysqld] 2) 输入: server-id=102 # 唯一的编号 3.5、重启 1) service mysql restart 2) sudo docker restart mysql-slave
4、 链接主节点和从节点
4.1、主节点: 通过docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master 命令查看主节点ip sudo docker exec -it mysql-master /bin/bash,进入主节点 mysql -u root -p输入密码123456,执行show master status;如图:复制File和Postion的值 4.2、从节点: sudo docker exec -it mysql-slave /bin/bash,进入从节点 mysql -u root -p输入密码123456,进入容器,执行下面sql语句: change master to master_host='***', master_port=3306, master_user='root', master_password='123456', master_log_file='****', master_log_pos= ***; sql语句配置参考表格:
master_host | 主节点的ip地址,使用命令可查看主节点ip |
master_port | mysql的端口号,不是对外映射的端口号 |
master_user | mysql中的用户,要有权限,我直接使用了root,也可以新建用户来使用 |
master_password | 用于同步的mysql帐户密码 |
master_log_file | 用于同步的文件,就是从主节点查询到的File,这里是mysql-bin.000002 |
master_log_pos | binlog文件开始同步的位置, 就是从主节点查询到的Postion,这里是154 |
4.2、从节点中:MySQL终端执行show slave status \G;来查看主从同步状态。可以看到两个属性slave_io_running和slave_sql_running都是no,也就是关闭状态。 在MySQL终端执行start slave;执行后再次执行show slave status \G;命令可以看到两个属性都变成了yes,则说明主从复制已经开启
5、备份节点
5.1、先按照<2、配置>配置一下 5.2、进入从节点容器,配置下从节点的my.cnf,配置内容如下: 放在server-id后面 log-bin=mysql-slave-bin log_slave_updates=1 重新启动service mysql restart,然后重启容器docker restart mysql-slave1 进入从节点mysql,运行show master status;复制File和Postion的值 5.3、进入备份节点容器,vi /etc/mysql/my.cnf,配置server-id=103,重新启动service mysql restart,然后重启容器docker restart mysql-slave2 5.4、change master to master_host='172.17.0.6', master_port=3306, master_user='root', master_password='123456', master_log_file='mysql-slave-bin.000001', master_log_pos= 154; 5.5、 show slave status G; 然后 start slave; 查看下两个属性slave_io_running和slave_sql_running是否为yes
来源:oschina
链接:https://my.oschina.net/u/3678587/blog/4291773