標籤:ati sock sql lis find mysq admin == mkdir
背景:全庫備份
備份流程:
1.產生DB列表,將DB名字寫入檔案
2.定義備份函數,結果寫入SQL檔案
3.壓縮檔,減少磁碟佔用量
4.設定保留天數,定期刪除n天之前的
5.通過for迴圈讀取DB列表檔案,依次進行mysqldump
1 #!/bin/bash 2 3 PORT=‘5001‘ 4 PASSWD=‘admin‘ 5 SOCKED="/data/socket/mysql${PORT}.sock" 6 BACKUP_FILE=‘/data/mysqlData/backup‘ 7 BACKUP_SAVE_DAYS=‘2‘ 8 9 CMD1=‘show databases;‘10 Time=`date +%Y%m%d_%H%M%S`11 EVERY_DAY_BACKUP_DIR="${BACKUP_FILE}/${Time}_backup"12 DB_LIST="${EVERY_DAY_BACKUP_DIR}/db_list.txt"13 14 # function : check_db ===> db_list.txt15 check_db()16 {17 mkdir -pv ${EVERY_DAY_BACKUP_DIR} >>/dev/null18 touch ${DB_LIST} && chmod 755 ${DB_LIST} && chown -R mysql.mysql ${DB_LIST}19 /usr/local/mysql/bin/mysql -uadmin -p${PASSWD} -S ${SOCKED} -NBe"${CMD1}"|grep -v ‘information_schema\|performance_schema\|mysql‘>${DB_LIST}20 21 }22 23 # function : backup_db ===>xx.sql24 backup_db()25 {26 /usr/local/mysql/bin/mysqldump -uadmin -p${PASSWD} -S ${SOCKED} $1 >> ${EVERY_DAY_BACKUP_DIR}/$1.sql27 }28 29 # function : tar_file ===>xx.tar.gz30 tar_file()31 {32 cd ${BACKUP_FILE} 33 tar -cf `date +%Y%m%d_%H%M%S`.tar.gz ${Time}_backup34 rm -fr ${Time}_backup35 }36 37 # function : delete xx.tar.gz : <before n days>38 delete_file()39 {40 cd ${BACKUP_FILE}41 /usr/bin/find -name "*.tar.gz" -mtime +${BACKUP_SAVE_DAYS} -exec rm {} \;42 }43 44 # main_process45 # 146 check_db47 48 # 249 cat ${DB_LIST}| while read line50 do 51 oldIFS=${IFS}52 backup_db ${line}53 IFS=${oldIFS}54 sleep 2055 done56 57 # 3 58 tar_file59 60 # 4 delete xx.tar.gz : before n days61 62 delete_file ${BACKUP_SAVE_DAYS}
mysql備份指令碼-mysqldump