设为首页 收藏本站
查看: 2032|回复: 0

[经验分享] Mysql/Mariadb备份

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-27 08:44:21 | 显示全部楼层 |阅读模式
mysql的备份和还原
用处:

1、灾难恢复
2、审计
3、测试
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
备份类型:
    热备份、温备份、冷备份
        热备份:在线备份,读写操作可继续进行,不受影响,只有基于事务的存储引擎才能完成
        温备份:能读不能写
        冷备份:读写均不能进行,离线备份
    物理备份、逻辑备份
        物理备份:复制数据文件
        逻辑备份:把数据从库中提出出来保存为文本文件,无法保证浮点型的精度,和存储引擎无关,跨平台好,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:请求锁定所有表之后再备份,对myisam、innodb、aria做温备
--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数据库
wKiom1W0QQfxTF6yAAB4TC3b1rI870.jpg
查看
wKioL1W0QvHQ8oOGAABIAaMqTS8014.jpg
删除mysql中的数据库
wKioL1W0Q5ii9i-TAABlhTSLEX4021.jpg
导入备份
wKiom1W0QbizyWMLAABw0bytBoE175.jpg
说明导入之前数据库必须存在才行
创建数据库
wKioL1W0RCfzczWwAABgyI5T6_0301.jpg
导入备份

wKioL1W0RFrBoMZrAAA4ubuglko537.jpg
查看表
wKioL1W0RImCInmOAADO9uFb9jM624.jpg
例2:备份所有库:

--all-databases
wKioL1W0RdGz3NU-AACHwJPoUWc141.jpg
如果mysql数据库被删除,恢复时自动创建数据库
例3:备份多个库:

--databases db1 db2
wKiom1W0RGLRRC7IAABW2P-k6ZA905.jpg
wKioL1W0RkvTHz9bAAA50UGGdic473.jpg
如果mysql数据库被删除,恢复时自动创建数据库
例4:备份前应事先加锁
--lock-all-tables建议使用
--lock-tables,会导致表时间不一致,不建议使用
wKioL1W0SPuCX1GtAACUEHEraes389.jpg
例5:
创建ha数据库
wKioL1W0h6ThNHB5AABgHYBG45s733.jpg
使用数据库ha,插入数据
wKiom1W0hcHDWIacAAEoG7xKFbQ203.jpg
查看表
wKioL1W0h7PQArSoAAB4z8jH5BU426.jpg
查看表中数据
wKiom1W0hdCDByWyAABryNZZRVI062.jpg
备份
wKiom1W0hdqjO1EYAADFbwCIFSM946.jpg
查看二进制日志位置
wKioL1W0h8uiPVO9AADGAatD0aQ810.jpg
新增内容
wKioL1W0h8yQRz7dAAEbhPjoeLI694.jpg
查看新增数据
wKiom1W0hejzDBc8AABn7DAi8jo895.jpg
删除数据库
wKioL1W0h96BAunuAABazjCXUSI893.jpg
备份新增数据的二进制日志文件
wKiom1W0hfTziUbdAACc-AKwPg0254.jpg
恢复前先临时关闭二进制日志功能(当前会话)
wKiom1W0hfWiSV1HAABjJvt0erY055.jpg
导入完全备份
wKioL1W0h-CSMOw1AAA3QIdZV3U764.jpg
查看数据库
wKioL1W0h-HTvg30AADTer--Pa4652.jpg
使用ha数据库,并查看表
wKiom1W0hfeB5PYnAAClU8iQzBs391.jpg
导入增量备份
wKioL1W0h-GQyxlxAAA21KKrzfI916.jpg
查看表
wKioL1W0h-LxKykRAACPQfm8FR4532.jpg
查看新增的数据
wKiom1W0hfnRVUIcAACB065qXF0110.jpg
还原二进制日志功能
wKioL1W0h-PhV7leAABfgwptKTA759.jpg
查看二进制日志位置
wKioL1W0iW-DeELkAAEZ8GvnSMs778.jpg
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)还原速度快;
安装:

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



