增量dump mysql的shell脚本
2017-07-19 15:11
281 查看
#! /bin/sh # sh dump.sh & DBSERVER=192.168.1.239 USER=xxxx PASS=xxxx MYSQLDUMPBIN_PATH='/software/mysql-5.6/bin/mysqldump' #DBSERVER=xxxxxx #USER=xxxx #PASS=xxxx #MYSQLDUMPBIN_PATH='/usr/bin/mysqldump' OUTPUT_DIR=data OLD_DIR=old_data LOG_FILE=log_dump.txt #默认的数据库 normal_dbs=('open_account' 'open_agent' 'open_epay' 'open_operate' 'open_web') log_message() { echo $* >> ${LOG_FILE} #echo $* } dump_normal_db() { DATABASE=$1 FILE=${DATABASE}.`date +"%Y%m%d"`.sql begin_time=`date +%s` log_message "Start dumpping ${DATABASE} to ${FILE}.gz " "`date +'%Y-%m-%d %H:%M:%S'`" ".............................." #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 finish_time=`date +%s` seconds_cost=$[ finish_time - begin_time ] log_message "Finish dumpping " "`date +'%Y-%m-%d %H:%M:%S'`" " total cost ${seconds_cost} seconds ......................." } dump_open_sms() { DATABASE="open_sms" FILE=${DATABASE}.`date +"%Y%m%d"`.sql log_message "Start dumpping ${DATABASE} to ${FILE}.gz " "`date +'%Y-%m-%d %H:%M:%S'`" ".............................." IGNORED_TABLES_STRING="" begin_time=`date +%s` for((i=-366;i<-5;i++)) do date_end_str="20170715" date_str=`date -d "${i} day" "+%Y%m%d"` #如果定义在for外面的话,会有语法错误,fuck if [ "${date_str}" \< "${date_end_str}" ] ; then #log_message "ignore date:" ${date_str} table_name="sms_log_"${date_str} #log_message ${table_name} IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${table_name} " table_name="flow_log_"${date_str} IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${table_name} " table_name="sms_to_"${date_str} IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${table_name} " table_name="sms_submit_"${date_str} IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${table_name} " table_name="push_smsstatus_"${date_str} IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${table_name} " #log_message "After is :"${IGNORED_TABLES_STRING} else break fi done IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.smslog " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.smsto " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.phone139 " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.sms_sign_ignore139_suffix " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.sms_status_139_log " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.sms_status_139_log_bak " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.mo_sms_fail_log " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.mo_sms_fail_log_bk " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.mo_sms_log " #log_message "Ignore tables: "${IGNORED_TABLES_STRING} ${MYSQLDUMPBIN_PATH} --opt --protocol=TCP --user=${USER} --password=${PASS} --host=${DBSERVER} ${DATABASE} ${IGNORED_TABLES_STRING} > ${FILE} gzip $FILE finish_time=`date +%s` seconds_cost=$[ finish_time - begin_time ] log_message "Finish dumpping " "`date +'%Y-%m-%d %H:%M:%S'`" " total cost ${seconds_cost} seconds ......................." } dump_open_billing() { DATABASE="open_billing" IGNORED_TABLES_STRING="" FILE=${DATABASE}.`date +"%Y%m%d"`.sql log_message "Start dumpping ${DATABASE} to ${FILE}.gz " "`date +'%Y-%m-%d %H:%M:%S'`" ".............................." begin_time=`date +%s` for((i=-366;i<-5;i++)) do date_end_str="20170715" #如果定义在for外面的话,会有语法错误,fuck date_str=`date -d "${i} day" "+%Y%m%d"` #echo "current date:" ${date_str} "VS" ${date_end_str} if [ "${date_str}" \< "${date_end_str}" ] ; then table_name="billing_log_"${date_str} IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${table_name} " table_name="cdr_"${date_str} IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${table_name} " #log_message ${IGNORED_TABLES_STRING} else break fi done IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.cdr_history " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.cdr_daily_use_total " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.billing_log " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.ptest " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.callback_fail_log " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.audio_record " IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.voice_verify_log " #log_message "Ignore tables: "${IGNORED_TABLES_STRING} ${MYSQLDUMPBIN_PATH} --opt --protocol=TCP --user=${USER} --password=${PASS} --host=${DBSERVER} ${DATABASE} ${IGNORED_TABLES_STRING} > ${FILE} gzip $FILE finish_time=`date +%s` seconds_cost=$[ finish_time - begin_time ] log_message "Finish dumpping " "`date +'%Y-%m-%d %H:%M:%S'`" " total cost ${seconds_cost} seconds ......................." } while true do 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} for db in "${normal_dbs[@]}" do dump_normal_db $db done dump_open_sms dump_open_billing mv *.sql.gz ${OUTPUT_DIR} sleep 86400 done
相关文章推荐
- MySQL远程dump单表shell脚本
- mysql增量备份二进制日志shell脚本
- mysql日常备份和增量备份SHELL脚本
- mysql dump shell 脚本crontab 计划任务
- Mysql日常备份和增量备份SHELL脚本
- shell脚本:mysql全备与binlog增量备份
- mysql增量备份二进制日志shell脚本
- Shell脚本中执行sql语句操作mysql的5种方法
- 完整和增量备份MySQL脚本
- shell脚本:实现MySQL创建数据库和删除数据库的脚本
- 用shell脚本实现通用二进制格式mysql 5.5.28 x86_64的安装
- shell脚本备份mysql和项目数据
- Nocatalog 下的RMAN 增量备份 shell脚本
- MYSQL整理数据库碎片SHELL脚本
- RMAN 增量备份shell脚本
- linux增加epel源,yum安装nignx,脚本安装mysql服务端,shell脚本监控网站页面
- Nocatalog 下的RMAN 增量备份 shell脚本
- Shell脚本中执行sql语句操作mysql
- 检测mysql主从复制是否正常的shell脚本
- shell脚本:nagios监控mysql同步