mysql备份脚本-mysqldump

时间:2023-03-10 08:01:33
mysql备份脚本-mysqldump

背景:全库备份

备份流程:

  1.生成DB列表,将DB名字写入文件

  2.定义备份函数,结果写入SQL文件

  3.压缩文件,减少磁盘占用量

  4.设置保留天数,定期删除n天之前的

  5.通过for循环读取DB列表文件,依次进行mysqldump

 #!/bin/bash

 PORT=''
PASSWD='admin'
SOCKED="/data/socket/mysql${PORT}.sock"
BACKUP_FILE='/data/mysqlData/backup'
BACKUP_SAVE_DAYS='' CMD1='show databases;'
Time=`date +%Y%m%d_%H%M%S`
EVERY_DAY_BACKUP_DIR="${BACKUP_FILE}/${Time}_backup"
DB_LIST="${EVERY_DAY_BACKUP_DIR}/db_list.txt" # function : check_db ===> db_list.txt
check_db()
{
mkdir -pv ${EVERY_DAY_BACKUP_DIR} >>/dev/null
touch ${DB_LIST} && chmod ${DB_LIST} && chown -R mysql.mysql ${DB_LIST}
/usr/local/mysql/bin/mysql -uadmin -p${PASSWD} -S ${SOCKED} -NBe"${CMD1}"|grep -v 'information_schema\|performance_schema\|mysql'>${DB_LIST} } # function : backup_db ===>xx.sql
backup_db()
{
/usr/local/mysql/bin/mysqldump -uadmin -p${PASSWD} -S ${SOCKED} $ >> ${EVERY_DAY_BACKUP_DIR}/$.sql
} # function : tar_file ===>xx.tar.gz
tar_file()
{
cd ${BACKUP_FILE}
tar -cf `date +%Y%m%d_%H%M%S`.tar.gz ${Time}_backup
rm -fr ${Time}_backup
} # function : delete xx.tar.gz : <before n days>
delete_file()
{
cd ${BACKUP_FILE}
/usr/bin/find -name "*.tar.gz" -mtime +${BACKUP_SAVE_DAYS} -exec rm {} \;
} # main_process
#
check_db #
cat ${DB_LIST}| while read line
do
oldIFS=${IFS}
backup_db ${line}
IFS=${oldIFS}
sleep
done #
tar_file # delete xx.tar.gz : before n days delete_file ${BACKUP_SAVE_DAYS}