每天一次dump数据库并压缩的shell脚本
2017-07-03 15:21
253 查看
#! /bin/sh DBSERVER=192.168.1.236 USER=xxx PASS=xxx OUTPUT_DIR=data OLD_DIR=old_data LOG_FILE=log_dump.txt #默认的数据库 default_all_dbs=('open_account' 'xx' 'xxxx' 'xxxxx' 'xxxxxx' 'xxxxxxxxxx' 'xxxxxxx') MYSQLDUMPBIN_PATH='/software/mysql-5.6/bin/mysqldump' function log_message() { echo $1 $2 $3 >> ${LOG_FILE} #echo $1 $2 $3 } function dump_db() { DATABASE=$1 FILE=${DATABASE}.`date +"%Y%m%d"`.sql log_message "begin to dump db ${DATABASE} to ${FILE}.gz ." #use this command for a database server on remote. ${MYSQLDUMPBIN_PATH} --opt --protocol=TCP --user=${USER} --password=${PASS} --host=${DBSERVER} ${DATABASE} > ${FILE} gzip $FILE #log_message "${FILE}.gz was created." #ls -al ${FILE}.gz } function dump_table() { DATABASE=$1 TABLE=$2 FILE=${DATABASE}.${TABLE}.`date +"%Y%m%d"`.sql log_message "begin to dump table ${TABLE} of db ${DATABASE} to ${FILE}.gz ." #use this command for a database server on remote. ${MYSQLDUMPBIN_PATH} --opt --protocol=TCP --user=${USER} --password=${PASS} --host=${DBSERVER} ${DATABASE} ${TABLE} > ${FILE} gzip $FILE #log_message "${FILE}.gz was created." #ls -al ${FILE}.gz } while true do begin_time=`date +%s` log_message "Start dumpping:" "`date +'%Y-%m-%d %H:%M:%S'`" ".............................." if [ ! -d "$OLD_DIR" ]; then mkdir ${OLD_DIR} fi if [ ! -d "$OUTPUT_DIR" ]; then mkdir ${OUTPUT_DIR} fi rm -fr ${OLD_DIR}/*.sql.gz mv ${OUTPUT_DIR}/*.sql.gz ${OLD_DIR} #文件名本身是第0个参数,但不算在总参数个数里面 if [ $# == 0 ] ; then log_message "Usage: sh dump.sh db default or sh dump.sh db db1 db2 or sh dump.sh table dbname table1 table2..." exit 1 ; fi if [ $1 == "db" ]; then log_message "will dump dbs" if [ $2 == "default" ];then log_message "will dump all default dbs" for db in "${default_all_dbs[@]}" do dump_db $db done else log_message "will dump passed in dbs" i=1 begin=2 for db in "$@" do if [ "${i}" -ge "${begin}" ]; then dump_db $db fi let i++ done fi elif [ $1 == "table" ]; then db=$2 log_message "will dump tables in db $db" i=1 begin=3 for table in "$@" do if [ "${i}" -ge "${begin}" ]; then dump_table $db $table fi let i++ done else log_message "Usage: sh dump.sh db default or sh dump.sh db db1 db2 or sh dump.sh table dbname table1 table2..." exit 1 ; fi mv *.sql.gz ${OUTPUT_DIR} finish_time=`date +%s` log_message "Finish dumpping:" "`date +'%Y-%m-%d %H:%M:%S'`" seconds_cost=$[ finish_time - begin_time ] log_message "Total cost seconds:" "${seconds_cost}" log_message "" sleep 86400 done
相关文章推荐
- Linux下添加shell脚本使得nginx日志每天定时切割压缩 推荐
- CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中(转)
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
- CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
- 自动生成awr报告shell脚本--每天早8点到晚12点每四个小时生成一次
- CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
- 简单的每天备份数据库脚本
- linux服务器实现每天定时备份mysql数据库的shell脚本
- Linux下备份cvs数据库shell脚本
- SQL2000 日志清除和数据库压缩脚本
- Shell脚本一次新建多个用户
- Shell操作数据库流控脚本实例
- shell脚本备份数据库
- shell脚本:一次读取文件的一行,并输出
- 转(zjcxc)之SQL脚本--有关压缩数据库日志
- oracle导入导出命令详解(附数据库每天定时备份脚本)
- shell脚本:一次读取文件的一行【转】
- MSsql每天自动备份数据库并每天自动清除log的脚本