10 : mysql 主从复制 - 延时从库

延时从库

主从复制很好的解决了物理损坏,但是如果主库有个误删除写入的操作怎么办?

正常情况下从库也会同步这个错误的,企业中应该怎么避免这个情况?
这个时候就需要使用延时同步来解决:

延时从库?delay(延时)从节点同步数据。

对SQL线程进行延时设置。IO线程正常的执行。
企业中一般延迟3-6小时

延时从库的配置过程:
mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_DELAY = 60; (延时60s)
mysql>start slave;
mysql> show slave status \G
Master_UUID: c1bc62f5-e643-11e9-8060-000c29d5441f
Master_Info_File: /data/3308/data/master.info
SQL_Delay: 60
SQL_Remaining_Delay: NULL (没有数据的时候显示NULL)

主库执行个插入数据,会发现开始倒计时。倒计时结束sql线程才会把数据同步到从库里面
... ...
SQL_Delay: 60
SQL_Remaining_Delay: 56 (倒计时秒速)
... ...

停止延时:
mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_DELAY = 0;
mysql> start slave;

--------------------------------------------
模拟故障,思考:
0、总数据量级500G,正常备份去恢复需要1.5-2小时
1、配置延时3600秒
mysql>CHANGE MASTER TO MASTER_DELAY = 3600;
2、主库做了drop database db;
3、怎么利用延时从库,恢复数据?
-------------------------------------------
提示:
1、从库relaylog存放在/data/3308/data
2、mysqlbinlog 可以截取relaylog内容
3、show relay log events in ‘db01-relay-bin.000001‘;

处理的思路:
1、停止SQL线程
mysql> stop slave sql_thread;

2、截取relaylog到误删除之前点

(1)relay-log.info 获取到上次运行到的位置点,作为恢复起点
(2)分析relay-log的文件内容。,获取到误删除之前position

----------------------------------------
****** 模拟故障处理过程,并利用延时从库处理故障

0、关闭延时
mysql -S /data/3308/mysql.sock
mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_DELAY = 0;
mysql> start slave;

模拟数据:

mysql -S /data/3307/mysql.sock
source /root/world.sql
use world;
create table c1 select * from city;
create table c2 select * from city;

1、开启从库延时5分钟(这里是模拟,所以时间短。企业是3-6小时)

mysql -S /data/3308/mysql.sock
show slave status \G

mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_DELAY = 300;
mysql>start slave;

主库:
mysql -S /data/3307/mysql.sock
use world;
create table c3 select * from city;(把word库的city表数据给c3)
create table c4 select * from mysql.user;(把mysql库的user表数据给c4)

2、破坏,模拟删库故障。(以下步骤在5分钟内操作完成。)

mysql -S /data/3307/mysql.sock
drop database world;

3、从库,关闭SQL线程(从库这时候会倒计时,在倒计时之前关闭sql线程)
mysql -S /data/3308/mysql.sock
stop slave sql_thread; (在5分钟内停掉sql线程,不然超过5分就同步到从库 了。)

4、截取relay-log
起点:(relaylog 的起始位置)
cd /data/3308/data/
cat relay-log.info
./db01-relay-bin.000002
283

终点:(执行drop那条语句的前一条位置)
mysql -S /data/3308/mysql.sock
show relaylog events in ‘db01-relay-bin.000002‘ (找到drop语句的前一位置点条。)
db01-relay-bin.000002 | 268047 | Query | 3307 | 1781140 | drop database word

从relaylog里面导出这一段数据。
mysqlbinlog --start-position=283 --stop-position=268047 /data/3308/data/db01-relay-bin.000002 >/tmp/relay.sql

5、恢复relay.sql

(1)取消从库身份:
mysql> stop slave;
mysql> reset slave all;
(2)恢复数据(从库执行,这样从库就是一个完成的数据了,从变成主,)
mysql> set sql_log_bin=0;
mysql> source /tmp/relay.sql
mysql> use world
mysql> show tables;

可以把原主库当做从,就可以了。

原文地址:https://www.cnblogs.com/jim-xu/p/11651259.html

时间: 2024-11-09 01:58:04

10 : mysql 主从复制 - 延时从库的相关文章

搭建mysql主从复制和删库数据恢复策略

搭建主从复制 主机: [mysqld] 下增加 vim /etc/my.cnf ## 设置 server_id,一般设置为 IP server_id=8 # # 复制过滤:需要备份的数据库,输出 binlog binlog-do-db=testdb #复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步) binlog-ignore-db=mysql # 开启二进制日志,以备 Slave 作为其它 Slave 的 Master 时使用 log-bin=master-log-1 binl

MySQL主从复制指定不同库表同步参数说明

replication 中通过以下参数减少binlog数据量 master端: --binlog-do-db 二进制日志记录的数据库(多数据库用逗号,隔开) --binlog-ignore-db 二进制日志中忽略数据库 (多数据库用逗号,隔开) 以下是mysql主从忽略授权表的方法案例: in master: binlog-do-db=YYY 需要同步的数据库.不添加这行表示同步所有 binlog-ignore-db = mysql   这是不记录binlog,来达到从库不同步mysql库,以确

Mysql DBA 高级运维学习笔记-MySQL主从复制指定不同库表参数说明

1.同步少量库 binlog-do-db=db_px replicate-do-db=db_px---如需跨数据库更新并且不想复制这些跟新,应使用该选项 replicate-do-table=db_px----允许跨数据库更新 replicate-wild-do-table=db_px---用于跨数据库更新 2.ignore:排除 binlog-ignore-db=mysql replicate-ignore-db=mysql-如需跨数据库更新并且不想复制这些更新应使用该选项 replicate

MySQL 主从复制延时监控

#!/bin/bash USER="root" PASSWORD="root" MYSQL="/usr/mysql/mysql-5.6.10/client/mysql" HOST="10.198.18.18" thread_status=$($MYSQL -u"$USER" -p"$PASSWORD" -h"$HOST" -e 'show slave status\G

九爷带你了解 mysql 主从复制的 工作原理

mysql 主从复制原理 主从形式 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制--- 用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库 主从原理 mysql主从复制原理 从库生成两个线程,一个I/O线程,一个SQL线程: i

mysql 主从复制原理

主从形式 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制 用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库 主从原理 mysql主从复制原理 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlo

linux Mysql 主从复制 原理介绍和步骤详解

大家好,我是霸王卸甲,今天我给大家带来的是linux数据库中的主从复制的简单介绍和步骤详解. 主从复制 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制--- 用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库 主从原理mysql主

如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少.所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压力了吗? 如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是啥? 主库将变更写入 binlog 日志,然后从库连接到主库之后,

mysql主从复制概述以及配置mysql5.7.10实现简单主从复制

什么是主从复制: 通过将Mysql的某一台主机的 数据复制到其它主机,复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slave).进行复制时,所有对数据表的写操作必须在主服务器上进行.否则,因为主服务器不会同步从服务器的数据,会导致主从数据不一致的问题.mysql的主从复制功能是构建高性能大型应用服务器的基础 主从复制的作用: 1.辅助实现数据的备份 2.实现数据服务的高可用和异地容灾 3.实现多个服务器分摊负载 主从复制的实现原理: 实现整个复制过程主要