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主主架 ...
随机推荐
- 安装比特币区块链钱包API(Blockchain Wallet用户发送和接收比特币的简单API)
区块链钱包API提供了一个简单的界面,商家可以用它以编程方式与钱包进行交互. 安装:要使用此API,您需要运行负责管理区块链钱包的小型本地服务. 您的应用程序通过HTTP API调用在本地与此服务进行 ...
- webconfig 配置 分离
https://blog.csdn.net/zhifeiya/article/details/38828711 如标题,如何把 asp.net webconfig的appSettings分离到单独文件 ...
- Spring cloud微服务安全实战-7-2docker快速入门
因为后面运行的这些可视化的工具都是用docker去run 的.为了避免对docker完全没有概念的同学听不懂,帮助大家从概念上去理解docker是个什么东西. 最核心的东西就是镜像,把它理解为Spri ...
- Laya的对象唯一标识
Egret中是obj.hashcode Laya中是obj["$_GID"]
- [LeetCode] 267. Palindrome Permutation II 回文全排列 II
Given a string s, return all the palindromic permutations (without duplicates) of it. Return an empt ...
- [LeetCode] 290. Word Pattern 单词模式
Given a pattern and a string str, find if str follows the same pattern. Here follow means a full mat ...
- 【机器学习之一】python开发spark环境搭建
环境 spark-1.6 python3.5 一.python开发spark原理使用python api编写pyspark代码提交运行时,为了不破坏spark原有的运行架构,会将写好的代码首先在pyt ...
- 设置程序崩溃时产生 core 文件的配置
/* 不限制 core 文件的大小 */ ulimit -c unlimited /* 使用 pid 进行命名 */ echo " > /proc/sys/kernel/core_us ...
- iOS:Xcode代码块,提升敲代码的效率
一.代码块在哪里? 看下图 或者 快捷键:command+shift+L 长这样: 二.如何创建代码块: 1.先选中要创建的代码片段,然后点击右键,选中 Create Code Snippet 然后会 ...
- QT 安装 配置过程
QT, QT creator的安装,环境配置: 需要根据这个连接重新梳理一遍:https://blog.csdn.net/win_turn/article/details/50465127 1)一种方 ...