作为一名合格的MySQL DBA,备份是重中之重。为了保证备份集的安全可靠,除了集中存储以外还有其他更好的方案嘛?
当然是有的,可以存储在OSS上或者分布式存储上。那么问题来了如何能够实现自动备份,
并且上次到OSS上,不需要人工干预,节约大量的时间去悠哉悠哉的喝喝茶、看看报呢。
常见的逻辑备份 MySQLdump 和MySQLpump
常见的物理备份 xtrabackup
关闭MySQL 拷贝文件 启动MySQL
#本文重点和程序都使用xtrabackup备份,其他备份姿势请报名“知数堂” ,吴老司机带你飞。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwIWN5QWM3gTMiRTO1UmNiBTZ4ATYwczY2UWY1MDMkVjZzYWYhRGMw8CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
#附上一张原理图 来自阿里数据库内核月报
基本操作
主要实现目标
能够实现 基于xtrabackup 的MySQL自动化备份 并且上传到OSS上
(ceph暂时不支持 ,需要那位好心的小伙伴提供一个ceph的测试环境,后续就可以支持。)
目录lib下 innodb_backup.py 主要实现 xtrabackup备份和自动apply-log
根目录的index.py 主要实现 调用lib下面的innodb_backup下面的函数 并且自动上次到oss上,需要配置oss的认证信息。
根目录test.py 主要实现 下载最新的备份,并且配置启动。目的主要是为了实现自动校验。
关于备份校对 我推荐使用“心跳表”的方式来校队备份。
#关于“心跳表”请来知数堂学习一下MySQL复制监控或者私信田帅萌~
1 需要单独的物理网络做备份网络,避免在执行备份传输的时候造成网络阻塞,从而影响业务
2很多个备份同时执行的时候,需要考虑一个队列问题。避免同时上传,导致网络阻塞。后果本地备份成功,上次oss或者ceph失败。需要设计一个合理的队列并限速。先上传核心的库。每次同时上传4个,等待上传成功后在进行下一个队列的传输。
3 本地备份留2天,oss上或者ceph根据空间大小和库的大小自行决定设计
欢迎各位有想法的或者想要实现更好的备份姿势,请联系我 一起交流~