Theme:生产环境:mysqlbackup逻辑备份的一种shell脚本实现

本文介绍MySQL物理及逻辑备份的Shell脚本实现,通过mysqlbackup与mysqldump工具进行全库备份,并对比两种备份方式的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

																				 note-taker:Ethan_Yang 
																			 recording time: 2019/07/18 
																						number of docs:5

【引言】

《生产环境:mysqlbackup物理备份的一种shell脚本实现》
此文讲述了企业版MySQL使用mysqlbackup工具进行物理备份的一种shell脚本实现,简要温习下,其核心代码为:

############   Declare environment variables  #########
record_log=/mysqldata/backup/
log_name=physical_fullback_record.log
 
backup_dir=/mysqldata/backup/back_images
metadata_dir=/mysqldata/backup/back_metadata

mysqlbackup --user=root --password=XXXXXX \
--socket=/mysqldata/tmp/mysql.sock --host=localhost \
--backup-image=$backup_dir/physical_fullback_`date '+%m-%d-%Y'`.mbi \
--backup-dir=$metadata_dir/fullback_info_`date '+%m-%d-%Y'` --compress-level=9 backup-to-image

此为物理备份的核心命令

###  delete the physical_images and metadata_infor from 7 days ago  ###
 
images_dir=/mysqldata/backup/back_images
find $images_dir -type f -name "physical_fullback_*.mbi" -mtime +7 -exec rm -rf {} \;
 
metadata_dir=/mysqldata/backup/back_metadata
find $metadata_dir -type d -name "fullback_info_*" -mtime +7 -exec rm -rf {} \;

删除7天以前的备份集镜像和备份元数据。

有朋友想问:逻辑备份的核心代码该怎么写?

其实也很简单,只要使用mysqldump命令替换掉上述两个核心部分的内容即可,今天在写了一个脚本,测试环境试运行无误后,也开始在生产环境下较小的库中开始了运行,脚本如下:

#######################################################
# $Name: mysql_logical_fullback.sh
# $Version: v1.0
# $Author: ethan_yang
# $Create Date: 2019-07-16
# $Description: MySQL full_backup all-databases
#######################################################

#!bin/bash
PATH=$PATH:$HOME/bin

export PATH=/mysqlsoft/mysql/bin:$PATH

backup_dir=/mysqldata/backup
backup_log=full_backup_dcm.log

echo "--------------------Full Backup Starting------------------"  >> $backup_dir/$backup_log 
date >> $backup_dir/$backup_log

/usr/local/mysql/bin/mysqldump --single-transaction --max_allowed_packet=1024M --master-data=2 \
--all-databases -E -R --triggers --set-gtid-purged=off --socket=/tmp/mysql.sock \
-uroot -pAirchina_869 > /mysql/backup/logical_fullbackup_`date '+%m-%d-%Y'`.sql

echo "--------------------Full Backup Ended------------------"  >> $backup_dir/$backup_log
date >> $backup_dir/$backup_log

backup_log=/mysqldata/backup
find $backup_log -type f -name "logigal_fullDB_*.sql" -mtime +7 -exec rm -rf {} \;

每天凌晨开始进行逻辑全备份,定时脚本为:

[root@dcm-maindb ~]# crontab -l
0 0 * * * /mysqldata/backup/full_backup.sh >/dev/null 2>&1 

真实环境验证逻辑备份和物理备份的时间各位多少,如下mysql库大小为约200G。

备份出来的文件大小:

[root@dcm~]# du -sh physical_fullback_07-18-2019.mbi \
logical_fullbackup_07-17-2019.sql

284G    physical_fullback_07-18-2019.mbi
245G    logical_fullbackup_07-17-2019.sql

逻辑备份备份时间为:

--------------------Logical Full Backup Starting------------------
2019年 07月 17日 星期三 16:48:59 CST
2019年 07月 17日 星期三 19:19:04 CST
--------------------Logical Full Backup Ended------------------
耗时:2小时31分钟

物理备份时间较长为:

--------------------physical Full Backup Starting------------------
2019年 07月 18日 星期四 07:37:06 CST
2019年 07月 18日 星期四 08:46:06 CST
--------------------physical Full Backup Ended------------------
耗时:1小时9分钟

上述逻辑备份和物理备份的耗时时间对比还是很明显。

【结语】

  1. 延续上一篇文章讲述mysqlbackup物理备份的文章,本文重点介绍了如何使用官方mysqldump逻辑备份工具,编写了一个生产环境使用的shell全备份脚本;
    2.从结果上来看,物理备份比逻辑备份快一倍的速度,结果上还是比较满意;但随着库大小的增加,如果库大小到了近T级别,MySQL官方mysqlback物理备份方式的依旧不是很乐观,这时候就必须要考虑追加增量备份了;后续推文会追加增量备份,看下逻辑增量备和物理增量备的时间差比,以及各自的库恢复时间对比。
    3.MySQL逻辑备份shell脚本已经上传至个人github上,有兴趣的朋友可以参考下。链接为:

     https://github.com/polestarYang/mysqlgit.git
    

如果大家觉得此文有帮助,欢迎关注个人微信公众号;

长按识别二维码或公众号搜索“一森咖记”

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值