docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker部署MySQL主从复制

Docker部署MySQL主从复制的实现

作者:山海一念

本文主要介绍了Docker部署MySQL主从复制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

平台说明

一、Docker创建网络

说明:方便后续MySQL主从连接

1. 创建网络

docker network create net-mysql

2. 查看网络

二、创建MySQL主从容器

1.拉取镜像

docker pull mysql

2.查看镜像

docker images

3.创建启动容器

创建MySQL主机

docker run -d -p 3310:3306 -v D:/ProgramData/docker_config/mysql/master/config:/etc/mysql/conf.d -v D:/ProgramData/docker_config/mysql/master/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --network net-mysql --name mysql-master mysql:latest

创建MySQL从机

docker run -d -p 3311:3306 -v D:/ProgramData/docker_config/mysql/slave-1/config:/etc/mysql/conf.d -v D:/ProgramData/docker_config/mysql/slave-1/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --network net-mysql --name mysql-slave-1 mysql:latest

查看容器是否启动成功

docker ps

三、主从配置

1.主机配置文件

在D:\ProgramData\docker_config\mysql\master\config文件夹下创建my.cnf

[mysqld]
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
#设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库 需要复制的主数据库名字
binlog-do-db=db_test
#设置logbin格式
binlog_format=STATEMENT

2.从机配置文件

在D:\ProgramData\docker_config\mysql\slave-1\config文件夹下创建my.cnf

[mysqld]
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

3.注意事项

编写结束后,进行对应的容器中查看,以主机为例

进入主机的bash

docker exec -it mysql-master bash

进入启动容器时文件挂载的目录

cd /etc/mysql/conf.d

当前目录下应该是my.cnf.txt文件,需要修改文件名称,并将my.cnf内容复制到/etc/mysq目录下的my.cnf文件中,才能生效

# 查看当前目录下的文件
ls

# 修改文件名
mv my.cnf.txt my.cnf

# 复制到/etc/mysql目录下
cp my.cnf /etc/mysql/my.cnf

4.重启容器

docker restart mysql-master mysql-slave-1

5.连接主从数据库 主机配置

进入主机的bash

docker exec -it mysql-master bash

在bash中连接mysql

mysql -uroot -p

创建用户并授权

GRANT REPLICATION SLAVE ON *.* TO 'dev'@'%' IDENTIFIED BY '123456';

查看master状态

show master status;

停在这里,不要在主机上执行其他命令

从机配置

进入从机的bash

docker exec -it mysql-slave-1 bash

连接mysql

mysql -uroot -p123456

在从机的mysql中执行一下命令

CHANGE MASTER TO MASTER_HOST='172.19.0.2',
MASTER_USER='dev',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1325;

补充说明

获取主机的IP地址

docker network inspect net-mysql

MASTER_PORT是3306,不是映射到宿主机的端口,千万别搞错了

MASTER_LOG_FILE和MASTER_LOG_pOS的值对应着主机最后一步操作的值

启动从机复制

在mysql中执行

start slave;

查看从机状态

show slave status\G;

Slave_IO_Running和Slave_SQL_Running显示为Yes即为成功

四、测试主从复制

MySQL主库中执行

create database db_test;
use db_test;
CREATE TABLE user ( id int UNSIGNED NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL, age int NOT NULL, PRIMARY KEY (id) );
insert into user(name, age) values('Jack', 20);

MySQL从库中查询

show databases;

use db_test;
show tables;

select * from user;

到此这篇关于Docker部署MySQL主从复制的实现的文章就介绍到这了,更多相关Docker部署MySQL主从复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文