MySQL三种备份

一)备份分类


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三种备份方式:

第一种:

备份:[[email protected] ~]# 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

[[email protected] 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

[[email protected] 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

[[email protected] ~]# 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

[[email protected] ~]# 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

创建快照

[[email protected] ~]# 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

[[email protected] ~]# umount /media/

[[email protected] ~]# 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

时间: 09-29

MySQL三种备份的相关文章

MySQL常用的三种备份方法

mysql按照备份恢复方式分为逻辑备份和物理备份.逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现,物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单.这2种备份各有优劣,一般来说,物理备份恢复速度比较快,占用空间比较大,逻辑备份速度比较慢,占用空间比较小下面介绍以下3种常用的备案方法一.mysqldump工具备份mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具.支持基于Inn

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

前言:前段时间把mysql安装后一直没管它,当时就在奇怪为什么mysql登陆不要密码,原来一直用的超用户账户登陆的(简称超级用户) 其实只怪自己太无知,之前一直用的phpbydamin进行的数据库的可视化管理,哪里知道这么详细呢? 本文原文来源mysql官方文档5.1 正文:最开始可以使用SELECT User.Password FROM mysql.user查询mysql数据库root账户的密码 你可以用几种方法为root账户指定密码.以下介绍了三种方法: ·         使用SET PA

[转] Linux下SVN的三种备份方式

(本文例子基于FreeBSD/Linux实现,windows环境请自己做出相应修改)   配置管理的一个重要使命是保证数据的安全性,防止服务器应硬盘损坏.误操作造成数据无法恢复的灾难性后果.因此制定一个完整的备份策略非常重要. 一般来说,备份策略应规定如下几部分内容:备份频度.备份方式.备份存放地点.备份责任人.灾难恢复检查措施及规定. 备份频度.存放地点等内容可以根据自己的实际情况自行制定:本文重点描述备份方式. svn备份一般采用三种方式:1)svnadmin dump 2)svnadmin

C#连接mysql三种方式

第一种方式: 使用MySQLDriverCS.dll连接 MySQLDriverCS软件下载:http://sourceforge.net/projects/mysqldrivercs/?source=typ_redirect 安装完之后再引用中添加引用,找到安装目录,找到MySQLDriverCS.dll文件,然后添加using MySQLDriverCS.dll文件 参考网址:http://www.cnblogs.com/genli/articles/1956537.html C#连接mys

mysql三种带事务批量插入

前言 对于像我这样的业务程序员开发一些表单内容是家常便饭的事情,说道表单 我们都避免不了多行内容的提交,多行内容保存,自然要用到数据库,如果循环打扰我数据库,数据库也会觉得很累,从而增加数据库服务器压力.所以小子不才,根据平时经验总结了一下用到的批量插入的方法代码.本文是针对c#语言开发,数据库是mysql数据库.当然我这是单片机的本地电脑运行,跟服务器上有很大区别,到了服务器上可能跑的比这快的多,话不多说看下文. 一 生成数据 简而言之吧,就拿五万数据实验吧,这里面我就收集了五万条数据 二 批

Linux平台下mysql三种安装方式比较

MySQL在Linux平台下的安装包有RPM包.二进制包和源码包三种 (1)RPM包: 优点:安装简单,不需要过多的安装配置,适合初学者安装使用缺点:需要下载客户端和服务器端,当然现在都是可以捆绑下载了,安装路径为默认安装路径不能修改,一台服务器只能安装一个MySQL,不能安装多个虚拟主机.文件安装路径:/usr/bin(客户端程序和脚本)/usr/sbin(mysqld服务器)/var/lib/mysql(日志文件和数据库)/usr/share/doc/packages(文档)/usr/inc

VMware虚拟化三种备份和恢复方法的对比分析

服务器虚拟化,尤其是VMware形式的服务器虚拟化使IT人员获益良多,这么说一点也不为过.据我们所见,服务器虚拟化能解决服务器扩张.资源消耗.服务器扩张.能源消耗.高可用性等相关问题.服务器虚拟化也使我们有更多的时间解决其它的迫切问题,如企业资源预案升级.存储项目再三迁移或者为什么我的青蛙总不回家的问题.尽管VMware提供封装技术和抽象技术,使我们受益匪浅,但数据保护领域发生的基本变革也带来了各项挑战.即使出现了VMware虚拟化,备份人员依然是牢骚最多的IT人员.最大的挑战在于保证数据的一致

Mysql 三种数据库引擎的选择问题

我们的在创建数据库的时候,一些小型的项目不会太注意数据库的引擎,一些大型项目会考虑数据库的的引擎的问题,直接影响后面的使用. MyISAM:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎.除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间.MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间

MYSQL三种安装方式--rpm包安装

1. 首先检查机器里是否已经存在MySQL $ rpm -qa | grep mysql 2. 去官网下载相应的rpm包:https://dev.mysql.com/downloads/mysql/ mysql-community-common-5.7.19-1.el6.x86_64.rpmmysql-community-client-5.7.19-1.el6.x86_64.rpmmysql-community-server-5.7.19-1.el6.x86_64.rpmmysql-commun