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灾备方案为你支招
当今世界是一个充满着数据的互联网世界,生活的方方面面都在不断产生着数据,比如出行记录.消费记录.浏览的网页.发送的消息等等.除了文本类型的数据,图像.音乐.声音都是数据.对于企业而言,数据更是重要的生 ...
随机推荐
- VeeamOne9.5-t添加监控服务器
打开 Veeam ONE Monitor 首先会让你配置报警邮件,也可以选择跳过随后配置 点击ADD SERVER 可以选择vCenter也可以选择ESXI主机 输入vCenter的用户名和密码 点击 ...
- POJ.2175.Evacuation Plan(消圈)
POJ \(Description\) \(n\)个建筑物,每个建筑物里有\(a_i\)个人:\(m\)个避难所,每个避难所可以容纳\(b_i\)个人. 给出每个建筑物及避难所的坐标,任意两点间的距离 ...
- 2017-9-14-Linux移植:加快Linux主机的启动速度
参考文章:http://www.mintos.org/skill/fast-boot.html 今天本来不打算写Blog了,Linux笔记本开机太慢了,浪费生命.何不干脆写一篇关于加快Linux主机启 ...
- Java 8 (二) 新的时间API
新的时间API 一)时间线 Instant对象:表示时间轴上的一个点,原点为1970-1-1的午夜. Duration对象:表示一段时间. 注意Instant和Duration类都是final. 二) ...
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安
CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...
- C++学习笔记55:流类库与输入输出
I/O流的概念及流类库的结构 程序与外界环境的信息交换 当程序与外界环境进行信息交换时,存在着两个对象:程序中的对象,文件对象. 流是一种抽象,负责在数据的生产者和数据的消费者之间建立联系,并管理数据 ...
- 6、js初识
今天这篇将介绍javascript,学完javascript就可以使你的网页动起来. 本篇导航: JavaScript概述 JavaScript的基础 JS的数据类型 运算符 流程控制 一.JavaS ...
- C# 发送消息SendKeys、SendMessage、keybd_event的用法
一.C#中SendKeys的用法 功能:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样. 语法: SendKeys.Send(string keys); SendKeys.SendWa ...
- [Web 前端] VML、SVG、Canvas简介
1.VML: VML的全称是Vector Markup Language(矢量可标记语言),矢量的图形,意味着图形可以任意放大缩小而不损失图形的质量,这在制作地图上有很大用途,VML只是被IE支持. ...
- hql里面union和union all的区别
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复. 注意,原来表里面的重复行也会被压缩. Union ...