mysql灾备演练问题
前期写的mysql热备份脚本恢复,还没有正式用到过,但是今天演练灾备恢复,但是遇到几个问题。
测试环境:
搭建mysql,安装xtrabackup
vim /etc/yum.repos.d/Percona.repo
[percona]
name = CentOS $releasever - Percona
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
gpgcheck = 0
yum install percona-xtrabackup.x86_64 -y
1、演练恢复数据:
拿到生产环境备份数据,运行恢复数据脚本。http://www.cnblogs.com/jjzd/p/6659607.html
结果运行失败,原因是全量备份日期计算错误,原脚本已修改。
2、停掉mysql,删除mysql数据(移动/var/lib/mysql到/var/lib/mysql_bak)
3、运行修改备份恢复脚本。
4、修改权限,chown -R mysql.mysql /var/lib/mysql
5、启动mysql,service mysql restart,报错:
Starting MySQL...The server quit without updating PID file (/var/lib/mysql/mysql.pid).[失败]
原因最好的办法是先查看下错误日志:
(1)、可能是/var/lib/mysql/mysql.pid文件没有写的权限
解决方法 :给予权限,然后重新启动mysqld!
(2)、可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
(3)、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。
(4)、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data
(5)、skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
(6)、错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限
(7)、selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。本人就是使用第三条方法解决的 !
故障排除完后,启动数据库,恢复上一次备份后产生的数据变化:
6、恢复二进制文件:
去完全备份的目录下查看一下当时备份时候binlog的日志信息(因为增量备份是被应用到完全备份里的,当然,查看最后一次增量备份目录中的这个文件信息也可以,其实两个内容是一样的)
[root@manager1 mysql]# cat xtrabackup_binlog_pos_innodb
mysql-bin.000001 3710
#读取该二进制日志的位置并保存至.sql文件
[root@manager1 ~]# mysqlbinlog --start-position=3710 /var/lib/mysql_bak/mysql-bin.000001 > /tmp/1.sql
[root@manager1 mysql]# mysql -h127.0.0.1 -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.37-log MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
#进入mysql且先关闭二进制功能,进行恢复,再开启二进制功能:
mysql> set sql_log_bin = 0;
Query OK, 0 rows affected (0.55 sec) mysql> source /tmp/1.sql;
Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected, 1 warning (0.00 sec) Query OK, 0 rows affected (0.00 sec)
自此,恢复OK,进入数据库可以检查数据。
注意,当脚本不能自动恢复时,紧急情况下,请手动恢复,步骤无非就是在全量的基础上增量恢复:
先进行完全备份的准备: innobackupex --apply-log --redo-only /backup/2017-10-17_01-09-48/ 再进行增量备份的准备: innobackupex --apply-log --redo-only /backup/2017-10-17_01-09-48/ --incremental-dir=/backup/2017-10-17_13-26-38/ 确保2次操作都出现成功的提示: completed OK! 因为增量备份的数据都已合并到完全备份中去了,所以此时只恢复完全备份即可 innobackupex --copy-back /backup/2017-10-17_01-09-48/
手动备份:
全量:innobackupex --user=backup -password=123456 /backup/
增量备份:innobackupex
-user=backup -password=123456
--incremental /backup --incremental-basedir=BASEDIR
xtrabackup_checkpoints : 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态,这个为准备工作,包括事务日志和数据文件,把事务日志中已提交的事务同步至数据文件,未提交的进行回滚)和LSN(日志序列号)范围信息;每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。查看一下其内容:
cat xtrabackup_checkpoints
backup_type = full-backuped # 表示备份类型为完全备份
from_lsn = 0 # LSN号从0开始
to_lsn = 5618613 # LSN号到0结束
last_lsn = 5618613 # 最后的lsn号,换句话说,一会进行增量备份时会以这个数字开始,可以理解为 xtrabackup为每次备份打的开始和结束的标记
compact = 0 # 0表示未启用压缩
xtrabackup_binlog_info: mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置;
xtrabackup_binary:备份中用到的xtrabackup的可执行文件;
backup-my.cnf:备份命令用到的配置选项信息,也就是my.cnf配置文件中定义的相关参数
mysql灾备演练问题的更多相关文章
- MySQL灾备恢复在线主从复制变成主主复制及多源复制【转】
生产主主复制(A<--->B),和灾备主从复制(B--->C).当生产出现问题时,数据写入切换到灾备数据库,待生产恢复后,将灾备回写到生产.步骤如下: 1.灾备与生产其中一台建立主主 ...
- 理解 OpenStack 高可用(HA)(1):OpenStack 高可用和灾备方案 [OpenStack HA and DR]
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- 云区域(region),可用区(AZ),跨区域数据复制(Cross-region replication)与灾备(Disaster Recovery)(部分1)
本文分两部分:部分1 和 部分2.部分1 介绍 AWS,部分2 介绍阿里云和OpenStack云. 1. AWS 1.1 AWS 地理组件概况 AWS 提供三种地理性组件: Regions:区域,即A ...
- Linux实战教学笔记48:openvpn架构实施方案(一)跨机房异地灾备
第一章VPN介绍 1.1 VPN概述 VPN(全称Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公共网络中建立专用的数据通信网络的技术,可以为企业之间或者 ...
- openStack灾备方案说明
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1) OpenStack 高可用方案概述 (2) Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3 ...
- openStack高可用性和灾备方案
1. 基础知识 1.1 高可用 (High Availability,简称 HA) 高可用性是指提供在本地系统单个组件故障情况下,能继续访问应用的能力,无论这个故障是业务流程.物理设施.IT软/硬件的 ...
- MySQL主备模式的数据一致性解决方案
根据阿里交易型业务的特点,以及在双十一这样业内罕有的需求推动下,我们在官方的MySQL基础上增加了非常多实用的功能.性能补丁.而在使用MySQL的过程中,数据一致性是绕不开的话题之一.本文主要从阿里 ...
- DataGuard VS Beedup & GoldenGate灾备方案参数对比
世上本无完美产品,只有合适的才是最好的! 用户重视灾备数据站点的建设,毋庸置疑必备品.如果考虑带宽及事务完整性保证,存储灾备和操作系统级灾备局限性显而易见. 商用价值一般用于解决数据库自带辅助功能的短 ...
- 如何守护数据安全? 这里有一份RDS灾备方案为你支招
当今世界是一个充满着数据的互联网世界,生活的方方面面都在不断产生着数据,比如出行记录.消费记录.浏览的网页.发送的消息等等.除了文本类型的数据,图像.音乐.声音都是数据.对于企业而言,数据更是重要的生 ...
随机推荐
- python模拟银行家算法
前言: 大二第一学期学习了操作系统,期末实验课题要求模拟算法.遂根据自己学习的python写下此文.以此锻炼自己编码能力.虽说是重复造轮子,但还是自己的思路体现 代码及注释如下(银行家算法不再赘述): ...
- 基于CC2530/CC2430 的光强采集系统--ADC实验
使用光敏电阻,程序通用所有模拟量传感器 参见论坛中实例视频讲解http://bphero.com.cn/forum.php?mod=viewthread&tid=15&extra=pa ...
- 潭州课堂25班:Ph201805201 django 项目 第二十七课 docker简介,配置文件 (课堂笔记)
新闻搜索功能实现 一.docker介绍 1.什么是docker? 使用容器让创建.部署.运行应用程序更简单的一个工具 让应用所需的库和依赖环境打包 有一点点像虚拟机 2.为什么使用docker? 3. ...
- [CC-COUPLES]Couples sit next to each other
[CC-COUPLES]Couples sit next to each other 题目大意: 有\(n(n\le5\times10^5)\)对小伙伴共\(2n\)个人坐成一圈.刚开始编号为\(i\ ...
- 写一个简单的JQ插件(例子)
虽然现在 vue angular react 当道啊但是那 JQ还是有一席之地很多很多的小单位啊.其实还会用到 我也放一个例子吧虽然我也不是很肯定有没有人写的比我更好啊但是我相信 我这个还是蛮实用的 ...
- BZOJ4910 : [Sdoi2017] 苹果树
问题等价于树形依赖背包,允许一条链每个点各免费一次. 设$f[i][j]$表示按DFS序考虑到$i$,体积为$j$的最大收益. 先放入不能免费的物品,等遍历完儿子后再放入必选的物品,那么$i$到根路径 ...
- 【Luogu3381】【模板】缩点
本文同步发表于https://www.zybuluo.com/Gary-Ying/note/1235385 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最 ...
- 让公式在网页传播——mathJAX
让公式在网页传播--mathJAX 对于学生党而言,写公式最好的工具是LaTeX,但LaTeX把公式展示到互联网上就有些困难,而使用截图又不太雅观.幸运的是,mathJAX引擎可以在浏览器中解析渲染数 ...
- Hibernate简答题
简单题目 1.持久化对象的三种状态,代表含义. 自由状态(transient): 不曾进行持久化,未与任何Session相关联 持久化状态(persistent): 仅与一个Session相关联 游离 ...
- python实现关键词提取
今天我来弄一个简单的关键词提取的代码 文章内容关键词的提取分为三大步: (1) 分词 (2) 去停用词 (3) 关键词提取 分词方法有很多,我这里就选择常用的结巴jieba分词:去停用词,我用了一个停 ...