由于主机有限,现在采用docker来快速搭建。基于centos7

  1. 安装docker ```bash yum -y update

yum install -y docker

  1. 2. 下载mysql的镜像
  2. ```bash
  3. docker pull mysql:5.7
  1. 分别启动两个mysql容器 来当做主和从节点 ```bash 主节点 docker run -p 3339:3306 —name jxc-mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 从节点 docker run -p 3340:3306 —name jxc-mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  1. 4.进入主节点 所在的容器 进行配置
  2. ```bash
  3. 进入主节点 所在的容器
  4. docker exec -it jxc-mysql-master /bin/bash

5.在主节点的容器内,切换到/etc/mysql目录下

  1. cd /etc/mysql
  1. 在主节点的容器内, 先更新源 ,为了安装vim
    1. apt-get update
    2. apt-get install vim
    7.在主节点的容器内,编辑配置文件 ```bash vi my.cnf

在my.cnf中添加如下配置: [mysqld]

同一局域网内注意要唯一

server-id=100

开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin

  1. 8. 在主节点的容器内,重新启动下mysql
  2. ```bash
  3. service mysql restart
  1. 重启了mysql后,会导致容器退出,所以需要重新启动容器

    1. docker start jxc-mysql-master
  2. 重启容器后,需要再进入主节点的容器内,进入mysql的命令行交互界面

    1. 先进入容器
    2. docker exec -it jxc-mysql-master /bin/bash
    3. 进入mysql的命令行交互界面
    4. mysql -u root -p
  3. 创建主从同步的账号和权限

    1. 创建账号
    2. CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
    3. 创建权限
    4. GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

    获取主节点的binlog的二进制文件

    1. show master status;

    如下的截图
    image.png
    注意这里的File名称和Position的值 这个值会配置给从节点

12.到此主节点的配置完毕,主节点已经开启了bin-log日志,下面开始配置从节点

  1. docker exec -it jxc-mysql-salve /bin/bash
  1. 然后也需要修改配置文件,也需要安装vim,需要重复第6步
  2. 修改配置文件 从节点的重点是需要配置中继日志 ```bash vi my.cnf

添加如下配置 [mysqld]

设置server_id,注意要唯一

server-id=101

开启二进制日志功能,以备Slave作为其它Slave的Master时使用

log-bin=mysql-slave-bin

relay_log配置中继日志

relay_log=edu-mysql-relay-bin

  1. 15. 重复8 9 10 这三步 重新进入子节点
  2. 15. 获取docker里面某个容器的ip 这里是获取主容器的ip
  3. ```bash
  4. docker inspect 容器名称|容器id
  5. 比如
  6. docker inspect jxc-mysql-master
  7. 或者
  8. docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
  9. 比如
  10. docker inspect --format='{{.NetworkSettings.IPAddress}}' jxc-mysql-master

image.png

  1. 在从节点配置主节点的配置信息 注意master_host是主节点的ip master_port是主节点的mysql的端口,是容器的端口 master_log_file 和 master_log_pos 是在主节点的获取到的值 ```bash change master to master_host=’172.17.0.3’, master_user=’slave’, master_password=’123456’, master_port=3306, master_log_file=’mysql-bin.000007’, master_log_pos= 154, master_connect_retry=30;
  1. 18. 在从节点 mysql 的互动命令行 开启主从配置
  2. ```bash
  3. start slave;
  4. 查看主从状态
  5. show slave status \G;

image.png