MariaDB/Mysql主从复制(Docker)——主库已有数据的解决方案——MariaDB/Mysql数据备份

备份主库原有数据

使用已经主从部署好的主库master作为本次测试的主库

  • 创建好数据卷文件

    mkdir /home/lxj/hedisql/data/slave3
    
  • 创建并运行slave3容器

    docker run --name slave3 -e MYSQL_ROOT_PASSWORD=123456 -v /home/lxj/heidisql/data/slave3:/var/lib/mysql  -p 53306:3306 --restart always -d mariadb
    
  • 拷贝一份MySQL配置文件

sudo docker cp slave3:/etc/mysql/my.cnf /home/lxj/hedisql/data/slave3_my.cnf
  • 修改slave1_my.cnf,在 [mysqld] 节点下添加
		[mysqld]
		server-id=4
		relay-log-index=slave-relay-bin.index
		relay-log=slave-relay-bin
		relay_log_recovery=1		
  • 复制slave3_my.cnf并覆盖slave3中的my.cnf
docker cp /home/lxj/heidisql/data/slave3_my.cnf slave3:/etc/mysql/my.cnf
  • 重启slave1容器
docker restart slave3
  • 锁定主数据库

锁定主数据库,只允许读取不允许写入,这样做的目的是防止备份过程中或备份完成之后有新数据插入,导致备份数据和主数据数据不一致。

docker exec -it master /bin/bash
mysql -uroot -p123456
flush tables with read lock;

查询主数据库状态,并记下File及Position的值

	show master status;
	+------------------------------+
	| File              | Position |
	+-------------------+----------+
	| master-bin.000009 |      343 | 
	+-------------------+----------+

执行docker mariadb备份(如果备份所有数据库里的信息edslxj改为–all-databases既可)命令

docker exec master /usr/bin/mysqldump -p123456 edslxj > backup.sql

需要先在从数据库建立一个同名数据库,才能导入主数据库备份数据。切换到从数据库执行

CREATE DATABASE edslxj;

然后再导入主数据备份数据。

cat backup.sql | docker exec -i slave3 /usr/bin/mysql -p123456 edslxj

此时备份数据导入已完成。

只要像正常配置从库操作即可(具体操作可以查看文档MariaDB的主从复制部署)。

  • 解锁主数据库

从库配置完成之后,切换回主数据库的终端,进行表解锁操作。

unlock tables;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值