MySQL 分库分表备份脚本
2013-07-16 13:28
525 查看
三更半夜折腾分库分表备份脚本,搞了半天没搞成,今天才发现写错了一个变量,白白浪费一小时。
下面贴出内容,主要是使用两个for循环把每个库的每个表列出来,然后使用mysqldump进行备份。
此脚本是在主从复制的从库中进行的,从库my.cnf有read-only,另外在备份前使用stop slave SQL_THREAD命令停止SQL线程,这样,除了拥有SUPER权限的用户可以进行更改外,在备份过程中就不会有数据更新了。从库有开binlog日志记录,flush logs之后记录下新binlog的文件名和位置以便恢复时使用。
本文出自 “linux探索” 博客,请务必保留此出处http://centosbird.blog.51cto.com/7266098/1250365
下面贴出内容,主要是使用两个for循环把每个库的每个表列出来,然后使用mysqldump进行备份。
此脚本是在主从复制的从库中进行的,从库my.cnf有read-only,另外在备份前使用stop slave SQL_THREAD命令停止SQL线程,这样,除了拥有SUPER权限的用户可以进行更改外,在备份过程中就不会有数据更新了。从库有开binlog日志记录,flush logs之后记录下新binlog的文件名和位置以便恢复时使用。
#!/bin/bash BACKUP_DATE=`date +%F\ %T` WEEK=`date +%w` IP=`/sbin/ifconfig eth0|/bin/grep "inet addr"|/bin/cut -d : -f 2|/bin/awk '{print $1}'` BACKUP_PATH="/backup/${IP}/mysql" LOG_FILE="${BACKUP_PATH}/mysql_${BACKUP_DATE}.log" MYSQL_USER='root' MYSQL_PASSWORD='baichi' MYSQL_PATH="/usr/local/mysql/bin" MYSQL="${MYSQL_PATH}/mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD}" MYSQL_DUMP="${MYSQL_PATH}/mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD}" # if BACKUP_PATH doesn't exists,mkdir [ ! -d "${BACKUP_PATH}" ] && mkdir -p "${BACKUP_PATH}" #========================Backup start========================== echo "--------------backup start ${BACKUP_DATE}-----------------">>${LOG_FILE} # stop slave SQL_THREAD and flush logs and read from master status to know binlog file name and positon ${MYSQL} -e "stop slave SQL_THREAD;flush logs;" ${MYSQL} -e "show master status \G">>${LOG_FILE} echo >>${LOG_FILE} #start backup every table DBNAME="`${MYSQL} -e 'show databases;'|sed '1d'`" echo "DATABASE LIST:" >>${LOG_FILE} echo ${DBNAME}>>${LOG_FILE} echo >>${LOG_FILE} for dbname in ${DBNAME} do mkdir -p "${BACKUP_PATH}/${dbname}_${WEEK}" #cd /backup/${dbname}_${WEEK} echo -e "${dbname} backup start ${BACKUP_DATE}">>"${LOG_FILE}" TABNAME=`${MYSQL} ${dbname} -e 'show tables;'|sed '1d'` echo "TABLE LIST:" >>${LOG_FILE} echo ${TABNAME}>>${LOG_FILE} echo >>${LOG_FILE} for tabname in ${TABNAME} do ${MYSQL_DUMP} ${dbname} ${tabname}>${BACKUP_PATH}/${dbname}_${WEEK}/${tabname}.sql done done ${MYSQL} -e "start slave SQL_THREAD;flush logs;" echo "--------------backup end ${BACKUP_DATE}-----------------">>${LOG_FILE} mail -s "MySQL fenbiao backup log" root@localhost<"${LOG_FILE}"
本文出自 “linux探索” 博客,请务必保留此出处http://centosbird.blog.51cto.com/7266098/1250365
相关文章推荐
- 生产环境下mysql分库备份与分表备份脚本
- mysql--用脚本实现分库分表备份
- MySQL备份之分库分表备份脚本
- 数据库mysql 自动分库分表备份脚本
- mysql 分库备份脚本
- Linux下MYSQL分库和分表备份方式(学习小结)
- Mysql DBA 高级运维学习笔记-Mysql增量备份及分库分表备份数据恢复实战
- 脚本学习之---菜鸟级别入门---mysql简单分库备份【一】
- 数据库mysql 分库备份脚本
- MYSQL分库备份脚本案例
- 脚本学习之一---菜鸟级别入门---mysql简单分库备份【二】
- MySQL分库,分表备份的思路和方法
- shell整理(42)====mysql 分库分表备份
- MySQL逻辑备份mysqldump全备脚本
- mysql数据库分库备份脚本
- 备份mysql脚本
- Windows下简单的Mysql备份BAT脚本分享
- mysql 的分库分表操作
- 每天备份 mysql 数据库的脚本
- mysql&nbsp;分库分表