搭建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
binlog_cache_size = 1M
# 主从复制的格式(mixed,statement,row,默认格式是 statement)
binlog_format=mixed
# 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
expire_logs_days=7
#slave_skip_errors=1062
# # relay_log 配置中继日志
#relay_log=edu-mysql-relay-bin
#log_slave_updates 表示 slave 将复制事件写进自己的二进制日志
#log_slave_updates=1
# 防止改变数据(除了特殊的线程)
#read_only=1
然后在主机里创建一个用户授予同步权限,专门用来进行复制:
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'sync_user'@'192.168.0.%' IDENTIFIED BY 'root';
然后show master status\G;
mysql> show master status\G;
*************************** 1. row ***************************
File: master-log-1.000002
Position: 584
Binlog_Do_DB: testdb
从机:
## 设置 server_id,一般设置为 IP
server_id=8
# # 复制过滤:需要备份的数据库,输出 binlog
binlog-do-db=testdb
# #复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步)
binlog-ignore-db=mysql
# # 开启二进制日志,以备 Slave 作为其它 Slave 的 Master 时使用
log-bin=master-log-1
binlog_cache_size = 1M
# # 主从复制的格式(mixed,statement,row,默认格式是 statement)
binlog_format=mixed
# # 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。
expire_logs_days=7
然后重启, 登录进去后配置主从关系组. master_log_file实时取上面的show master status 的File字段的值, master_log_pos 取Position的值,然后执行下面的命令:
mysql > stop slave;
mysql > change master to master_host='192.168.0.7',master_user='sync_user',master_password='root',master_log_file='master-log-1.000002',master_log_pos=120 ;
mysql > start slave;
最后查看 show slave status\G;
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.7
Master_User: sync_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-log-1.000002
Read_Master_Log_Pos: 120
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 286
Relay_Master_Log_File: master-log-1.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
其中 这两项都为Yes的话那就没什么问题了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
直接开始主从同步吧
db快速回滚恢复,防止发生删库跑路.
一旦发生删库或其他危险性操作, 比如update不带条件式的修改(你又没开update保护), 那么跑路肯定不是第一选项的, 你起码得先尝试补救措施啊.
@1:一小时延迟从库
一小时间隔后重新连上主机把所有的数据全部同步过来,然后立马断开,这个从库会与主库保持1个小时的数据差距. 在搭好的主从同步的从机上执行:
mysql> stop slave;
mysql> change master to master_delay = 1800; #1800s后才同步
mysql> start slave;
但这个有个缺点就是: 从库在连上主库进行同步的一小段时间内刚好发生了删库事故或其他update不带条件的灾难,这个时候根本无法恢复. 因此最好开设双份的1小时延迟同步: 即对第一台从机执行一次延时1小时的命令change master to master_delay=3600;
过过半小时后再对另一台从机执行change master to master_delay=3600;
那么现在这两台从机就有半小时的同步间隔时间,即使事故发生在第一台从机连接的时候,仍旧有半小时的补救时间.
@2.另外就是全量备份 + 增量备份(用硬盘定时拷贝了)
搭建mysql主从复制和删库数据恢复策略的更多相关文章
- Docker搭建MySQL主从复制
Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...
- MySQL(14)---Docker搭建MySQL主从复制(一主一从)
Docker搭建MySQL主从复制(一主一从) 上一篇博客写了MYSQL主从复制原理 : MySQL(13)---MYSQL主从复制原理 这篇我们来写 Docker搭建MYSQL主从复制(一主一从) ...
- 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connect ...
- [置顶] 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connect ...
- Linux CentOS 安装MySql以及搭建MySql主从复制
前言 在之前的博客中,有过几篇都写了关于mysql在linux下的搭建教程,可能以后还会再写,但是又不想重复在写, 于是便想单独将此抽出来,单独写成一篇博客,并详细记录一些安装过程以及遇到的问题解决办 ...
- 基于Docker搭建MySQL主从复制
摘要: 本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 本篇博文相对简单,因为是初次使用D ...
- my03_使用空数据库搭建Mysql主从复制
无数据的主从复制,就搭建一套主从结构的空库,这个是最简单的,先说说这种主从的搭建思路,有利于理解Mysql主从复制1. 安装两套mysql单实例数据库,一个作为主库.一个作为从库:注意要设置两个数据库 ...
- 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
一.业务发展驱动数据发展 随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案 ...
- MySQL 多实例删库脚本
DB版本:5.5.14 OS:CentOS 6.3 在测试环境中,在一台服务器上创建多个实例,在每个实例中一个一个删库比较麻烦,因此用下面脚本,可以直接删除所有库,除了系统库以外: #!/bin/ba ...
随机推荐
- MySQL出现时区错误的解决方法
目录 环境 问题 分析 解决方法 环境 windows10 MySQL 8.0.13 IDEA 问题 The server time zone value 'Öйú±ê׼ʱ¼ä' is unre ...
- 移除script标签引起的兼容性问题
一.应用场景: 有时候我们需要动态创建script标签实现脚本的按需加载,我们会为script标签绑定onload或者onreadystatechange事件,用于检测动态脚本是否加载并执行完毕,在事 ...
- 关于js 中函数的参数
var a = 100; function test(a){ a++; //a(形参)是局部变量 console.log(a); } test(a); console.log(a); //结果是 10 ...
- 【Linux】Core dump故障分析
引入: Q:如果一个程序运行3天后才会出错,这个时候难道需要我们一直用GDB调试程序3天吗? A:答案当然是否定的. 我们有更厉害的工具--Core dump 一.Coredump定义 Core Du ...
- office转换为html在线预览
/// <summary> /// word 转换为html /// </summary> /// <param name="path">要转换 ...
- list 和 iterate
list 和 iterate 不同之处 a) list取所有: b) iterate 先取ID,等到用到的时候再根据ID来取对象: c) session 中 list 第二次发出,仍会到数据库查询: ...
- 网络威胁防护,Azure 靠的是它?
在当今数字化转型的浪潮中,越来越多的企业希望转型于云.使用云能帮助企业提高工作效率.降低 IT 成本.增强竞争优势,有效推动企业的业务发展.但是,在向云迁移的过程中,基于云的数据中心更有可能被攻击,所 ...
- 收缩事务日志(sqlserver)
sqlserver数据库的日志文件其实是由很多个逻辑上的日志文件组成,我们可以通过命令看一下数据库日志文件 可以看到的是sqlserver数据库日志文件是由很多文件组成的,当数据库日志文件已满的时候 ...
- 调试一个Ext打开的window窗口内嵌Iframe的form提交问题
一个奇怪的问题是:潜逃在iframe里的页面单独提交都是正常,放到iframe里面通过js调用在parent页面.提交总是被莫名其妙的杀掉. 确定js简单无错之后,继续看parent的处理逻辑,有这么 ...
- 收放卷及张力控制 PID调试技巧
1) 小 Kp( 0.01) , 大 Ti ( 20000ms) 2)逐渐增大Kp, 减小Ti ( 20000ms – 3000ms),避免发生震荡 3)观察I-out 是否在0附近 可能原因:卷径不 ...