1.06-基于Docker的MySQL主从复制环境搭建

南笙酒味 提交于 2020-07-29 02:09:25

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!