码迷,mamicode.com
首页 > 数据库 > 详细

Mysql/Mariadb备份

时间:2015-07-27 00:38:58      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:mysql备份

mysql的备份和还原

用处:

1、灾难恢复

2、审计

3、测试

备份类型:
    热备份、温备份、冷备份
        热备份:在线备份,读写操作可继续进行,不受影响,只有基于事务的存储引擎才能完成
        温备份:能读不能写
        冷备份:读写均不能进行,离线备份
    物理备份、逻辑备份
        物理备份:复制数据文件
        逻辑备份:把数据从库中提出出来保存为文本文件,无法保证浮点型的精度,和存储引擎无关,跨平台好,mysqldump
    完全备份、增量备份、差异备份
        完全备份:全部备份
        增量备份:仅备份上次完全备份或增量备份以后变化的数据
        差异备份:仅备份上次完全备份以来变化的数据
还原:需要测试
备份对象:
    数据
    配置文件
    代码:存储过程,存储函数,触发器
    OS相关的配置文件,如crontab配置计划及相关的脚本
    跟复制相关的配置信息
    二进制日志文件

热备份:
    myisam:几乎不可能,可以用逻辑卷来备份,最好温备份
    innodb:可以,xtrabackup,mysqldump

物理备份还是逻辑备份:
    物理备份:速度快,和文件系统无关
    逻辑备份:速度慢,丢失浮点数精度,方便使用文本处理工具直接对其处理,可移植性强跨mysql服务器版本

备份策略:
    完全+增量
    完全+差异

备份工具:
    mysqldump:逻辑备份,myisam(温备份),innodb(热备份),备份和恢复过程较慢,适于备份10G以下的数据,因为速度太慢。mysqldumper:多线程的mysqldump。很难实现差异或增量备份。
    mysqlhotcopy:物理备份,温备份工具,仅适用于MyIsam引擎
lvm-snapshot:接近于热备的工具,因为要先请求全局锁,而后创建快照,并在创建快照之后释放全局锁,使用cp,tar等工具进行物理备份,备份恢复速度快。很难实现增量备份,并且请求全局锁需要等待一段时间,在繁忙的服务器上尤其如此
    innodb:不能立即创建快照
备份备份工具:select clause into outfile ‘/path/to/somefile’
恢复:load data infile ‘/path/from/somefile’
    不会备份关系定义,仅备份表中的数据
    也是逻辑备份工具,速度上快于mysqldump
    没法实现增量
第三组工具:
    innodb:ibbackup商业工具
    xtrabackup:开源工具

备份策略:

1、mysqldump

2、lvm+二进制日志

3、xtrabackup


mysqldump用法:

mysqldump [options] [db_name[tbl_name ...]]

-u:指定用户名

-h:指定主机

--all-databases:备份所有数据库

--databases:备份指定的多个库tb1tb2 >/tmp/a.sql,这种会自动创建库

恢复时需先有数据库,没有则需创建

注意:备份前要加锁

--lock-all-tables:请求锁定所有表之后再备份,对myisaminnodbaria做温备

--single-tranaction:单事务,能够对innodb存储引擎实现热备,会自动加锁,与—lock-all-tables不能同时使用

备份代码:

--events:备份事件、调度器、代码

--routines:备份存储过程和存储函数

--triggers:备份触发器

备份时滚动日志:

--flush-logs:备份前、加锁后,滚动日志

复制时的同步位置标记:

--master-data={0|1|2}0:不记录,1:记录为changemaster语句2、记录为注释change master语句的

使用mysqldump备份:

请求锁:--lock-all-tables—single-tranaction进行innodb热备

滚动日志:--flush-logs

选择要备份的库:--databases

记录二进制日志文件及位置:--master-data=

 

恢复:恢复过程没有必要记录到二进制日志中,所以临时关闭二进制日志,关闭其他用户连接source

备份策略:基于mysqldump

备份:mysqldump+二进制日志文件;

周日做一次完全备份:备份的同时滚动日志

周一至周六:备份二进制日志;

恢复:

完全备份+各二进制日志文件中至此刻的事件

