其实本质就是备份在覆盖 最好将备份的数据库加上时间戳 这样以便区分
步骤:
数据库同步详细操作指南
下面是一套完整、安全的将本地MySQL数据库同步到云服务器MySQL容器的详细命令步骤。
第一步:在本地机器操作
1.1 导出本地数据库
打开本地终端(CMD/PowerShell/Shell),执行以下命令:
# 导出「您要导出的数据库名」到当前目录的「自定义备份文件名.sql」
# 替换:
# - your_local_mysql_password → 本地 MySQL root 密码
# - your_database_name → 要导出的实际数据库名(如:mall、blog 等)
# - your_backup_file.sql → 自定义备份文件名(如:mall_backup.sql)
mysqldump -u root -p --databases your_database_name > your_backup_file.sql
# 系统会提示输入密码,输入后开始导出
# 导出完成后,可以查看文件大小确认是否成功
ls -lh your_backup_file.sql第二步:上传备份文件到云服务器
2.1 使用 SCP 上传文件
在本地终端中执行:
bash
# 将备份文件上传到云服务器的 /tmp/ 目录
# 替换:
# - your_server_ip → 云服务器公网 IP
# - your_backup_file.sql → 本地实际备份文件名
scp ./your_backup_file.sql root@your_server_ip:/tmp/
# 系统会提示输入云服务器的root密码第三步:在云服务器上操作
3.1 SSH 登录到云服务器
# 登录到云服务器
ssh root@your_server_ip
# 输入密码登录3.2 (重要)备份当前云数据库
在云服务器上执行以下命令,备份当前数据库状态:
# 备份云服务器上的数据库到带时间戳的文件
# 替换:your_database_name → 云服务器上要备份的实际数据库名
sudo docker exec mysql-server sh -c 'exec mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" --databases your_database_name' > /tmp/your_database_backup_$(date +%Y%m%d_%H%M%S).sql
# 确认备份文件生成
ls -lh /tmp/your_database_backup_*.sql3.3 将备份文件复制到MySQL容器内
# 将上传的备份文件复制到 MySQL 容器内部
# 替换:your_backup_file.sql → 上传到云服务器的实际备份文件名
sudo docker cp /tmp/your_backup_file.sql mysql-server:/tmp/3.4 导入数据到MySQL容器
有两种方法可以执行导入,任选其一:
方法A:直接执行导入命令
# 直接从宿主机导入数据到容器
# 替换:your_database_name → 目标数据库名
sudo docker exec -i mysql-server sh -c 'exec mysql -u root -p"$MYSQL_ROOT_PASSWORD"' < /tmp/your_backup_file.sql方法B:进入容器后执行导入
# 进入 MySQL 容器的 bash 环境
sudo docker exec -it mysql-server bash
# 在容器内执行导入(替换:your_database_name → 目标数据库名)
mysql -u root -p your_database_name < /tmp/your_backup_file.sql
# 输入密码后等待导入,完成后退出容器
exit3.5 验证导入结果
# 进入容器查询数据,验证导入是否成功
# 替换:
# - your_database_name → 目标数据库名
# - 【您要查询的表名】 → 实际要验证的表(如:user、product 等)
sudo docker exec -it mysql-server mysql -u root -p -e "USE your_database_name; SHOW TABLES; SELECT COUNT(*) FROM 【您要查询的表名】;"3.6 清理临时文件
# 删除云服务器上的临时备份文件
# 替换:your_backup_file.sql → 要删除的备份文件名
rm /tmp/your_backup_file.sql
# 退出 SSH 连接
exit额外建议:使用版本控制备份文件
为了更好的管理数据库版本,您可以考虑以下做法:
# 本地备份时自动添加时间戳(替换:your_database_name → 要导出的数据库名)
mysqldump -u root -p --databases your_database_name > your_database_backup_$(date +%Y%m%d_%H%M%S).sql定期清理旧备份:定期清理云服务器上旧的备份文件,释放磁盘空间
# 保留最近 7 天的备份,删除更早的文件
# 替换:your_database_backup → 备份文件的前缀(如:mall_backup、blog_backup 等)
find /tmp/ -name "your_database_backup_*.sql" -mtime +7 -delete