innobackupex:
完全备份:
1
[iyunv@school data]# mkdir /mybackups   #准备备份目录



临时改变二进制日志功能,导入数据库
wKioL1W0nZPTD4MAAACZxmPP0FY762.jpg
查看数据库
wKioL1W0ndzRryr8AADmOJwcKQE849.jpg
开启二进制功能
wKiom1W0m6vAJLoCAABgsHHGCb4375.jpg
查看表的属性
wKioL1W0n_Dz08UlAAHO0DfaI60969.jpg
备份
wKioL1W0pAeTuiogAABTI95bWUc892.jpg
停止mysql服务
wKioL1W0pXGDZ_Y7AABbSTDgfM8415.jpg
删除mysql所有数据库
wKiom1W0o9TgRee-AABQBK2kvAI265.jpg
准备阶段
wKiom1W0pEXiCbbWAAB8nWvYtj4672.jpg
复制备份回mysql数据目录
wKioL1W0peXB_PlOAABzB1pSf-Q536.jpg
进入mysql数据目录
wKioL1W0pmjD7PeEAAA5Qo8S1Yg997.jpg
更改属主属组并启动服务
wKiom1W0pIHDumY5AANR0ribCmg695.jpg
查看数据库
wKioL1W0pveQX9teAAD9_drbjjU675.jpg
增量备份

每一次恢复后都要立即做一次完全备份
wKioL1W0qg6zp7S-AABTLdEK-IY920.jpg
查看备份文件
wKiom1W0qCWBonTXAACMOQDMPkE740.jpg
新增数据
wKioL1W0qhCCS7eVAAE6KbNxcnw678.jpg
增量备份
wKiom1W0qCfxkQEwAACC2czMTvA107.jpg
查看备份

wKioL1W0qrXg9Dn7AAFCIIsDYeQ780.jpg

wKiom1W0qMyg-K2AAAC5HocOSxw494.jpg
wKioL1W0qriix-uKAAIPLFhtKXA035.jpg
再新增数据

wKioL1W0q7GCYJDyAADPIxi0IAE378.jpg
增量备份
wKiom1W0qcjy7cVWAAC7pTSrs_8050.jpg
查看备份信息
wKioL1W0q7PgpIBdAAHasP-9cqQ998.jpg
最后二进制日志的位置
wKioL1W0rBHjNu7JAAB3i0xF1_k655.jpg
新增数据
wKioL1W0rJeBJPQ8AACoc506gSU502.jpg
删除数据库
wKiom1W0qunD0MTGAABS7ijKA7k081.jpg
恢复完全备份
wKioL1W0rsSw3vEjAACBT0F77Tw020.jpg 恢复第一次增量
wKiom1W0rPSzF6lzAADGnkJIPlI847.jpg
恢复第二次增量
wKioL1W0rxHAF09SAADBwY_i6h8006.jpg
查看完全备份的及时点,和最后一次的增量及时点一样
wKiom1W0rY6ghAiBAAHN919b4Ps820.jpg
二进制点也和最后一次增量一样
wKioL1W0r77irYPMAAB28dOzyeA074.jpg
wKiom1W0rkmAjoMnAAB78sIB7eQ344.jpg
更改属主属组
wKiom1W0r7-xrR9-AAKBKn9pU3s063.jpg
保存二进制日志
wKiom1W0r8TC65PDAACYp5zVb_I778.jpg
启动服务器
wKioL1W0sjWBvYwwAABUMOF3yPA593.jpg
关闭二进制功能,导入数据
wKioL1W0sjajPRLMAACUe7Ge_FE036.jpg
开启二进制功能
wKiom1W0sE2RHQm1AABaZgFeKtI513.jpg
查看数据
wKioL1W0so3C5QGAAACSkThvk3s764.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-90966-1-1.html 上篇帖子: MySQL Study之--MySQL普通用户无法本地登陆 下篇帖子: MySQL优化方向&思路
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表