ts7758258 发表于 2018-9-28 06:41:39

mysql备份脚本(线上使用的)

  线上使用的mysql备份脚本,使用mysqldump备份,在mysql master上使用的。
  在本地备份完成之后,同时传输一份备份文件至远程的ftp服务器上,实现异地备份.
  
本机保存20天的备份文件, 远端保存60天的备份文件.
  

  
脚本在服务器上运行了快两年了,很稳定.

  我的nagios也很忠诚,哈哈.
  

  
# 建立备份用户.
  


[*]mysql> grant select,lock tables,reload,super,file,show view on *.* to 'mysqlbackup'@'localhost' identified by 'mysql_ritto';
[*]mysql> flush privileges;
  

  
# 脚本如下.
  


[*]#!/bin/bash
[*]
[*]USERNAME=mysqlbackup
[*]PASSWORD=mysql_ritto
[*]
[*]DATE=`date +%Y-%m-%d`
[*]OLDDATE=`date +%Y-%m-%d -d '-20 days'`
[*]FTPOLDDATE=`date +%Y-%m-%d -d '-60 days'`
[*]
[*]
[*]MYSQL=/usr/local/mysql/bin/mysql
[*]MYSQLDUMP=/usr/local/mysql/bin/mysqldump
[*]MYSQLADMIN=/usr/local/mysql/bin/mysqladmin
[*]SOCKET=/tmp/mysql.sock
[*]
[*]BACKDIR=/data/backup/db
[*][ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[*][ -d ${BACKDIR}/${DATE} ] || mkdir ${BACKDIR}/${DATE}
[*][ ! -d ${BACKDIR}/${OLDDATE} ] || rm -rf ${BACKDIR}/${OLDDATE}
[*]
[*]for DBNAME in mysql db1 db2 db3
[*]do
[*]   ${MYSQLDUMP} --opt --master-data=2 --tz-utc=true -u${USERNAME} -p${PASSWORD} -S${SOCKET} ${DBNAME} | gzip > ${BACKDIR}/${DATE}/${DBNAME}-backup-${DATE}.s l.gz
[*]   logger "${DBNAME} has been backup successful - $DATE"
[*]   /bin/sleep 5
[*]done
[*]
[*]
[*]HOST=10.1.2.22
[*]FTP_USERNAME=db1
[*]FTP_PASSWORD=db1_ritto
[*]
[*]cd ${BACKDIR}/${DATE}
[*]
[*]ftp -i -n -v
页: [1]
查看完整版本: mysql备份脚本(线上使用的)