|
线上使用的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
|
|
|