公司需要对生产环境的数据库进行备份,我接下了这份任务。

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 生产环境备份还原的更多相关文章

  1. Mariadb/MySQL生产环境的my.cnf配置示例

    Mariadb/MySQL生产环境的my.cnf配置示例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.针对MySQL主程序mysqld定义参数[mysqld]  1>. ...

  2. Mysql 二进制日志备份还原

    Mysql 二进制日志备份还原 一.开启二进制日志 1.进入配置文件[mysqld]下添加配置 方案一 vim /etc/my.cnf log-bin = /usr/local/mysql/logs/ ...

  3. 使用innobackupex进行mysql的差异备份还原和延迟复制

    使用innobackupex进行mysql的差异备份还原和延迟复制 背景: 有同事执行update语句没有添加where条件,导致大量脏数据,需要将这张表恢复到前一天 数据库上有备份,每周一次完整备份 ...

  4. MySQL生产环境下的主从复制启动项

    MySQL的复制参数除了我们之前搭建主从时遇到的那几个之外,还有以下两个: 1.log-slave-updates 这个参数用来配置从库上是否启动了二进制日志的功能,默认是不开启的,如果开启了那么从库 ...

  5. mysqldump工具实现mysql数据库的备份还原

    简介 冷.温.热备份 冷备:读写操作均不可进行 温备:读操作可执行:但写操作不可执行 热备:读写操作均可执行 MyISAM:温备,不支持热备 InnoDB:都支持 不管是热备还原还是冷备还原,还原时都 ...

  6. Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)

    备份类型: 热备份:读写不受影响 温备份:仅可执行读备份 冷备份:离线备份,读写均不能执行,关机备份 物理备份和逻辑备份 物理备份:复制数据文件,速度快. 逻辑备份:将数据导出之文本文件中,必要时候, ...

  7. mysql数据库数据备份还原

    1.直接在命令行里面执行 备份一个数据库:mysqldump -h server -u username -p password db_name > database-sqlbkp_`date ...

  8. C#中MySQL数据库的备份 还原 初始化

    直接在cmd执行如下代码: mysqldump -h localhost -uroot -p123 --default-character-set=utf8 --opt --disable-keys ...

  9. C# MySQL数据库的备份 还原 初始化

    // 执行创建数据库操作 this.GetExecute(G_Con, "create database if not exists NEWDB"); this.sqlAddres ...

随机推荐

  1. [转]VS2013中使用Git建立源代码管理

    本文转自:https://blog.csdn.net/bodybo/article/details/38976549 第一次在VS2013中使用Git,也是第一次使用Git,各种不熟悉.百度各种使用经 ...

  2. Java基础-内部类介绍

    java内部类介绍 内部类一共分为4种 成员内部类 静态内部类 方法内部类 匿名内部类 下面我会为大家详细介绍每一个内部类!! 成员内部类 成员内部类就好像是外部类的一个成员属性,也是内部类中最常见的 ...

  3. Linux下socket通信和多线程

    服务端socket流程:socket() –> bind() –> listen() –> accept() –> 读取.发送信息(recv,send等) 客户端socket流 ...

  4. AutoFac使用方法总结二:事件与依赖循环

         事件 AutoFac支持三种事件:OnActivating,OnActivated,OnRelease.OnActivating在注册组件使用之前会被调用,此时可以替换实现类或者进行一些其他 ...

  5. Linux 调试: systemtap

    安装与配置 在ubuntu下直接用apt-get install之后不能正常使用,提示缺少调试信息或者编译探测代码时有问题. 1. 采用官网上的解决方法 2. 可以自己重新编译一次内核,然后再手工编译 ...

  6. [AMPPZ2014]Petrol

    关键点的最小生成树? 关键点初始化为0,跑多源最短路,然后重构整个图,用Kruskal跑最小生成树 然后跑树链剖分在线回答询问 对树上每个点维护到链顶的最大值,结合线段树可以做到\(\Theta(n ...

  7. bzoj P4825 [Hnoi2017]单旋——solution

    Description H 国是一个热爱写代码的国家,那里的人们很小去学校学习写各种各样的数据结构.伸展树(splay)是一种数据 结构,因为代码好写,功能多,效率高,掌握这种数据结构成为了 H 国的 ...

  8. koa 中,中间件异步与同步的相关问题

    同步中间件很容易理解,如以下代码: const Router = require('koa-router') , koa = new Router({ prefix: '/koa' }) , fs = ...

  9. OpenGL学习--06--键盘与鼠标交互

    1.tutorial06.cpp // Include standard headers #include <stdio.h> #include <stdlib.h> // I ...

  10. Aittit.attilax超级框架 api 规划大全

    Aittit.attilax超级框架 api 规划大全 1 Api分类2 1.1 核心2 1.2 属性2 1.3 CSS2 1.4 选择器2 1.5 文档处理3 1.6 筛选3 1.7 事件3 1.8 ...