【原创】Docker配置MySQL5.7主从(亲测)

一、拉取 MySQL5.7 镜像
docker run -d --name mysql:5.7
二、创建数据存放路径、主配置文件
1、创建数据存放路径
mkdir -p /opt/docker-mysql-data/{mysql-master,mysql-slave}
2、创建主配置文件
  • Master 的主配置文件
cd /opt/docker-mysql-data
vim my-master.cnf

内容如下:

[mysqld]
user			= mysql
port			= 3306
pid-file		= /var/run/mysqld/mysqld.pid
socket			= /var/run/mysqld/mysqld.sock
lc-messages-dir = /usr/share/mysql

basedir			= /usr
datadir			= /var/lib/mysql
tmpdir			= /tmp

server-id	= 1 
log-bin		= mysql-bin 

default-storage-engine	= INNODB
character-set-server	= utf8
collation-server		= utf8_general_ci

#bind-address   = 127.0.0.1
#log-error  = /var/log/mysql/error.log

lower_case_table_names	= 1
explicit_defaults_for_timestamp	= true

symbolic-links	= 0
sql_mode		= NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock
default-character-set=utf8

[mysqld_safe]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
nice        = 0
  • Slave的主配置文件

直接复制Master的配置文件,只需要修改其中的 “server-id = 1” 为 “server-id = 2” 即可。

cp my-master.cnf my-slave.cnf
vim my-slave.cnf
三、运行容器
1、运行 Master 数据库
docker run -d \
           --name mysql-master \
           -e MYSQL_ROOT_PASSWORD=111111 \
           -v /opt/docker-mysql-data/mysql-master:/var/lib/mysql \
           -v /opt/docker-mysql-data/my-master.cnf:/etc/mysql/my.cnf \
           -p 3306:3306 \
           mysql:5.7
2、运行 Slave 数据库
docker run -d \
           --name mysql-slave \
           -e MYSQL_ROOT_PASSWORD=111111 \
           -v /opt/docker-mysql-data/mysql-slave:/var/lib/mysql \
           -v /opt/docker-mysql-data/my-slave.cnf:/etc/mysql/my.cnf \
           -p 3307:3306 \
           mysql:5.7
3、查看运行中的容器
docker ps

执行结果:
在这里插入图片描述

4、查看 Master、Slave 的 IP地址信息
docker inspect mysql-master |grep 'IPAddress'
docker inspect mysql-slave |grep 'IPAddress'

执行结果:
在这里插入图片描述

四、配置主从
1、Master 上执行
docker exec -it mysql-master bash        # Master上执行
mysql -uroot -p111111                    # Master、Slave上都执行
grant replication slave on *.* to 'slave'@'%' identified by 'slave';
flush privileges;
show master status;

执行结果:
在这里插入图片描述

2、Slave 上执行
docker exec -it mysql-slave bash
mysql -uroot -p111111
change master to master_host='172.17.0.2', master_user='slave', master_password='slave', master_log_file='mysql-bin.000003', master_log_pos=582, master_port=3306;
start slave;
show slave status \G;
含义:
master_host=‘172.17.0.2根据 mysql-master的 IP地址信息得来
master_log_file=‘mysql-bin.000003以自己实际的 Master的状态为准
master_log_pos=582以自己实际的 Master的状态为准

执行结果:
在这里插入图片描述
从上面的结果中,可以看到如下信息,表示主从配置正常。

 Slave_IO_Running :Yes
Slave_SQL_Running :Yes
五、测试
1、在Master上创建test数据库
create database test;
2、在Slave上查看test数据库是否已被同步
show databases;
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值