当前位置: 首页 > article >正文

【mysql】mysql之主从延迟复制测试场景

  本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》从问题中去学习k8s

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

一、延时复制

延时从库只做备份,不提供任何对外服务,正常情况下我们是不会有刻意延迟从库的需求的,因为正常的线上业务自然是延迟越低越好。
但是针对测试场景,业务上偶尔需要测试延迟场景下业务是否能正常运行。

# 延时复制流程:
和异步复制类似,同样是将主库的binlog日志通过dump线程发送给从库的中继日志中,但是当执行SQL的线程时,
会根据配置的延时复制时长,sql线程等到了延迟时间之后再执行中继日志中的sql语句了。

# 注意:
延时从库恢复数据时不要关闭主库的binlog,实际上从库还是会执行主库执行错的语句,只不过又执行了重建语句

1.配置延时复制(已经有主从)

1.停止主从
mysql> stop slave;
Query OK, 0 rows affected (0.03 sec)

2.配置延时时间
mysql> change master to master_delay=180;
Query OK, 0 rows affected (0.01 sec)

3.开启主从
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

2.配置延时复制(没有主从)

1.搭建出一台mysql
2.配置主从
mysql> change master to
    -> master_host='172.16.1.51',
    -> master_user='rep',
    -> master_password='123',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=424,
    -> master_delay=180;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
3.开启线程
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

3.关闭延时从库

mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

mysql> change master to master_delay=0;
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.02 sec)

实例

#关于延时复制如何恢复思考问题:
总数据量级500G,正常备份去恢复需要1.5-2小时
1)配置延时3600秒
mysql>CHANGE MASTER TO MASTER_DELAY = 3600;

2)主库
drop database db;

3)怎么利用延时从库,恢复数据?
提示:
1、从库relaylog存放在datadir目录下
2、mysqlbinlog 可以截取relaylog内容
3、show relay log events in 'db01-relay-bin.000001';


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

2)截取relaylog到误删除之前点
relay-log.info 获取到上次运行到的位置点,作为恢复起点
分析relay-log的文件内容,获取到误删除之前position
模拟故障处:

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

2)模拟数据
mysql -S /data/3307/mysql.sock
source  /root/world.sql
use world;
create table c1 select * from city;
create table c2 select * from city;

3)开启从库延时5分钟
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;
create table c4 select * from city;

4)破坏,模拟删库故障。(以下步骤在5分钟内操作完成。)
mysql -S /data/3307/mysql.sock
drop database world;

5)从库,关闭SQL线程
mysql -S /data/3308/mysql.sock
stop slave sql_thread;

6)截取relay-log
起点:
cd /data/3308/data/
cat relay-log.info
./db01-relay-bin.000002
283
终点:
mysql -S /data/3308/mysql.sock
show relaylog events in 'db01-relay-bin.000002'
db01-relay-bin.000002 | 268047 
mysqlbinlog --start-position=283  --stop-position=268047 /data/3308/data/db01-relay-bin.000002 >/tmp/relay.sql 
恢复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;


http://www.kler.cn/a/299655.html

相关文章:

  • 【ESP32】ESP-IDF开发 | WiFi开发 | TCP传输控制协议 + TCP服务器和客户端例程
  • 2007-2020年各省国内专利申请授权量数据
  • 【llm对话系统】大模型 RAG 之回答生成:融合检索信息,生成精准答案
  • 基于Cipher的Java加密工具类
  • AI大模型开发原理篇-2:语言模型雏形之词袋模型
  • Excel - Binary和Text两种Compare方法
  • Vue3封装table表格右键菜单功能
  • QQueue调用dequeue闪退解决方法
  • CentOS 7.9安装GCC 7.3.0
  • 四款音频剪辑软件免费使用,你更pick哪一个?
  • 第三天旅游线路预览——从贾登峪到禾木风景区入口
  • 动手学深度学习(pytorch土堆)-03Transforms简单入门学习
  • 代币化资产如何拯救 DeFi:让金融重回价值创造的正轨
  • onlyoffice 使用记录(前端开发角度)
  • Kafka 分布式消息系统详细介绍
  • Ubuntu20.04+ros-noetic配置Cartographer
  • 第143天:内网安全-权限维持自启动映像劫持粘滞键辅助屏保后门WinLogon
  • Java面试篇基础部分-Java中常用的I/O模型
  • EG边缘计算网关连接华为云物联网平台(MQTT协议)
  • Artitalk配置图床
  • 敏捷与企业架构:战略联盟
  • C#中chart绘制曲线
  • 居然还有人不懂强引用、弱引用与软引用
  • svn常见错误及解决办法
  • 「豆包 Marscode 体验官」AI 加持的云端 IDE——三种方法高效开发前后端聊天交互功能
  • spring ai整合ollama anythingllm