写一个清空Mysql数据库数据的脚本Shell
服务器安装部署mysql8.0.2,需要有mysqldump
命令
#!/usr/bin/bash
# mysql -e cmd 可以用shell操作mysql,不在mysql提示符下操作,非交互式,适合嵌入shell脚本
# shell 单引号和双引号的区别,单引号属于强引用,不对引号内任何特殊字符转义,只当普通字符.双引号属于弱引用,会对括起来的特殊字符做处理.
# mysqldump --no-data 参数(跟-d 一样),表示只导出数据库表结构,不导出数据.用-t则表示只导出数据,不导出表结构.
# 删除数据库有3种方法:(delete有所保留,可以回滚,drop更彻底)
# -e是echo的一个可选项,用于激活特殊字符的解析器, 也就是对反斜线转义符(即\)的解释。\033引导非常规字符序列。
# shell脚本在开头加上"set -x"表示调试模式,会把每句命令都打印出来,再打印每句命令的执行结果
#
# set -x
HOSTNAME='xxx.xxx.xxx.xxx'
PORT=3309
USERNAME='username'
PASSWORD='password'
DATABASE='shop_mall_bk'
# 业务数据存储路径
DB_ROOT=/data/nfsqd_shop/db/userful-sql
# 业务数据表结构,不含数据
MALL_NO_DATA=${DB_ROOT}/shop_mall-nodata.sql
# 要保留的数据
MALL_NEED_DATA=${DB_ROOT}/config.sql
# 要保留的数据表
MALL_NEED_TABLES="goods_spu goods_sku article_category article_info company_info company_employee_info ensure freight_templat goods_brand goods_category goods_property material material_group page_devise pay_config shop_info theme_mobile user_address user_collect user_footprint user_info welfare welfare_goods welfare_shop"
CREATE_DB="CREATE DATABASE IF NOT EXISTS ${DATABASE} DEFAULT CHARSET utf8 COLLATE utf8_general_ci"
echo -e "\033[47;34m ------------ 企业福利通积分商城数据清理脚本 ------------- \033[0m"
result()
{
if [ $? -eq 0 ];then
echo -e "\033[47;32m ----------- $1 succeed! ---------- \033[0m"
else
echo -e "\033[47;31m ----------- $1 failed! ----------- \033[0m"
fi
}
# 保存数据库数据结构
echo -e "\033[47;34m ------------ step 1: dump a no-data sql of joolun_mall ------------- \033[0m"
mysqldump -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DATABASE} --no-data > ${MALL_NO_DATA}
result step1
# 保存数据库必要的数据内容
echo -e "\033[47;34m ------------ step 2: dump important config like goods_spu,goods_sku,etc ------------- \033[0m"
mysqldump -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DATABASE} ${MALL_NEED_TABLES} > ${MALL_NEED_DATA}
result step2
# 删除数据库
echo -e "\033[47;34m ------------ step 3: drop joolun_mall ------------- \033[0m"
mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DATABASE} -e "drop database ${DATABASE}"
result step3
# 重新新建数据库
echo -e "\033[47;34m ------------ step 4: create a new joolun_mall ------------- \033[0m"
mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} -e "${CREATE_DB}"
result step4
# 导入数据库数据结构
echo -e "\033[47;34m ------------ step 5: import the backup table-structure ------------- \033[0m"
mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DATABASE} -e "source ${MALL_NO_DATA}"
result step5
# 导入数据库必要的数据
echo -e "\033[47;34m ------------ step 6: import the backup config ------------- \033[0m"
mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DATABASE} -e "source ${MALL_NEED_DATA}"
result step6
# 用户积分清零
echo -e "\033[47;34m ------------ step 7: 用户积分清零 ------------- \033[0m"
mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DATABASE} -e "update user_info set integral = 0.00"
result step7
# 供货商积分清零
echo -e "\033[47;34m ------------ step 8: 供货商积分清零 ------------- \033[0m"
mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DATABASE} -e "update shop_info set integral = 0.00"
result step8
# 单位积分清零
echo -e "\033[47;34m ------------ step 9: 单位积分清零 ------------- \033[0m"
mysql -u${USERNAME} -p${PASSWORD} -h${HOSTNAME} -P${PORT} ${DATABASE} -e "update company_info set integral = 0.00"
result step9