Docker之MySQL主从

MySQL自身支持主从复制

可以为MySQL设置启用主从复制功能,会自动将数据进行备份

基于二进制日志

搭建MySQL主从复制

搭建主库

第一步:创建宿主文件夹

mkdir -p /docker/mysqlcluster/mysql3307

编辑配置文件

vim /docker/mysqlcluster/mysql3307/my.cnf

扫描二维码关注公众号,回复: 3516340 查看本文章

配置文件内容:

[client]

port = 3306

[mysqld]

#设置3306端口

port = 3306

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

#唯一 集群中标记每一个MySQL服务

server-id=3307

#二进制日志

log-bin=mysqllogbin

log-bin-index=mysqllogbin.index

#通用日志

general_log=1

log_output=FILE,TABLE

#慢查询日志

slow_query_log=ON

slow_query_log_file=slow.log

long_query_time=2 #超过2秒的sql记录

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

第二步:创建并运行容器

docker run -d --name mysqlmaster -e MYSQL_ROOT_PASSWORD=root --privileged=true -v /docker/mysqlcluster/mysql3307/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -p 3307:3306 mysql:5.7

第三步:连接数据库

docker exec -it mysqlmaster bash

mysql -u root -p

输入密码:root

查看二进制日志启用

show master status;

搭建从库

第一步:创建宿主文件夹

mkdir -p /docker/mysqlcluster/mysql3311

编辑配置文件

vim /docker/mysqlcluster/mysql3311/my.cnf

vim /docker/mysqlcluster/mysql3312/my.cnf

配置文件内容:

[client]

port = 3306

[mysqld]

#设置3306端口

port = 3306

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

#唯一 集群中标记每一个MySQL服务

server-id=3311

#二进制日志

log-bin=mysqllogbin

log-bin-index=mysqllogbin.index

#通用日志

general_log=1

log_output=FILE,TABLE

#慢查询日志

slow_query_log=ON

slow_query_log_file=slow.log

long_query_time=2 #超过2秒的sql记录

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

第二步:创建并运行容器

docker run -d --name mysql3311 -e MYSQL_ROOT_PASSWORD=root --privileged=true -v /docker/mysqlcluster/mysql3311/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -p 3311:3306 mysql:5.7

docker run -d --name mysql3312 -e MYSQL_ROOT_PASSWORD=root --privileged=true -v /docker/mysqlcluster/mysql3312/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -p 3312:3306 mysql:5.7

第三步:连接数据库

docker exec -it myslmaster bash

输入密码:root

查看二进制日志启用

show master status;

设置主从

第一步:设置主库

#设置复制用户和密码并授权

docker exec -it mysqlmaster bash

mysql -u root -p

grant replication slave on *.* to 'backup'@'%' identified by 'qfjava';

#刷新权限

flush privileges;

#查看二进制文件和当前索引

show master status;

第二步 获取主库的日志文件和开始位置

mysqllogbin.000003 591

查看主库容器的ip

172.17.0.2

第三步:设置从库

#连接从库

docker exec -it mysql3311 bash

mysql -u root -p

#设置主库

change master to master_host='172.17.0.2',master_port=3306,master_user='backup',master_password='qfjava',master_log_file='mysqllogbin.000003',master_log_pos=591;

#开启从库

start slave;

#停止主从

stop slave;

#查看从库

show slave status \G;

#连接从库

docker exec -it mysql3312 bash

#设置主库

change master to master_host='172.17.0.2',master_port=3306,master_user='backup',master_password='qfjava',master_log_file='mysqllogbin.000003',master_log_pos=591;

#开启从库

start slave;

#查看从库

show slave status \G;

第四步:测试主从复制

分别连接三个数据库(1主2从)

开启二进制日志

2、创建并运行容器

master-password=qfjava

master-connect-retry=30

猜你喜欢

转载自blog.csdn.net/qq_41983010/article/details/82528846
今日推荐