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