【原创】MySQL 生产环境备份还原
公司需要对生产环境的数据库进行备份,我接下了这份任务。
1. 首先谷歌了以下大家的备份方法
许多都使用到了Xtrabackup这个工具,超大型的公司可能有其他的的备份方法,这个工具对于中小型公司,甚至是大公司都可以满足需求。
xtrabackup中备份通常需要压缩软件来减少磁盘占用容量,同时使用xbstream流。
注: 在测试还原备份时候,使用compact参数的备份不能还原,就算能还原,mysqld启动之后一会就当机,所以大家不要为了一些容量就使用这个参数。切记!
2. 备份策略
有人建议中小公司的备份策略为:每天全备+rsync bin-log,大公司周日全备+周一到周六增备+rsync bin-log(增备策略有俩种:每次都基于全备或者每次都基于上一次的增备,如果上一次增备没有则基于全备)
显然第一种方案比较简单,但占用磁盘比较大;第二种占用磁盘小,但操作比较复杂,还原的时候更是。
本人在小公司,但有一份大公司的心,所以采用周日全备,周一到周六增备的备份策略,增备备份每次使用全备进行增备,这样可以减少还原时操作的复杂度。
3. 备份语句:
全备:
MYSQL_CMD=" --host=localhost --user=backup --password=xxxxxxx --port=3306 "
innobackupex --defaults-file=/etc/my.cnf --use-memory=2G $MYSQL_CMD --extra-lsndir=${THIS_FULLBACKUP_DIR} --stream=xbstream ${FULLBACKUP_DIR} 2>> $TMPLOG | \
lbzip2 -kv -n 6 > ${THIS_COMPRESS_FULLBACKUP_FILEPATH} 2>> $TMPLOG
增备:
$INNOBACKUPEXFULL --defaults-file=$MY_CNF --use-memory=2G $MYSQL_CMD --incremental-basedir=${THIS_INCRBASEDIR} --extra-lsndir=${THIS_INCRBACKUP_DIR} --incremental --stream=xbstream ${INCRBACKUP_DIR} 2>> $TMPLOG | \
lbzip2 -kv -n 6 > ${THIS_COMPRESS_INCRBACKUP_FILEPATH} 2>> $TMPLOG
压缩工具使用的是lbzip2,这需要安装。
4. 还原步骤
1. 停服
2. 将服务器原始数据文件先移出来出来,清空数据库的数据目录
3. 将备份的原始文件拷贝一份,上传到服务器所在的机器
4. lbzip 解压
5. xbstream 解压
6. apply-log: 增备和全备都需要,具体语句不做叙述, 除最后一个备份外,其他备份apply-log时需要加--redo-only参数,此外如果还需还原bin-log日志,在第7步完成之后使用mysqladmin进行操作,操作方法不做叙述
7. copy-back: 因为增备合并到全备中了,所以我们只需要copy-back全备回数据库的数据目录就好
8. 更改目录权限: chown -R mysql:mysql /var/lib/mysql
9. 启动服务器
注: 使用xtrabackup来初始化slave无需删除auto.cnf, 如果你是拷贝数据目录,在启动slave时需要删除,这是数据库实例的唯一标识
【原创】MySQL 生产环境备份还原的更多相关文章
- Mariadb/MySQL生产环境的my.cnf配置示例
Mariadb/MySQL生产环境的my.cnf配置示例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.针对MySQL主程序mysqld定义参数[mysqld] 1>. ...
- Mysql 二进制日志备份还原
Mysql 二进制日志备份还原 一.开启二进制日志 1.进入配置文件[mysqld]下添加配置 方案一 vim /etc/my.cnf log-bin = /usr/local/mysql/logs/ ...
- 使用innobackupex进行mysql的差异备份还原和延迟复制
使用innobackupex进行mysql的差异备份还原和延迟复制 背景: 有同事执行update语句没有添加where条件,导致大量脏数据,需要将这张表恢复到前一天 数据库上有备份,每周一次完整备份 ...
- MySQL生产环境下的主从复制启动项
MySQL的复制参数除了我们之前搭建主从时遇到的那几个之外,还有以下两个: 1.log-slave-updates 这个参数用来配置从库上是否启动了二进制日志的功能,默认是不开启的,如果开启了那么从库 ...
- mysqldump工具实现mysql数据库的备份还原
简介 冷.温.热备份 冷备:读写操作均不可进行 温备:读操作可执行:但写操作不可执行 热备:读写操作均可执行 MyISAM:温备,不支持热备 InnoDB:都支持 不管是热备还原还是冷备还原,还原时都 ...
- Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)
备份类型: 热备份:读写不受影响 温备份:仅可执行读备份 冷备份:离线备份,读写均不能执行,关机备份 物理备份和逻辑备份 物理备份:复制数据文件,速度快. 逻辑备份:将数据导出之文本文件中,必要时候, ...
- mysql数据库数据备份还原
1.直接在命令行里面执行 备份一个数据库:mysqldump -h server -u username -p password db_name > database-sqlbkp_`date ...
- C#中MySQL数据库的备份 还原 初始化
直接在cmd执行如下代码: mysqldump -h localhost -uroot -p123 --default-character-set=utf8 --opt --disable-keys ...
- C# MySQL数据库的备份 还原 初始化
// 执行创建数据库操作 this.GetExecute(G_Con, "create database if not exists NEWDB"); this.sqlAddres ...
随机推荐
- 使用Visual Studio 2010打造C语言编译器
相信学习C语言的同学们一直在为自己的windows7不能用vc 6.0而烦恼着.或许有的电脑能使用上,但绝大多数是不能的,而且会出现软件不能兼容的提醒.其实大家都不需要再使用vc6.0了,因为软件更新 ...
- 通过微信分享链接,后面被加上from=singlemessage&isappinstalled=1导致网页打不开
微信分享会根据分享的不同,为原始链接拼接如下参数: 朋友圈 from=timeline&isappinstalled=0微信群 from=groupmessage&isappi ...
- jQuery如何根据元素值删除数组元素
用到的方法$.inArry(); $.inArray( value, array [, fromIndex ] ) value 任意类型 用于查找的值. array Array类型 指定被查找的数组. ...
- 线程9--NSOperation
一.NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOpe ...
- 7行代码看EntityFramework是如何运行
这段时间在项目中运用Entity Framework作为底层数据交互框架.一个字,爽.不仅提高了开发效率,省了很多代码,而且数据库也规范了很多.按照网上的一些教程初步学习,然后实际运用了,再结合MVC ...
- Recommend ways to overwrite hashCode() in java
Perface In the former chapter, I talk about topics about hashCode, And I will continue to finish the ...
- SSH下shiro的基本使用
1.引入依赖 <!-- 权限控制 框架 --> <dependency> <groupId>org.apache.shiro</groupId> ...
- Spring学习手札(四)谈谈Spring Bean的生命周期及作用域
在Spring中,那些组成应用程序的主体以及由Spring IoC容器所管理的对象,被称之为Bean.Bean与应用程序中其他对象(比如自己创建类)的区别就是,Bean是由IoC容器创建于销毁的.在S ...
- 小tip: 某简单的字符重叠与图形生成----张鑫旭
引言 字符重叠不是什么稀奇的东西. 如1像素错位模拟阴影效果: 或者powerFloat中展示的带边框三角: 以及其他很多. 但是技术这东西不是豆腐,老了可以吃,臭了也可以吃:那我这里还拿着个说事作甚 ...
- AJAX异步的 JavaScript
什么是AJAX: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. ...