叮咚~您的MySQL云备份已上线

叮咚~您的MySQL云备份已上线

1.备份的重要性

备份是DBA的救命稻草,没有备份就等于没有满血复活的机会~ 所以作为一名光荣的MySQL DBA 一定要做好备份,并校队备份的可用性哦。

2.常见的MySQL备份方式

2.1 逻辑备份

常见的逻辑备份 MySQLDUMP 和MySQLpump

2.2 物理备份

常见的物理备份 xtrabackup

2.3 冷备份

关闭MySQL 拷贝文件 启动MySQL
#本文重点和程序都使用xtrabackup备份,其他备份姿势请报名“知数堂” ,吴老司机带你飞。

3. xtrabackup原理讲解

首先会启动一个 xtrabackup_log后台检测的进程 实时检测mysql redo的变化 一旦发现redo有新的日志写入 立刻将日志写入到xtrabackup_log中
复制innodb的数据文件和系统表空间文件 idbata1到对应的默以默认时间戳为备份目录的地方
复制结束后 执行 flush table with read lock操作
复制 .frm .myd .myi文件
并且在第一时刻获得binary log 位置
将表进行解锁 unlock tables 
停止xtrabackup_log进程

叮咚~您的MySQL云备份已上线_第1张图片
#附上一张原理图 来自阿里数据库内核月报

基本操作

1.全量备份

innobackupex  --defaults-file=/etc/my.cnf --user=root --password=redhat /data/backup
--defaults-file 配置文件
--user 表示用户名
--password 表示密码
/data/backup 备份路径

2. 应用redo
innobackupex --apply-log 2017-02-17_11-50-43

3.恢复
1,需要恢复地方的MySQL需要关闭
2.目前datadir 为空
3.手工把刚applu的文件cop过去或者
 innobackupex  --copy-back /data/backup/2017-02-17_11-36-47/
4.更改copy过去的权限
chow -R mysql:mysql /data/backup/2017-02-17_11-36-47/
5.启动mysql

4.云备份

4.1为什么选择云备份

因为云备份比传统备份更加可靠,在价格上更有优势,不用考虑硬件的损耗和成本。

4.2 安全性

毕竟MySQL服务器一般都是内部网络,不会有对外网络,这时候需要安全组和网络组的同学开放一个策略到阿里的oss上传放行。如果不可以的话,那么需要搭建一个内部的分布式存储ceph来替代oss。

4.3小程序

https://github.com/enmotplinux/mysql_backup

能够实现,备份MySQL并且上传到oss上。(ceph暂时不支持 ,需要那位好心的小伙伴提供一个ceph的测试环境,后续就可以支持。)其中test.py能实现下载最新的备份。未来实现 下载最新的备份 并且自动校队。

5.注意事项

5.1 需要单独的物理网络做备份网络,避免在执行备份传输的时候造成网络阻塞,从而影响业务
5.2很多个备份同时执行的时候,需要考虑一个队列问题。避免同时上传,导致网络阻塞。后果本地备份成功,上次oss或者ceph失败。需要设计一个合理的队列并限速。先上传核心的库。每次同时上传4个,等待上传成功后在进行下一个队列的传输。
5.3 本地备份留2天,oss上或者ceph根据空间大小和库的大小自行决定设计

欢迎各位有想法的或者想要实现更好的备份姿势,请联系我 一起交流~


原文链接

你可能感兴趣的:(叮咚~您的MySQL云备份已上线)