当主库存在历史数据时如何完成全量Mysql主从复制

上一篇文章介绍了[docker+mysql的主从复制的搭建][1],使用docker有许多优点:可以轻松实现跨平台的移植、docker容器之间不会互相影响、容器内部不会污染宿主机的环境等等。如果大家还没有接触docker,建议先去了解一下docker的使用教程,当然了,不会docker也不影响学习解决该问题的大体步骤。

前提:

当决定使用Mysql主从复制的数据库架构时,可能你的工程已经运行了一段时间,这是很常见的场景,比如目前我负责的一个项目,我想改变生产环境的单节点数据库的现状,通过主从复制为读写分离作铺垫。那么就需要两台及以上的节点作为数据库节点,这里所谓的节点不仅仅指服务器,也可能是同一台服务器,不同端口,使用docker进行隔离。

可是我在配置完主从复制后发现,主节点已经存在的数据并没有同步到从节点,当主节点向数据库写数据时,从节点重复这些操作,可从节点本身根本没有创建那些主节点的库,导致运行出错、IO线程坏死,最终从节点挂掉

教程开始

查看主库的已有数据库

show databases;

假设其中test数据库是我们想要主从同步的数据库,模拟生产环境,该数据库中已经有了很多数据

use test;

select * from user;

锁定主数据库

锁定主数据库,只允许读取不允许写入,这样做的目的是防止备份过程中或备份完成之后有新数据插入,导致备份数据和主数据数据不一致,同样,这样做也有弊端,可能在锁库期间会影响正常的业务流程,所以我们应使锁库的粒度尽可能小。

flush tables with read lock;

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

show master status;

开始备份主数据库

退出mysql终端,执行docker mysql备份命令

docker exec [CONTAINER] /usr/bin/mysqldump -u username --password=xxx [DATABASE] > back.sql

[CONTAINER] 是你自己容器的名字, [DATABASE]是你自己数据库的名字,back.sql是临时产生的备份文件,里面是sql语句, username是你自己的用户名,一般是root,xxx则是你自己的用户密码。该命令的意思是执行docker容器内mysql相关命令:mysqldump,将指定的数据库导出到宿主机当中

我们这里只需要备份test数据库,若要备份全部数据库,[DATABASE]处使用--all-databases

在宿主机上执行下列语句

图中的warnming是因为我们在命令行输入了密码,所以会有安全警告信息。可以看到,已经在宿主机上生成了back.sql,

开始导入从数据库

在导入备份文件之前,需要在从库中手动建立相应的同名库CREATE DATABASE test;,否则会出现如下报错

找不到相关数据库

在手动创建完数据库后执行下列语句

cat back.sql | docker exec -i [CONTAINER] /usr/bin/mysql -u username --password=xxx [DATABASE]

备份成功

之后就可以开始进行主从模式的配置了,具体可以参考我这篇文章[docker+mysql的主从复制的搭建][1]

记住配置完要解锁主库

unlock tables;

大功告成!

原文:https://www.cnblogs.com/tian874540961/p/12144251.html

