备份MySQL数据库,如果有图形界面操作肯定很方便,那就使用图形界面进行备份与还原;若是使用的Linux系统,没有图形界面,可以试试如下方式:
1、备份数据库
一、MySQL(Docker)备份与恢复
假设容器名:mysql;数据库名:biz_db
✅ 1. 备份(推荐方式:docker exec)
✔ 标准备份
bash
docker exec mysql \
mysqldump -u root -p'数据库密码' \
--single-transaction --quick \
biz_db > /home/soft/mysql/backup/biz_db_$(date +%F).sql
docker exec mysql \
mysqldump -u root -p'数据库密码' \
--single-transaction --quick \
数据库名称 > /位置/biz_db_$(date +%F).sql
✔ 压缩备份(强烈推荐)
bash
docker exec mysql \
mysqldump -u root -p'数据库密码' biz_db \
| gzip > /home/soft/mysql/biz_db_bak.sql.gz
docker exec mysql \
mysqldump -u root -p'数据库密码' 数据库名称 \
| gzip > /位置/biz_db_bak.sql.gz
✔ 备份结构 + 存储过程(生产建议)
bash
docker exec mysql \
mysqldump -u root -p'数据库密码' \
--routines --triggers --events \
--single-transaction biz_db \
| gzip > /home/soft/mysql/backup/biz_db_full.sql.gz
docker exec mysql \
mysqldump -u root -p'数据库密码' \
--routines --triggers --events \
--single-transaction 数据库名称 \
| gzip > /backup/biz_db_full.sql.gz
⚠️ 注意(生产关键点)
- 不要写成
-p tbea@xxx(中间不能有空格) - 容器内执行比宿主机直连更稳
- 建议不要用 root → 用 backup 用户
✅ 2. 恢复
✔ 从 SQL 恢复
bash
cat /home/soft/mysql/backup/biz_db.sql | docker exec -i mysql \
mysql -u root -p'数据库密码' biz_db
cat /backup/biz_db.sql | docker exec -i mysql \
mysql -u root -p'数据库密码' 数据库名称
✔ 从压缩恢复
bash
gunzip < /home/soft/mysql/backup/biz_db.sql.gz | docker exec -i mysql \
mysql -u root -p'数据库密码' biz_db
gunzip < /backup/biz_db.sql.gz | docker exec -i mysql \
mysql -u root -p'数据库密码' 数据库名称
🚀 3. 直接恢复到"新容器"(非常实用)
bash
docker run -d --name mysql-new \
-e MYSQL_ROOT_PASSWORD=数据库密码 \
mysql:8.0
# 等待启动后恢复
gunzip < biz_db.sql.gz | docker exec -i mysql-new \
mysql -uroot -p数据库密码 biz_db
docker run -d --name mysql-new \
-e MYSQL_ROOT_PASSWORD=数据库密码 \
mysql:8.0
等待启动后恢复
gunzip < biz_db.sql.gz | docker exec -i mysql-new \
mysql -uroot -p'数据库密码' 数据库名称
二、PostgreSQL(Docker)备份与恢复
假设容器名:postgres;数据库名:biz_db
✅ 1. 备份
✔ 标准备份(推荐)
bash
docker exec postgres \
pg_dump -U postgres -d biz_db \
-F c -f /tmp/biz_db.dump
docker exec postgres \
pg_dump -U postgres -d biz_db \
-F c -f /tmp/biz_db.dump
然后拷贝出来:
bash
docker cp postgres:/tmp/biz_db.dump /backup/
✔ 一步到位(宿主机直接生成)
bash
docker exec postgres \
pg_dump -U postgres biz_db \
> /backup/biz_db.sql
docker exec postgres \
pg_dump -U postgres biz_db \
> /backup/biz_db.sql
✔ 压缩备份
bash
docker exec postgres \
pg_dump -U postgres biz_db \
| gzip > /backup/biz_db.sql.gz
docker exec postgres \
pg_dump -U postgres biz_db \
| gzip > /backup/biz_db.sql.gz
✅ 2. 恢复
✔ SQL恢复
bash
cat /backup/biz_db.sql | docker exec -i postgres \
psql -U postgres -d biz_db
✔ dump格式恢复(推荐)
bash
cat /backup/biz_db.dump | docker exec -i postgres \
pg_restore -U postgres -d biz_db
✔ 压缩恢复
bash
gunzip < /backup/biz_db.sql.gz | docker exec -i postgres \
psql -U postgres -d biz_db
这样就可以实现数据库的备份还原操作了!