当前位置: 首页 > news >正文

Docker Mysql 数据迁移

查看启动命令目录映射

  1. 查看容器名称
docker ps

  1. 查看容器的启动命令
docker inspect mysql8.0 |grep 'CreateCommand' -A 20

如下图所示:我这边是把/var/lib/mysql 目录映射到我宿主机的/mnt/mysql/data目录下,而且我的数量比较大使用方法1的话时间比较久,所以我采用方法2

  • 如果没有映射可以通过docker cp 的方式复制到宿主机后,也可以用方法二

方法 1:使用 mysqldump(推荐)

方法1就是将所有库打包成sql,然后再通过sql导入
库适用于数据量 不太大,保证数据完整性。

步骤 1:在源服务器上导出 MySQL 数据

运行以下命令,将 MySQL 所有数据库 导出为 backup.sql

docker exec -it mysql8.0 mysqldump -uroot -p --all-databases > backup.sql

如果你只想导出某个数据库:

docker exec -it mysql8.0 mysqldump -uroot -p mydatabase > backup.sql

步骤 2:传输 backup.sql 到目标服务器

你可以使用 scprsync

scp backup.sql root@目标服务器IP:/root/

或者:

rsync -avz backup.sql root@目标服务器IP:/root/

步骤 3:在目标服务器上恢复数据

  1. 拉取 MySQL 8.0.18 并启动新容器
docker run --name mysql8.0 -e MYSQL_ROOT_PASSWORD=你的密码 -d -p 3306:3306 mysql:8.0.18
  1. 导入backup.sql
docker cp backup.sql mysql8.0:/backup.sql
docker exec -it mysql8.0 mysql -uroot -p < /backup.sql

方法 2:使用 rsync 直接迁移 MySQL 数据目录

适用于数据量 较大 的情况。

步骤 1:停止 MySQL 容器

docker stop mysql8.0

步骤 2:复制 MySQL 数据文件

找到 MySQL 数据目录

docker inspect mysql8.0 |grep 'CreateCommand' -A 20

可以知道我的数据是映射再宿主机的/mnt/mysql的,读者的映射地址可能和我不一样

一般默认在 /var/lib/mysql,最好用docker inspect 查看一下

然后用 rsync 传输:

以下步骤的/mnt/mysql 都改成上图读者查询到的宿主机映射目录

rsync -avz /mnt/mysql root@目标服务器ip:/mnt/mysql

直到传输完成

步骤 3:在目标服务器上启动 MySQL

  1. 确保 MySQL 目录权限正确
chown -R 777 /mnt/mysql
  1. 启动容器

指定映射目录为我们迁移过来的目录这样数据就有了

docker run -p 3306:3306 --name mysql8.0 --restart=always -v /mnt/mysql/log:/var/log/mysql -v /mnt/mysql/data:/var/lib/mysql -v /mnt/mysql/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=你的密码 -d mysql:8.0.18

进如容器查看,发现数据库全部迁移过来了

推荐方案

数据完整性要求高方法 1(mysqldump
数据量巨大(几百 GB)方法 2(rsync迁移数据目录)

http://www.lryc.cn/news/540915.html

相关文章:

  • ubuntu22.04离线安装K8S
  • 微信小程序中将图片截图为正方形(自动居中)
  • 传统的自动化行业的触摸屏和上位机,PLC是否会被取代?
  • 【论文精读】VLM-AD:通过视觉-语言模型监督实现端到端自动驾驶
  • 2024年数字政府服务能力优秀创新案例汇编(附下载)
  • Ollama Docker 镜像部署
  • [深度学习][python]yolov12+bytetrack+pyqt5实现目标追踪
  • 【深度学习】矩阵的理解与应用
  • 我是如何从 0 到 1 找到 Web3 工作的?
  • 《Keras 3 :使用 Vision Transformers 进行物体检测》:此文为AI自动翻译
  • java(spring boot)实现向deepseek/GPT等模型的api发送请求/多轮对话(附源码)
  • module ‘cv2.dnn‘ has no attribute ‘DictValue‘解决办法
  • 将RocketMQ集成到了Spring Boot项目中,实现站内信功能
  • Deepseek 怼CHATGPT实况
  • 基础篇11-图像分割(上)--阈值的方法
  • [特殊字符] LeetCode 62. 不同路径 | 动态规划+递归优化详解
  • 常用的 JVM 参数:配置与优化指南
  • 【JavaWeb学习Day17】
  • DeepSeek 提示词:定义、作用、分类与设计原则
  • 前端大文件上传
  • JDK源码系列(一)Object
  • 【Python 打造高效文件分类工具】
  • 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1)
  • 边缘安全加速(Edge Security Acceleration)
  • C/C++高性能Web开发框架全解析:2025技术选型指南
  • fedora 安装 ffmpeg 过程记录
  • 【GPU驱动】OpenGLES图形管线渲染机制
  • Spring Boot项目@Cacheable注解的使用
  • mac开发环境配置笔记
  • 重装CentOS YUM