阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL主从复制——主库已有数据的解决方案

571次阅读
没有评论

共计 2039 个字符,预计需要花费 6 分钟才能阅读完成。

在上篇文章中我们介绍了基于 Docker 的 MySQL 主从搭建,一主多从的搭建过程就是重复了一主一从的从库配置过程,需要注意的是,要保证主从库 my.cnf 中 server-id 的唯一性。搭建完成后,可以在主库 show slave hosts 查看有哪些从库节点。

MySQL 主从复制——主库已有数据的解决方案

我们来简单了解一下 MySQL 主从复制的过程:

(1) master 将改变记录到二进制日志 (binary log) 中(这些记录叫做二进制日志事件,binary log events);

(2) slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);

(3) slave 重放中继日志中的事件,将改变反映它自己的数据。

MySQL 主从复制——主库已有数据的解决方案

MySQL 主从复制——主库已有数据的解决方案

由单机架构切换到一主一从或一主多从,在增加从库节点前,主库可能已经运行过一段时间,这种情况在实际业务中很常见。那么如何应对开启主从复制前主库有数据的场景呢?

第一种方案是选择忽略主库之前的数据,不做处理。这种方案只适用于不重要的可有可无的数据,并且业务上能够容忍主从库数据不一致的场景。

第二种方案是对主库的数据进行备份,然后将主数据库中导出的数据导入到从数据库,然后再开启主从复制,以此来保证主从数据库数据一致。

我们来详细看一下第二种方案的处理:

查看主数据库已有的数据库

我们在主数据库准备了一个 TEST1 库,并且在其中准备一张数据表 TEST 和几条测试数据。

MySQL 主从复制——主库已有数据的解决方案

MySQL 主从复制——主库已有数据的解决方案

使用 Docker 创建从数据库

docker run -p 3346:3306 –name mysql-slave4 -e MYSQL_ROOT_PA SSWORD=123456 -d mysql:5.7

MySQL 主从复制——主库已有数据的解决方案

锁定主数据库

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

mysql> flush tables with read lock;

MySQL 主从复制——主库已有数据的解决方案

MySQL 主从复制——主库已有数据的解决方案

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

mysql>show master status;

MySQL 主从复制——主库已有数据的解决方案

备份主数据库

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

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

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

MySQL 主从复制——主库已有数据的解决方案

此时报出Warning: Using a password on the command line interface can be insecure.,这是因为我们在命令行输入了密码,所以会有安全警告信息。解决方案是在 /etc/mysql/my.cnf 中加入如下配置:

[mysqldump]
user = root
password = rootpassword

修改完配置文件后, 再次执行备份命令不需要涉及用户名密码相关信息。

MySQL 主从复制——主库已有数据的解决方案

主数据库备份数据导入从数据库

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

和上一步一样,我们也需要在从数据库配置用于备份的用户名和密码信息。

MySQL 主从复制——主库已有数据的解决方案

需要先在从数据库建立一个同名数据库,才能导入主数据库备份数据。切换到从数据库执行CREATE DATABASE TEST1;,然后再次导入主数据备份数据。

MySQL 主从复制——主库已有数据的解决方案

此时备份数据导入已完成,可以在从数据库进行数据验证。

MySQL 主从复制——主库已有数据的解决方案

配置从数据库

docker exec -it mysql-slave4 /bin/bash

cd /etc/mysql

MySQL 主从复制——主库已有数据的解决方案

vi my.cnf,加入以下配置,注意 server-id 要保证唯一:

MySQL 主从复制——主库已有数据的解决方案

service mysql restart 重启 mysql 服务,这会使得 mysql 服务所在的 docker 容器停止

docker start mysql-slave4 启动 docker 容器

配置主从链接

切换到从数据库,执行 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= 4952, master_connect_retry=30;,关于这个命令在上一篇文章中有详细介绍。

启动主从复制 start slave;,此时查看从库状态 show slave status \G;,若是 SlaveIORunning 和 SlaveSQLRunning 都是 Yes,说明开启主从复制过程成功。

MySQL 主从复制——主库已有数据的解决方案

解锁主数据库

切换回主数据库的终端,进行表解锁操作。

unlock tables;

MySQL 主从复制——主库已有数据的解决方案

测试主从复制

在主数据库插入一条测试数据

MySQL 主从复制——主库已有数据的解决方案

切换到从数据库,查询测试数据,说明主从复制成功。

MySQL 主从复制——主库已有数据的解决方案

总结

应该尽可能优化流程,减少锁表时间。

尽可能减少锁表范围,只锁定相关的数据库。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2039字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
8014812
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...