备份

#!/bin/bash

curPath=$(dirname $(readlink -f "$0"))
project_name="${curPath##*/}"

# 访问形式
# sh log_login.sh 201902
#
# 其中201902可以不传。会默认上一年的上一个月
#

host="10.0.0.4"
port="3306"
user="root" 
passwd="123456"
dbname="cabbage_server_log"

# 获取上一年的上一个月,因为脚本我打算放到每个月1号跑,365一年,+15天。那肯定就是上一年的上一个月
Ym=`date -d "-380 day" +"%Y%m"`

# 传递一个Ym参数。如果没有。默认上一年的上一个月
if [ $1 ]; then
    Ym=$1
fi

curtime=$(date "+%Y%m%d%H%M%S")
tablename="log_login_${Ym}"
filename="${tablename}_${curtime}.sql.gz"

# 备份对应的数据表
mysqldump -h$host -P$port -u$user -p$passwd --set-gtid-purged=off --add-drop-table $dbname $tablename | gzip > "${curPath}/../../file/${project_name}/${filename}"

#echo "时间:" + $(date "+%Y-%m-%d %H:%M:%S") + ",${dbname}.${tablename}备份完成\n\n"

# 删除对应的数据表
mysql -h$host -P$port -u$user -p$passwd $dbname -e "DROP TABLE ${tablename}"

#echo "时间:" + $(date "+%Y-%m-%d %H:%M:%S") + ",${dbname}.${tablename}已删除\n\n"

${curPath}/../ossutil64 --access-key-secret=xxx --endpoint=oss-cn-xxx-internal.aliyuncs.com --access-key-id=xxx cp -rf "${curPath}/../../file/${project_name}/${filename}" oss://xxxx/db_backup/${project_name}/${filename}

# 删除
rm -rf "${curPath}/../../file/${project_name}/${filename}"

echo "done"

还原

#!/bin/bash
curPath=$(dirname $(readlink -f "$0"))
project_name="${curPath##*/}"

. "${curPath}/config.sh"
gunzip < "${curPath}/../../file/${project_name}/${1}.sql.gz" | mysql -h$host -P$port -u$user -p$passwd -f $dbname
echo "done"