MySQL配置文件,以及与MySQL相关的OS配置文件在每次修改后都应该直接进行备份;

例1:备份和恢复单个库:

备份hellodb数据库

技术分享

查看

技术分享

删除mysql中的数据库

技术分享

导入备份

技术分享

说明导入之前数据库必须存在才行

创建数据库

技术分享

导入备份

技术分享

查看表

技术分享

例2:备份所有库:

--all-databases

技术分享

如果mysql数据库被删除,恢复时自动创建数据库

例3:备份多个库:

--databases db1 db2

技术分享

技术分享

如果mysql数据库被删除,恢复时自动创建数据库

例4:备份前应事先加锁

--lock-all-tables建议使用

--lock-tables,会导致表时间不一致,不建议使用

技术分享

例5:

创建ha数据库

技术分享

使用数据库ha,插入数据

技术分享

查看表

技术分享

查看表中数据

技术分享

备份

技术分享

查看二进制日志位置

技术分享

新增内容

技术分享

查看新增数据

技术分享

删除数据库

技术分享

备份新增数据的二进制日志文件

技术分享

恢复前先临时关闭二进制日志功能(当前会话)

技术分享

导入完全备份

技术分享

查看数据库

技术分享

使用ha数据库,并查看表

技术分享

导入增量备份

技术分享

查看表

技术分享

查看新增的数据

技术分享

还原二进制日志功能

技术分享

查看二进制日志位置

技术分享

lvm-snapshot:基于LVM快照的备份

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

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

3、请求全局锁完成后做日志滚动;做二进制日志文件及位置标记(手动进行)

备份步骤:

1、请求全局锁,并滚动日志

mysql> FLUSH TABLES WITH READLOCK;

mysql> FLUSH LOGS;

2、做二进制日志文件及位置标记(手动进行)

# mysql -e ‘show master status‘> /path/to/somefile

3、创建快照卷

# lvcreate -L   -s -n   -p r  /path/to/some_lv

4、释放全局锁

mysql> UNLOCK TABLES;

5、挂载快照卷并备份

# cp

6、备份完成之后,删除快照卷

恢复:

1、二进制日志保存好;

提取备份之后的所有事件至某sql脚本中;

2、还原数据,修改权限及属主属组等,并启动mysql

3、做即时点还原



使用Xtrabackup进行MySQL备份:

1、简介

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:

(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份检验;

(5)还原速度快;

安装:

[root@school ~]# yum -y install percona-toolkit-2.2.4-1.noarch.rpm percona-xtrabackup-2.1.8-733.rhel6.x86_64.rpm

innobackupex:

完全备份:

[root@school data]# mkdir /mybackups   #准备备份目录

临时改变二进制日志功能,导入数据库

技术分享

查看数据库

技术分享

开启二进制功能

技术分享

查看表的属性

技术分享

备份

技术分享

停止mysql服务

技术分享

删除mysql所有数据库

技术分享

准备阶段

技术分享

复制备份回mysql数据目录

技术分享

进入mysql数据目录

技术分享

更改属主属组并启动服务

技术分享

查看数据库

技术分享

增量备份

每一次恢复后都要立即做一次完全备份

技术分享

查看备份文件

技术分享

新增数据

技术分享

增量备份

技术分享

查看备份

技术分享

技术分享

技术分享

再新增数据

技术分享

增量备份

技术分享

查看备份信息

技术分享

最后二进制日志的位置

技术分享

新增数据

技术分享

删除数据库

技术分享

恢复完全备份

技术分享恢复第一次增量

技术分享

恢复第二次增量

技术分享

查看完全备份的及时点,和最后一次的增量及时点一样

技术分享

二进制点也和最后一次增量一样

技术分享

技术分享

更改属主属组

技术分享

保存二进制日志

技术分享

启动服务器

技术分享

关闭二进制功能,导入数据

技术分享

开启二进制功能

技术分享

查看数据

技术分享


本文出自 “行者” 博客,请务必保留此出处http://223228686.blog.51cto.com/2222284/1678504

Mysql/Mariadb备份

标签:mysql备份

原文地址:http://223228686.blog.51cto.com/2222284/1678504

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!