栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker MySQL主从备份

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker MySQL主从备份

1.下载mysql:5.7镜像

docker pull mysql:5.7

2.创建挂载目录

vi mk.sh

mkdir -p install /root/mysqlms/data
mkdir -p install /root/mysqlms/conf.d
mkdir -p install /root/mysqlms/mysql-files
mkdir -p install /root/mysqlsl/data
mkdir -p install /root/mysqlsl/conf.d
mkdir -p install /root/mysqlsl/mysql-files

./mk.sh

3.创建主服务器

创建主容器

docker run --name sqlms -p 3306:3306 -d -v /root/mysqlms/data:/var/lib/mysql/ -v /root/mysqlms/mysql-files:/var/lib/mysql-files/ -v /root/mysqlms/conf.d:/etc/mysql/conf.d/ -e MYSQL_ROOT_PASSWORD=root mysql:5.7

进入主容器并将my.cnf删除

docker exec -it sqlms bin/bash

rm -rf my.cnf

exit
退出容器

主机内配置主服务器

进入挂载目录
cd /root/sqlms/conf.d

创建一个mysql配置文件
vi my.cnf

#开启bin-log日志并给与一个id
[mysqld]
server-id=1
log-bin=mysql-bin

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
之后挂载目录的文件可直接生效

进主容器内将my.cnf移动到原来的目录
mv /etc/mysql/conf.d/my.cnf /etc/mysql/

service mysql restart                 

创建从服务容器
创建从服务器

docker run --name sqlsl -p 3307:3306 -d -v /root/mysqlsl/data:/var/lib/mysql/ -v /root/mysqlsl/mysql-files:/var/lib/mysql-files/ -v /root/mysqlsl/conf.d:/etc/mysql/conf.d/ -e MYSQL_ROOT_PASSWORD=root mysql:5.7

重复主服务容器的操作直到mysql配置文件

修改从mysql配置文件

进入挂载目录
cd /root/sqlms/conf.d

生成配置文件
vi my.cnf

[mysqld]
server-id=2
log-bin=mysql-slave-bin 
relay_log=edu-mysql-relay-bin 

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
之后挂载目录的文件可直接生效

进从容器内将my.cnf移动到原来的目录
mv /etc/mysql/conf.d/my.cnf /etc/mysql/

重启服务
service mysql restart
准备环节结束开始正式操作

主服务容器操作

进入主容器启动mysql

docker exec -it sqlms bin/bash

mysql -uroot -proot

在命令行输入

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

创建一个slave用户并授权读写任何文件权限,用于主从备份数据

show master status;


需要使用到file和pos数据

从服务容器操作
mysql命令行输入

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 154, master_connect_retry=60;

master_log_pos=154 ,就是值记录最大位置
master_host :Master的地址,指的是容器的独立ip
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

start slave;
开启主从备份
show slave status G
查看状态

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上两项值都是yes则开启成功,如果其中有no或者connection就代表开启失败。

错误解决

 Slave_IO_Running: Connecting
 Slave_SQL_Running: Yes

当mysql5.7或更高版本重启后会自动执行一次flush logs命令,主服务会刷新出一个新的log-bin文件,这时候跟原来的配置冲突了导致一直在寻找,需要重新配置主从命令。

先去主服务机查询当前的bin日志;

show master status;

可以看到明显的文件和值都变了

然后去从服务器上

停掉主从服务
stop slave;

重新配置
change master to master_host='172.17.0.3', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=588, master_connect_retry=60;

注意每次重启后IP也可能不是原来的IP,需要自己重新查看一下

start slave;

show slave status G;


下方也无报错,成功启动主从备份。

其实主从备份的错误无非就是网络错误和log-bin日志的问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/826825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号