Mysql:通用mysql备份脚本:纯shell实现:支持自动包含用户数据库、支持压缩、支持自动清理

#!/bin/bash

MYHST=127.0.0.1
MYUSR=root
MYPWD=pass

PREFIX=bkdb
SUFFIX=`date +%Y%m%d`.sql
DESTDIR=/bak

#----------------------------------------------------------------------------
if [ ! -e "${DESTDIR}" ]
then
  echo "fatal error : ${DESTDIR} not exists!"
  exit 1
fi

#----------------------------------------------------------------------------
find "${DESTDIR}" -name "${PREFIX}-*.zst" -mtime +60 -exec rm {} \;

#----------------------------------------------------------------------------
echo "begin ..."
for DB in $(mysql -h${MYHST} -u${MYUSR} -p${MYPWD} -N -e 'show databases' 2>/dev/null)
do
  for SYSDB in information_schema performance_schema sys
  do
    if [[ ${SYSDB} == ${DB} ]]; then continue 2; fi
  done

  echo "mysqldump database : ${DB} ..."
  mysqldump -h${MYHST} -u${MYUSR} -p${MYPWD} --single-transaction --events --routines -d -B ${DB} | zstd -f -T0 > ${DESTDIR}/${PREFIX}-${DB}_d_${SUFFIX}.zst  2>/dev/null
  mysqldump -h${MYHST} -u${MYUSR} -p${MYPWD} --single-transaction --events --routines    -B ${DB} | zstd -f -T0 > ${DESTDIR}/${PREFIX}-${DB}_${SUFFIX}.zst    2>/dev/null
done
echo "end."

 

posted on 2025-09-10 10:02  jinzhenshui  阅读(8)  评论(0)    收藏  举报