翼度科技»论坛 编程开发 mysql 查看内容

mydumper

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
mydumper 是一款社区开源的逻辑备份工具。
该工具主要由 C 语言编写,目前由 MySQL 、Facebook 等公司人员开发维护。
https://blog.csdn.net/qq_43692950/article/details/136711943
一、安装mydumper
备份没问题,还挺稳妥的,就是费时间;测了一下,10个G的数据备份大概10分钟,还原大概30分钟
centos安装:
  1. 直接安装rpm包即可;如果后续不能用了,再百度吧
  2. 下载地址:https://github.com/mydumper/mydumper/releases/tag/
  3. 包名:mydumper-0.14.3-1.el7.x86_64.rpm
  4. 安装:`rpm -ivh mydumper-0.14.3-1.el7.x86_64.rpm`
复制代码
Ubuntu22.04安装:
  1. 先装依赖:
  2. 下载地址:https://mirrors.aliyun.com/ubuntu/pool/main/g/gcc-12/
  3. 包名:libatomic1_12.1.0-2ubuntu1~22.04_amd64.deb;如果系统更新过就安装:libatomic1_12.3.0-1ubuntu1~22.04_amd64.deb
  4. 再装软件:
  5. 下载地址:https://github.com/mydumper/mydumper/releases/tag/
  6. 包名:mydumper_0.14.5-2.jammy_amd64.deb
  7. // 先装依赖
  8. `dpkg -i libatomic1_12.1.0-2ubuntu1~22.04_amd64.deb`
  9. // 再装软件
  10. `dpkg -i mydumper_0.14.5-2.jammy_amd64.deb`
复制代码
// 查看版本mydumper -V
二、备份脚本
Tip:建议把【mydumper】安装到目标服务器,非常建议
不需要提前创建数据库
2.1、指定数据表备份
指定数据库备份/还原脚本
  1. vim mns.sh
  2. #!/bin/bash
  3. echo `date "+%Y-%m-%d %H:%M:%S"`"[copydate开始]"
  4. ## 备份源库数据
  5. copydata() {
  6. mydumper -u root  -p '123456' -h 192.168.0.172  -P 3306 --regex '^(mns_db_back\.security_role$|mns_db_back\.system_app_page$)' -C -c -o /mnt/backup/data -v 2 --logfile /mnt/backup/mydumper.log
  7. }
  8. # 还原到目标库
  9. restore() {
  10. myloader -u root  -p '123456' -h 127.0.0.1  -P 3306 --regex '^(mns_db_back\.security_role$|mns_db_back\.system_app_page$)' -C -d /mnt/backup/data -v 2 --logfile /mnt/backup/myloader.log
  11. }
  12. # 由于我的mydumper安装在目标库上,所有目标库IP 使用 127.0.0.1  
  13. copydata
  14. echo `date "+%Y-%m-%d %H:%M:%S"`"[copydata完成]"
  15. restore
  16. echo `date "+%Y-%m-%d %H:%M:%S"`"[restore完成]"
复制代码
2.1、全量备份
全量备份/还原脚本
  1. #!/bin/bash
  2. echo `date "+%Y-%m-%d %H:%M:%S"`"[copydate开始]"
  3. ## 备份源库数据
  4. copydata() {
  5. mydumper -u root  -p '123456' -h 192.168.0.172  -P 3306 -B mns_db_back -C -c -o /mnt/backup/data -v 2 --logfile /mnt/backup/mydumper.log
  6. }
  7. # 还原到目标库
  8. restore() {
  9. myloader -u root  -p '123456' -h 127.0.0.1  -P 3306 -B mns_db_back -C -d /mnt/backup/data -v 2 --logfile /mnt/backup/myloader.log
  10. }
  11. # 由于我的mydumper安装在目标库上,所有目标库IP 使用 127.0.0.1  
  12. copydata
  13. echo `date "+%Y-%m-%d %H:%M:%S"`"[copydata完成]"
  14. restore
  15. echo `date "+%Y-%m-%d %H:%M:%S"`"[restore完成]"
复制代码
三、备份实测
每天凌晨5点,自动全量备份一次,拷贝到备份目录,带日期
  1. // 第一步,先编写全量备份脚本,备份完成的data需要加日期,方便移动到history目录
  2. vim /dump/dump.sh
  3. #!/bin/bash
  4. echo `date "+%Y-%m-%d %H:%M:%S"`"[copydate开始]"
  5. ## 备份源库数据
  6. copydata() {
  7. mydumper -u root  -p 'Iyungu@2023' -h 192.168.0.186  -P 3306 -B mns_db -C -c -o /dump/data_$(date +\%Y\%m\%d) -v 2 --logfile /dump/mydumper.log
  8. }
  9. copydata
  10. echo `date "+%Y-%m-%d %H:%M:%S"`"[copydata完成]"
  11. // 因为下次备份会覆盖【/dump/data】的内容,所以备份成功之后需要把【/dump/data】的文件迁移到别的目录,以便下次备份
  12. echo `date "+%Y-%m-%d %H:%M:%S"`"[mv开始]"
  13. mv /dump/data_$(date +\%Y\%m\%d) /dump/data_history/
  14. echo `date "+%Y-%m-%d %H:%M:%S"`"[mv完成]"
  15. // 第二步,添加定时任务
  16. vim /etc/crontab
  17. // 每天凌晨5点执行一次
  18. 00 05 * * *   root   /bin/bash /dump/dump.sh > /dump/logs/mydump_$(date +\%Y\%m\%d).log 2>&1
  19. // 重启定时任务
  20. service crond restart
复制代码
这里有个小小的逻辑问题,就比如说,今天是20240402,备份的时候输出的时间就是20240402,但mydumper备份的数据其实是【20240401-20240402】4月1号5点-4月2号5点之间的数据,如果要恢复4月1号的数据,就需要用4月2号的备份还原,自己绕一下
来源:https://www.cnblogs.com/qxle/p/18124155
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具