docker安装mysql主从_Docker安装mysql5.7并且配置主从复制

一、拉取mysql镜像

docker pull mysql:5.7

二、创建文件docker.cnf

我采用的方式,是使用虚拟机,搭建docker环境,在Docker李新建了两个数据库,端口分别为3307和3308。其中3307为模拟master,3308为模拟slave。

2.1 mysql主机(192.168.21.55:3307)

2.1.1 创建文件夹

原教程方式是这样

mkdir /usr/local/mysql

cd mysql/

mkdir conf data

我的实现方式是这样,直接合并了第一步,直接通过docker构建,相较于他的操作,更为简单粗暴。

docker run -p 3307:3306 --name mysql_3308 -v /root/mysql/mysql_3308/conf:/etc/mysql/conf.d -v /root/mysql/mysql_3308/logs:/logs -v /root/mysql/mysql_3308/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1

2.1.2 创建docker.cnf

vim /usr/local/mysql/conf/docker.cnf

具体添加:

[mysqld]

server-id=1

log-bin=master-bin #只是读写,就只要主库配置即可.如果要做主从切换,那么主库和从库都需要开启.

skip-host-cache

skip-name-resolve

collation-server = utf8_unicode_ci

init-connect='SET NAMES utf8'

character-set-server = utf8

[mysql]

default-character-set=utf8

[client]

default-character-set=utf8

2.2 mysql从机(192.168.21.55:3308)

2.2.1 创建文件夹

mkdir /usr/local/mysql

cd mysql/

mkdir conf data

2.2.2 创建docker.cnf

vim /usr/local/mysql/conf/docker.cnf

具体添加:

[mysqld]

server-id=2

log-bin=master-bin

skip-host-cache

skip-name-resolve

collation-server = utf8_unicode_ci

init-connect='SET NAMES utf8'

character-set-server = utf8

[mysql]

default-character-set=utf8

[client]

default-character-set=utf8

三、创建容器并运行

3.1 放行端口号

此步操作,我并没有放行,因为本地虚拟机环境端口号都是开放的。

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

3.2 mysql主机

docker run --name mysqlmaster -p 3307:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:5.7

3.3 mysql从机

docker run --name mysqlslave -p 3308:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:5.7

四、开启主从复制

4.1 mysql主机

进入Mysql容器:

docker exec -it mysqlmaster /bin/bash

启动mysql

mysql -uroot -proot

创建用户

create user 'lhl'@'%' identified by 'root';

权限

grant replication slave on *.* to 'lhl'@'%';

刷新权限

flush privileges;

查看状态

show master status;

a5a867e1065f07351ebec21adb2a7750.png

4.2 mysql从机

进入mysql容器

docker exec -it mysqlslave /bin/bash

启动mysql

mysql -uroot -proot

执行主从

change master to master_host='192.168.21.55',master_port=3307,master_user='lhl',master_password='root',master_log_file='master-bin.000003',master_log_pos=745;

如果报错,执行下面命令并再次执行上面的命令

stop slave;

开启复制

start slave;

查看主从是否成功

show slave status \G;

以下两个都为yes就代表成功了!!!!

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

说明主从成功

93c30bea25022ef2b5d039bf442965c7.png

PS:若直接按其教程走,应该是没有问题,能够直接成功的!感谢原文博主的分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值