mysql 主从备份 全量数据_当主库存在历史数据时如何完成全量Mysql主从复制相关推荐

  1. mysql主从备份及原理分析

    为什么80%的码农都做不了架构师?>>>    以下教程结合网上资料和自己的总结,综合而成,实际做的过程中发现网上部分网友的教程不是很详细,有些地方的坑也没有点到,从而产生了如下教程 ...

  2. linux下 mysql主从备份

    一.准备  用两台服务器做测试:  Master Server: 192.0.0.1/Linux/MYSQL 4.1.12  Slave Server: 192.0.0.2/Linux/MYSQL 4 ...

  3. MySql主从备份Slave

    Mysql主从备份可以在除主服务器外的其他服务器是部署从库,用于实时备份生产环境数据,核心是mysql的log-bin日志(二进制日志),主库开启bin日志后,从库通过日志同步(Slave I/O)和 ...

  4. mysql 主从备份 主服务器配置_同一服务器配置Mysql主从备份

    因为是在同一服务器上配置并且没有使用虚拟机,所以在网上找资料是找到的写的不全,写的好的又没百度到,你说配置难么其实也跟学自行车一样! 准备环境 Windows10 主库 Mysql 5.6.21 从库 ...

  5. mysql主从备份导入数据库_[导入]MySQL数据库的主从及双机备份

    花了半天时间研究了下下MYSQL的备份实现,发现其是在MY.CNF(MY.INI)配置文件中作的设置,直接设置服务器唯一性ID号加上其它的附加设 置,则可作为一台MASTER,而在 SLAVE机上,也 ...

  6. mysql 主从备份问题_我遇到的mysql主从同步的问题

    测试mysql主从同步的问题,主从同步test库. 主库: root@ttt 11:00>use test; Database changed root@test 11:00>show t ...

  7. mysql物理备份迁移注意细节_物理拷贝备份mysql到其他机器上恢复

    经常会遇到mysql数据要迁徙的情况 ,逻辑导出是可以的 但是就是太慢 第三方工具也同样可以用 也是操作麻烦,最简单粗暴的方式就是直接拷贝物理文件来的最快 也很简单 当然 前提是远程服务器和目标服务器 ...

  8. mysql数据库恢复数据_【技术分享】使用Innodb存储引擎的mysql数据库恢复

    作者:维一零 预估稿费:400RMB(不服你也来投稿啊!) 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 前言 某天,在测试一张新数据表的字段时,由于在phpmyadmin不断 ...

  9. centos mysql 主从_CentOS 搭建 MySql 主从备份

    约定: 192.168.21.128 Master 192.168.21.129  Slave 以下配置拷贝与网络 配置篇 一.配置MySQL主服务器(192.168.21.128) mysql -u ...

最新文章

  1. B-树的一点既不形象又不恰当的比喻
  2. 点击别的地方隐藏下拉列表
  3. Java 读取 .properties 配置文件的几种方式
  4. 计算机应用能力power,全国专业技术人员计算机应用能力考试专用教材——PowerPoint 2003中文演示文稿5日通题库版(双色)(附光盘) - 中国考研网...
  5. 利用Flash读取SQL Server数据库的值
  6. python使用UUID生成唯一标识
  7. python创建和删除文件有什么区别_python创建和删除文件
  8. Rosalind工具库:使用EMBOSS处理生物数据
  9. 华为手机投屏电脑_手机投屏干货分享:华为如何投屏到电视机?
  10. Windows 安全杂记(一)
  11. 《机械原理》上 学后感
  12. [UPF]Synopsys推荐的UPF流程及Power Domain简介
  13. 工业相机与工业镜头相关参数详解
  14. 基于Transformer的时空融合网络地铁客流预测模型
  15. matlab 遥感图像分类,彩色遥感图像分类算法及Matlab实现
  16. c语言字符串atoi函数,C++_C语言中一些将字符串转换为数字的函数小结,C语言atoi()函数:将字符串转换 - phpStudy...
  17. (初学笔记1)python读多波段遥感影像并存到三维数组中
  18. 数据合并中pd.merge()和pd.concat()区别
  19. 解决报错:org/springframework/util/backoff/BackOff
  20. 初识:神经网络(Neural Networks)

热门文章

  1. 【Python】jieba库的使用
  2. 【Python】pyinstaller安装失败的解决办法
  3. 关于Dev-C++的安装以及基本使用方法
  4. C#LeetCode刷题之#622-设计循环队列​​​​​​​(Design Circular Queue)
  5. C#LeetCode刷题之#441-排列硬币(Arranging Coins)
  6. C#LeetCode刷题之#67-二进制求和(Add Binary)
  7. css3 下边框缓缓划过_CSS3 框大小
  8. 一文搞定Python正则表达式
  9. 有缘网分布式爬虫案例2
  10. Python3.6字符串新特性