线上mysql数据库备份-创新互联

#!/bin/bash
#=============================================================================
# FileName: MySQLBackup.sh
# Desc: MySQL Databases backup tool.
# Author: chenzm
# Email:969113439@qq.com
# HomePage: http://chenzm0592.blog.51cto.com/
# Version: 0.0.1
# LastChange: 2013-11-15 09:16:39
# History:
#=============================================================================

cd /opt/MySQLBackup
. /etc/profile

USERNAME='root'
PASSWORD='password'

U_ID=0
G_ID=

# 设置mysqldump参数
MYSQLDUMP="mysqldump --opt --default-character-set=utf8 --skip-lock-tables -C"

# 设置压缩参数 从stdin读取
COMPRESS="gzip -9"

# 设置压缩文件的后缀名, 请与压缩参数相对应
COMPRESS_EXT="gz"

DATE=$(date +%Y-%m-%d)
mkdir -p logs/

# 定义日志输入
function log() {
   #echo -ne ${1}
   echo -ne ${1} >>logs/backup-${DATE}.log
}

# 计算字符时,分, 秒
function charDate() {
   DATE=$1
   if [ ${DATE} -lt 60 ]; then
       echo "${DATE}秒"
   elif [ ${DATE} -ge 60 ] && [ ${DATE} -lt 3600 ]; then
       echo "$((DATE/60))分$((DATE%60))秒"
   else
       M=$((DATE%3600))
       echo "$((DATE/3600))小时$((M/60))分$((M%60))秒"
   fi
}

TIME_HOST_START=$(date +%s)
retry=0
while :
do
   data=$(mysql -u${USERNAME} -p${PASSWORD} -h IP -e 'SHOW DATABASES' 2>&1)
   if [ $? == 0 ]; then
       break
   elif [ ${retry} -ge 5 ]; then
       log "连接到数据库失败...退出.\n"
       exit 1
   fi
   ((retry++))
done

DBS=$(echo ${data} | awk 'BEGIN{split("test|information_schema",arr,"|"); for (i in arr) b[arr[i]]} END{for(i=2;i<=NF;i++) if($i in b==0) print $i}')
DB_TOTAL=$(echo ${DBS} | awk '{print NF}')

log "总计数据库数量: ${DB_TOTAL}\n"
log "正在备份,请稍后....\n"

mkdir -p /databak/IP/db/${DATE}
for DB in ${DBS}
do
   TIME_DB_START=$(date +%s)
   log "正在导出: ${DB}..."
    ${MYSQLDUMP} -u${USERNAME} -p${PASSWORD} -h IP ${DB} 2>>logs/error.log | ${COMPRESS} > /databak/IP/db/${DATE}/${DB}.sql.${COMPRESS_EXT}

   # 使用$PIPESTATUS获取管道之前的exit status
   if [ ${PIPESTATUS[0]} != 0 ]; then
       log "失败"
   else
       ((OK++))
       log "成功"
   fi
   TIME_DB_END=$(date +%s)
   ELAPSED=$((TIME_DB_END - TIME_DB_START))
   log " - 耗时: $(charDate ${ELAPSED})\n"
done
#chown -R ${U_ID}:${G_ID} /db/ip/${DATE}

TIME_HOST_END=$(date +%s)
ELAPSED=$((TIME_HOST_END - TIME_HOST_START))
log "总计: ${DB_TOTAL} 成功: ${OK} 失败: $((DB_TOTAL-OK)) - 耗时: $(charDate ${ELAPSED})\n"
log "$(printf '%30s\n' | tr ' ' -) $(date "+%Y-%m-%d %H:%M:%S") $(printf '%30s\n' | tr ' ' -)\n"
                        

10年积累的网站制作、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有蜀山免费网站建设让你可以放心的选择与我们合作。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

新闻标题:线上mysql数据库备份-创新互联
分享链接:https://www.cdcxhl.com/article46/eceeg.html

成都网站建设公司_创新互联,为您提供定制网站全网营销推广网站营销用户体验手机网站建设响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设