一)备份分类

1
2
3
4
5
6
7
8
9
10
11
12
冷备:cold backup数据必须下线后备份
温备:warm backup全局施加共享锁,只能读,不能写
热备:hot backup数据不离线,读写都能正常进行
备份的数据集
完全备份:full backup
部分备份:partial backup
备份时的接口(是直接备份数据文件还是通过mysql服务器导出数据)
物理备份:直接复制(归档)数据文件的备份方式:physical backup
逻辑备份:把数据从库中提出来保存为文本文件:logical backup
完全备份:full backup
增量备份:incrementl backup
差异备份:fidderential backup

二)备份工具mysqldump讲解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mysqldump:逻辑备份工具
InnoDB引擎热备,MyISM温备,Aria温备
备份和恢复的过程比较慢,很难实现差异或增量备份
恢复时,如果目标库不存在,需要事先手动创建
常用选项:
--all-databases:备份所有库
--databases db1 db2...:备份指定的多个库
注意:备份前要加锁:
--lock-all-tables:请求锁定所有表之后在备份。
--lock-tables:锁定指定的表。
--single-transaction:能够对InnoDB存储引擎实现热备。
备份代码:
--events:备份事件调度器代码
--routines:备份存储过程和存储函数
--triggers:备份触发器
备份时滚动日志:
--flush-logs:备份前,请求到锁之后滚动日志。
复制时的同步位置标记
--master-data=【0|1|2】
0表示不记录
1表示记录change master语句
2记录为注释的change master语句
使用mysqldump备份:
请求锁:--lock-all-tables或使用--singe-transaction进行innoDB热备
滚动日志:--flush-logs
选定要备份的库:--databases
记录二进制日志文件及位置:--master-data=0|1|2

mysqldump三种备份方式:

第一种:

备份:[root@station141 ~]# mysqldump --databases benet > /tmp/benet.sql

mysql> unlock tables;解锁

mysql> drop database benet;删除库
Query OK, 1 row affected (0.70 sec)

恢复

第二种方式备份:

mysqldump --databases benet --lock-all-tables --flush-logs > /tmp/benet.sql直接备份的

第三种方式备份:主要是针对innoDB引擎备份,实现热备。

mysqldump --databases benet --single-transactions --flush-logs > /tmp/benet.3.sql

备份所有数据库

mysqldump --all-databases > /tmp/all.sql

Xtrabackup备份工具使用如下:

下载位置:http://www.percona.com/

yum -y install percona-xtrabackup-2.1.8-733.rhel6.x86_64.rpm

yum -y install percona-toolkit-2.2.7-1.noarch.rpm

备份全部数据库:

innobackupex --user=root /myback

1
2
3
4
5
6
[root@localhost 2014-04-14_23-39-44]# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1619068
last_lsn = 1619068
compact = 0

恢复数据库

innobackupex --apply-log /mydata/2014-04-14_23-39-44/先把数据整理出来
innobackupex --copy-back /mydata/2014-04-14_23-39-44/根据全备份恢复数据

做增量备份

innobackupex --incremental /mydata/ --incremental-basedir=/mydata/2014-04-14_23-39-44/

基于上次的全备做

1
2
3
4
5
6
[root@localhost 2014-04-14_23-45-11]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1619068
to_lsn = 1619478
last_lsn = 1619478
compact = 0

查看是增量备份

恢复增量备份,依次先恢复,全备,后增量

1
2
3
4
innobackupex --apply-log --redo-only /mydata/2014-04-14_23-39-44/
innobackupex --apply-log --redo-only /mydata/2014-04-14_23-39-44/ --incremental-dir=/mydata/2014-04-14_23-45-11/
innobackupex --apply-log --redo-only /mydata/2014-04-14_23-39-44/ --incremental-dir=/mydata/2014-04-14_23-49-01/
innobackupex --copy-back /mydata/2014-04-14_23-39-44/

LVM-snapshot:基于lvm快照备份

大致步骤:

1)事务日志跟数据文件必须在同一个卷上

2)创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁

3)请求全局锁完成之后,做一次日志滚动;做二进制日志及位置标记(手动进行);

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/mapper/myvg-lvmy on /mnt type ext4 (rw)
/mnt下放的就是mysql数据库得数
1
2
3
[root@localhost ~]# vim /etc/my.cnf
thread_concurrency = 8
datadir = /mnt

安装数据库的时候先创建好个逻辑卷,安装目录为/mnt下。

请求全局锁,滚动日志

MariaDB [(none)]> flush tables with read lock;

MariaDB [(none)]> flush logs;

记录二进制日志位置

