docker备份、清空、还原mysql数据库

备份、清空、还原mysql数据库

下面用到的参数

# 定义MySQL容器的名称或者ID  
MYSQL_CONTAINER="mariadb"  
  
# 定义MySQL的用户名和密码  
MYSQL_USER="root"  
MYSQL_PASSWORD="123456"  
  
# 定义数据库名  
DATABASE_NAME="mydatabase"  

# 定义SQL文件路径  
CREATE_SQL_FILE="./database_backup/create.sql"  
INSERT_SQL_FILE="./database_backup/insert.sql" 

> 1、备份

  • 备份整个数据库
docker exec -i $MYSQL_CONTAINER /usr/bin/mysqldump --column-statistics=0 -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME > $CREATE_SQL_FILE
  • 分开备份:1.备份表结构 2.备份表数据
#备份表结构 添加参数--no-data
  docker exec -i $MYSQL_CONTAINER /usr/bin/mysqldump --column-statistics=0 --no-data -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME > $CREATE_SQL_FILE
#备份表数据  添加参数--no-create-info
docker exec -i $MYSQL_CONTAINER /usr/bin/mysqldump --column-statistics=0 --no-create-info -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME > $INSERT_SQL_FILE

>2、清空数据库数据

构造一个脚本,用于清空所有表的数据

  
TRUNCATE_TABLES_SQL="SET FOREIGN_KEY_CHECKS=0; $(mysql -h 127.0.0.1 -u $MYSQL_USER -p$MYSQL_PASSWORD -Nse 'SHOW TABLES' $DATABASE_NAME | xargs -I {} echo "TRUNCATE TABLE {};" | tr '\n' ';')";                   
TRUNCATE_TABLES_SQL="${TRUNCATE_TABLES_SQL}; SET FOREIGN_KEY_CHECKS=1;"  
           
docker exec -i $MYSQL_CONTAINER mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME <<< "$TRUNCATE_TABLES_SQL"  

>3、还原整个数据库

  • 只还原数据(使用insert.sql)
docker exec -i $MYSQL_CONTAINER mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME < $INSERT_SQL_FILE
  • 删除数据库再重建(使用create.sql和insert.sql)

删除数据库

docker exec -i $MYSQL_CONTAINER mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "DROP DATABASE IF EXISTS $DATABASE_NAME;"

创建数据库

 docker exec -i $MYSQL_CONTAINER mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE DATABASE $DATABASE_NAME;"

使用create.sql创建表结构

docker exec -i $MYSQL_CONTAINER mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME < $CREATE_SQL_FILE

使用insert.sql插入数据

docker exec -i $MYSQL_CONTAINER mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME < $INSERT_SQL_FILE
  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值