MySQL Replication--修复从库上单个数据库的数据
问题描述
由于运维失误,从库未及时设置read_only,导致从库上某库数据被修改,由于整个实例数据量较大,重做成本较高,而该数据库数据较少,因此考虑如何修复该数据库的数据。
操作前提
1、复制使用位点同步,未使用MASTER_AUTO_POSITION=1选项
2、程序对数据库操作不存在跨库事务,保证过滤该库的复制事件后不会丢失其他库的事件。
处理步骤
1、停止该从库上复制(实际复制已停止)
STOP SLAVE;
2、在主库上备份整表数据(注意记录主库位点)
/export/servers/mysql/bin/mysqldump \
--socket="/export/data/mysql/tmp/mysql.sock" \
--host="127.0.0.1" \
--port= \
--user='mysql_root' \
--password="mysql_root_pws" \
--default-character-set="utf8" \
--single-transaction \
--databases 'demodb' \
--hex-blob --opt --quick \
--events --routines --triggers \
--master-data= \
--set-gtid-purged=OFF \
> /export/data/mysql/dumps/demodb.sql
3、修改从库复制属性,跳过该库相关复制
CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB=(test,demodb)
4、将主库上mysqldump出来的文件复制到从库,并查看位点信息
head -n /export/data/mysql/dumps/demodb.sql |grep 'CHANGE MASTER' 输出结果为:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.003001', MASTER_LOG_POS=;
5、使用START SLAVE UNTIL将复制执行到备份位点
START SLAVE UNTIL MASTER_LOG_FILE='mysql-bin.003001', MASTER_LOG_POS=;
6、将备份位点的数据更新到从库中
/export/servers/mysql/bin/mysql \
--host="127.0.0.1" \
--port= \
--user='mysql_root' \
--password="mysql_root_pws" \
--database="mysql" \
--verbose \
--batch \
-vvv \
</export/data/mysql/dumps/demodb.sql \
>/export/data/mysql/dumps/demodb.log \
>/export/data/mysql/dumps/demodb.err
7、修改从库复制属性,去除对该库的过滤复制
CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB=(test)
8、开启复制,复制恢复正常
START SLAVE;
MySQL Replication--修复从库上单个数据库的数据的更多相关文章
- (转)【mysql元数据库】使用information_schema.tables查询数据库和数据表信息 ---数据记录大小统计
转:https://www.cnblogs.com/ssslinppp/p/6178636.html https://segmentfault.com/q/1010000007268994?_ea=1 ...
- 【mysql元数据库】使用information_schema.tables查询数据库和数据表信息
概述 对于mysql和Infobright等数据库,information_schema数据库中的表都是只读的,不能进行更新.删除和插入等操作,也不能加触发器,因为它们实际只是一个视图,不是基本表,没 ...
- (笔记)Mysql实例:建库建表并插入数据1
drop database if exists school; // 如果存在school则删除create database school; // 建立库schooluse school; / ...
- MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作(转)
MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”. 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的 ...
- SQLSERVER 触发器 将一个服务器上的数据库中数据插入到另一个服务器上的数据库中怎么做
首先要执行 sp_addlinkedserver '服务器ip' 然后开始写语句 insert into ip.库名字.dbo.table select * from iserted
- (笔记)Mysql实例:建库建表并插入数据2
drop database if exists school; // 如果存在SCHOOL则删除create database school; // 建立库SCHOOLuse school; / ...
- MySQL笔记(一)之新建数据库和数据表
创建数据库 CREATE DATABASE database_name 创建数据表 CREATE TABLE table_name ( 列1 数据类型, 列2 数据类型, 列3 数据类型, .... ...
- 浅析 MySQL Replication(本文转自网络,非本人所写)
作者:卢飞 来源:DoDBA(mysqlcode) 0.导读 本文几乎涵盖了MySQL Replication(主从复制)的大部分知识点,包括Replication原理.binlog format.复 ...
- 常见的MySQL Replication Error
现在不少公司都在用MySQL(master)-->MySQL(slave)的框架,当然也有一主多从的架构,这也是MySQL主从的一个延伸架构;当然也有的公司MySQL主主的架构,MySQL主主架 ...
随机推荐
- C#中的断言(Assert)
重构-断言 现象:某一段代码需要对程序状态做出某种假设 做法:以断言明确表现这种假设 动机: 常常有这种一段代码:只有某个条件为真是,该改名才能正常运行. 通常假设这样的假设并没有代码中明确表现出来, ...
- Mqtt paho 回调函数触发机制跟踪
Python Mqtt paho 回调函数触发机制跟踪,我使用的是 buildroot 里面的 mqtt paho , 代码在 ''' buildroot-2017.02.8/output/build ...
- Spring cloud微服务安全实战-6-10sentinel之热点和系统规则
热点规则 热点就是经常访问的数据.很多时候我们希望争对某一些热点数据,然后来进行限制.比如说商品的信息这个服务,我们给它做一个限流,qps是100,某一天我想做一个秒杀活动,可能会有很大的流量,这个时 ...
- [python语法]python中如何判断一个集合是另一个集合的子集?
问:python中如何判断一个集合是另一个集合的子集? 答:用issubset()方法 语法: A.issubset(B) 返回: True 如果A是B的子集. False 如果A不是B的子集. 样例 ...
- jquery click 与原生 click 的区别
$.click() 触发的事件中没有 event.originalEvent , 不同触发 href="" 中的内容 $[0].click() 可以 <script type ...
- 位运算在 PHP 实际项目当中的高级运用
我们首先来看一个系统中常见的需求: 有一个广告表,我们要对广告做显示控制: 手动上下线. 只允许 VIP 查看. 可能的表结构如下: CREATE TABLE `finger_ad` ( `ad_id ...
- git删除远程.idea目录
git删除远程.idea目录 1. 登录 Administrator@USER-20180708AB MINGW32 / (master) $ git config --global user.nam ...
- Metricbeat 轻量型指标采集器
一.介绍 用于从系统和服务收集指标.从 CPU 到内存,从 Redis 到 Nginx,Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据. 1.系统级监控,更简洁(轻量型指标采 ...
- LeetCode 92. 反转链表 II(Reverse Linked List II)
92. 反转链表 II 92. Reverse Linked List II 题目描述 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. LeetC ...
- 【面试】C++类中的相关函数【构造,拷贝构造,析构,友元】
构造函数:值的初始化,可带参数,无返回值,可重载,可存在多个 析构函数:释放对象内存空间,无参数,无返回值,不可重载,只能存在一个 拷贝构造函数:拷贝对象,其形参必须是引用 1.空类会默认添加哪些东西 ...