mysql -e 'show master status' > mysql.txt

创建快照

[root@localhost ~]# lvcreate -L 1G -s -n mydata-snap -p r /dev/myvg/mydata

解锁

MariaDB [(none)]> unlock tables;

挂载快照并且备份

mount /dev/myvg/mysql-snap /media/

tar -Jcf /tmp.mysq.tar.xz /media/*

卸载并删除快照

1
2
3
4
[root@localhost ~]# umount /media/
[root@localhost ~]# lvremove /dev/myvg/mysql-snap
Do you really want to remove active logical volume mysql-snap? [y/n]: y
Logical volume "mysql-snap" successfully removed

MySQL三种备份的更多相关文章

  1. 【转】Mysql三种备份详解

    一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...

  2. mysql三种备份方式

    一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...

  3. mysql 三种恢复方式

    为了保障数据的安全,需要定期对数据进行备份.备份的方式有很多种,效果也不一样.一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复.从而将损失降到最低.下面我们来了解一下MySQL常见的有 ...

  4. MySQL三种存储引擎总结

    MySQL三种存储引擎 MyISAM.InnoDB.MEMORY 1.MyISAM MyISAM,3.23.34a前的默认存储引擎. 优缺点 优点 在于占用空间小,处理速度快. 缺点 不支持事务的完整 ...

  5. mysql三种带事务批量插入

    原文:mysql三种带事务批量插入 c#之mysql三种带事务批量插入 前言 对于像我这样的业务程序员开发一些表单内容是家常便饭的事情,说道表单 我们都避免不了多行内容的提交,多行内容保存,自然要用到 ...

  6. [mysql]三种方法为root账户指定密码

    前言:前段时间把mysql安装后一直没管它,当时就在奇怪为什么mysql登陆不要密码,原来一直用的超用户账户登陆的(简称超级用户) 其实只怪自己太无知,之前一直用的phpbydamin进行的数据库的可 ...

  7. Oracle数据库三种备份方案

    Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利用 ...

  8. Linux下SVN的三种备份方式

    原文链接:http://blog.csdn.net/windone0109/article/details/4040772 (本文例子基于FreeBSD/Linux实现,windows环境请自己做出相 ...

  9. MySQL三种InnoDB、MyISAM和MEMORY存储引擎对比

    什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能 ...

随机推荐

  1. BZOJ5071 小A的数字

    设f[i]为选择i对i-1和i+1所带来的贡献.则有f[i-1]+f[i+1]+a[i]-2f[i]=b[i],特殊地,f[2]+a[1]=b[1],f[n-1]+a[n]-2f[n]=b[n].可以 ...

  2. Guardian of Decency UVALive - 3415(最大独立集板题)

    老师在选择一些学生做活动时,为避免学生发生暧昧关系,就提出了四个要求.在他眼中,只要任意两个人符合这四个要求之一,就不可能发生暧昧.现在给出n个学生关于这四个要求的信息,求老师可以挑选出的最大学生数量 ...

  3. 【刷题】BZOJ 4196 [Noi2015]软件包管理器

    Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...

  4. CF398B Painting The Wall 概率期望

    题意:有一个 $n * n$ 的网格,其中 $m$ 个格子上涂了色.每次随机选择一个格子涂色,允许重复涂,求让网格每一行每一列都至少有一个格子涂了色的操作次数期望.题解:,,这种一般都要倒推才行.设$ ...

  5. 洛谷 P3924 康娜的线段树 解题报告

    P3924 康娜的线段树 题目描述 小林是个程序媛,不可避免地康娜对这种人类的"魔法"产生了浓厚的兴趣,于是小林开始教她\(OI\). 今天康娜学习了一种叫做线段树的神奇魔法,这种 ...

  6. Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程

    Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...

  7. Java试题二

    QUESTION 37Given:1. class Super {2. private int a;3. protected Super(int a) { this.a = a; }4. } ...1 ...

  8. Codeforces Round #417 (Div. 2)A B C E 模拟 枚举 二分 阶梯博弈

    A. Sagheer and Crossroads time limit per test 1 second memory limit per test 256 megabytes input sta ...

  9. protobuf手册

    1. c++快速上手 https://developers.google.com/protocol-buffers/docs/cpptutorial 2. c++使用手册 https://develo ...

  10. OpenCV---模糊操作

    推文:图像平滑处理(归一化块滤波.高斯滤波.中值滤波.双边滤波) 推文:图像的平滑与滤波 模糊操作 三种模糊操作方式 均值模糊 中值模糊 自定义模糊(可以实现上面两种模糊方式) 原理: 图像处理:基础 ...