阅读 141

docker搭建mysql5.7主从

本次搭建环境

Docker 18.06,1-ce
Centos7
1.拉取mysql5.7镜像
docker pull mysql:5.7
复制代码
2.开启主从mysql需要开启bin-log日志,默认没有开启,需要创建mysql配置文件my.conf挂载到容器开启此功能
my.conf内容如下,从节点配置只需要更改server-id
 [mysqld]
 server-id = 1                              # 每一个节点id在Mysql集群中唯一
 log-bin = /var/log/mysql/mysql-bin.log     # bin-log日志存放位置 
 log-bin-index = binlog.index
 
#[Err]1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains     #nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally  #dependent on columns in GROUP BY clause; this is incompatible with  #sql_mode=only_full_group_by

# 出现上述错误,需要修改sql_mode
 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
复制代码
3.运行主节点
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /home/mysql/mastar-data:/var/lib/mysql -v /home/mysql/master-conf/my.cnf:/etc/mysql/my.cnf --name mysql-master {mysql镜像id}
复制代码

-d 后台运行

-p 端口映射 主机端口:容器端口

-e 设置环境变量,myql5.7初始化必须指定登录密码

-v 挂载 主机路径:容器路径,mysql5.7默认存储位置/var/lib/mysql

--name 指定容器名称

4.进入master容器内,并且登录容器中的mysql
docker exec -it {容器id} /bin/bash

mysql -u root -p
复制代码
5.查看主节点信息
show master status;
复制代码
显示如下:

image-20210604235738279.png

记录 File 字段的值,稍后从节点连接主节点需要指定该日志
6.运行从节点
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -v /home/mysql/slave-data:/var/lib/mysql -v /home/mysql/slave-conf/my.cnf:/etc/mysql/my.cnf --name mysql-slave 2c9028880e58
复制代码
和mater节点类似,进入slave容器内部,并且登录mysql
容器内执行如下命令连接master,并且开启slave模式
CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0;

start slave; 
复制代码

MASTER_HOST 主节点IP

MASTER_USER 主节点用户名

MASTER_PASSWORD 主节点密码

MASTER_LOG_FILE 主节点bin-log文件名

MASTER_LOG_POS 开始游标,mysql会自动匹配

7.容器内查看slave状态
 show slave status\G;
复制代码
如下图则创建关联成功

image-20210605000943511.png

文章分类
后端
文章标签