Docker容器中Mysql数据的导入/导出详解

2023-10-27

前言

Mysql数据的导入导出我们都知道一个mysqldump命令就能够解决,但如果是运行在docker环境下的mysql呢?

解决办法其实还是用mysqldump命令,但是我们需要进入docker的mysql容器内去执行它,并且通过配置volumes让导出的数据文件可以拷贝到宿主机的磁盘上

所以操作步骤就可以分为:

  • 配置docker的volumes
  • 进入docker的mysql容器,导出数据文件

连接mysql

mysql -h127.0.0.1 -uroot -proot

至于数据导入,太过简单,也说一下吧

mysql -h 127.0.0.1 -P 3306 -u root --password=root -c --default-character-set=utf8 容器数据库名< 主机目录下的脚本.sql

例如:

mysql -h 127.0.0.1 -P 3306 -u root --password=root -c --default-character-set=utf8 test_db< /home/install_test_db.sql

先来看看mysqldump命令常见选项:

  • --all-databases, -A: 备份所有数据库
  • --databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldum把每个名字都当作为数据库名。
  • --force, -f:即使发现sql错误,仍然继续备份
  • --host=host_name, -h host_name:备份主机名,默认为localhost
  • --no-data, -d:只导出表结构
  • --password[=password], -p[password]:密码
  • --port=port_num, -P port_num:制定TCP/IP连接时的端口号
  • --quick, -q:快速导出
  • --tables:覆盖 --databases or -B选项,后面所跟参数被视作表名
  • --user=user_name, -u user_name:用户名
  • --xml, -X:导出为xml文件

配置volumes

首先我是利用docker-compose进行docker容器的编排,完整的配置代码请看这个项目: liumapp/rabbitmq-mysql-redis-in-docker

请注意这个项目的docker-compose.yml配置文件中,有以下几行:

 mysql:
 container_name: mysql
 image: mysql:5.5.60
 restart: always
 volumes:
  - ./mysql/data:/var/lib/mysql
  - ./mysql/conf/mysqld.conf:/etc/mysql/mysql.conf.d/mysqld.cnf

我对mysql容器配置的volumes,是把项目的mysql/data目录和docker容器内的/var/lib/mysql建立映射关系

所以下面我进入docker的mysql容器内执行导出命令的时候,只需要把数据导出在/var/lib/mysql/目录下,就可以在宿主机的./mysql/data/目录下找到对应的数据文件

进入容器导出数据

首先执行

docker ps

找到mysql容器的name

然后执行

docker exec -it mysql /bin/bash

进入容器

执行命令

whereis mysql

找到mysql的运行路径,我这里是:/usr/local/mysql/bin,用cd进入

cd /usr/local/mysql/bin

请注意,这里的路径是指docker容器内的路径,跟您的宿主机路径没有关系

执行导出命令

mysqldump -u 用户名 -p 数据库名 > 保存文件.sql

输入密码后基本导出成功,请注意,保存文件的路径要设置在volumes下面,即/var/lib/mysql/下

随后输入

exit

退出容器内部,回到宿主机上,我们就能够找到导出的数据文件了

如果您要导出csv格式的话,将mysqldump的那句命令改为:

mysql -u 用户名 --password=密码 --database=数据库名 --execute='SELECT `FIELD`, `FIELD` FROM `TABLE` LIMIT 0, 10000 ' -X > 保存文件.sql

即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker容器中Mysql数据的导入/导出详解 的相关文章

随机推荐

  • python进制转换

    十进制数转其他进制 获取用户输入十进制数 num int input 输入数字 print 十进制数为 num print 转换为二进制为 bin num print 转换为八进制为 oct num print 转换为十六进制为 hex n
  • react 编程式导航实现页面跳转

    一 介绍 编程式导航 通过js代码来实现页面跳转 案例 点击登录按钮 登录成功后 通过代码跳转到后台首页 如何实现 答 props history push home props history go 1 history 是react路由提
  • php调用笛风接口,优雅的用PHP来实现解析抖音无水印视频!

    header Content type text html charset utf 8 url g GET url 抖音视频地址 api https api hl amemv com aweme v1 aweme detail retry
  • Microsoft Store无法打开几种解决办法

    抄的解决方案 只是为了记录一下 帮助遇到同样问题的人 方式一 清除Microsoft商店缓存 过多的缓存会使Microsoft Store应用程序膨胀 可能导致其无法正常运行 只需清理高速缓存即可 大多数用户建议在清除Store应用程序的高
  • unity如何恢复崩溃前的Scene

    unit有时会遇到unity崩溃后 辛辛苦苦做的场景就这么没了的情况 这种情况非常忧伤的 其实unity是提供了一种拯救场景的措施的 首先unity崩溃后不要重新打开unity 切记 不然就之前的成果就找不回来了 打开你的工程所在目录 找到
  • 用core dump来调试程序段错误

    有的程序可以通过编译 但在运行时会出现Segment fault 段错误 这通常都是指针错误引起的 但这不像编译错误一样会提示到文件 gt 行 而是没有任何信息 使得我们的调试变得困难起来 1 在一般Linux系统中 默认是不会产生core
  • java 动态单元格涂色_java – JSF:动态更改数据表单元格颜色

    我有一个数据表 我想根据对内容运行的一些分析来更改单元格的颜色 该表链接到一个Comment对象数组 我给出了一个String cssClass 它在运行分析后得到更新 这是我尝试插入数据表的rowClasses属性 它不起作用 我认为问题
  • jsonpath的一些应用

    由于最近在做接口自动化测试 其中用到的jsonpath尤其的多 所以进行记录 1 先上一句代码 JSONPath read sourchJson key 2 sourchJson如下 data x 2018 12 19 2018 12 20
  • 第九届蓝桥杯,赛后感!!含泪写完。

    对于这一次的蓝桥杯我先说一下我的心情 说好的暴力破解 说好的DFS尼都没有我靠 这届的题目很变态 早上我起床是被拉肚子叫醒的 唉 早上9正开考 今年我们是在本学校考试 我吃完早饭去的考场 这里我要说明一下 本来蓝桥杯是提供早餐的 但是老师说
  • Unity 烘焙贴图后再拖成预设体后场景光照信息丢失

    场景中对预设体进行烘焙贴图后 然后删掉场景中的预设体 接着再通过代码实例化这个预设体或者直接拖一个预设体进入一个场景 都会发现场景光照信息丢失 光照信息丢失的主要原因是 解决这个问题的办法如下 先准备一个场景 如下 上面的红色物体全部勾选为
  • 如何给Python轻应用添加新的组件:Python轻应用扩展适配介绍

    AliOS Things 3 3 0新版本中 其中非常中的一个特点 就是支持Python轻应用 也就是可以直接使用Python代码来写物联网程序 并且控制软件设备 这是HaaS物联网设备云端一体Low Code开发框架的核心之一 那本文讲介
  • C++ 惯用法之 copy and swap

    背景 STL 中提供了 swap 算法 用于交换两个对象的值 对于资源管理类 我们可以提供自定义的高效 swap 以仅交换指针 通常包含资源 指针 的类需要提供自定义的拷贝及移动相关操作函数 资源管理类 概述 通常包含资源 指针 的类需要提
  • Talib技术因子详解(十)

    talib安装方式 pip install Ta lib Tushare数据获取请参考 金融量化分析基础环境搭建 数据获取代码请参考 Talib技术因子详解 一 101 CDLPIERCING名称 Piercing Pattern 刺透形态
  • JS中获取URL中参数的4种方法

    方法一 正则 function getQueryString name var reg new RegExp name i var r window location search substr 1 match reg if r null
  • 如何在 JavaScript 中将数组转为对象

    首先 我们需要明白对象具有键和值 const object key value 如果我们想把某个东西转换成一个对象 我们需要传递具有这两个要求的东西 键和值 满足这些要求的参数有两种类型 具有嵌套键值对的数组 Map 对象 数组 这是一个带
  • C语言常见的陷阱与缺陷

    1 不等同于 在刚接触c语言的时候 这属于是初学者常见的错误 是赋值符 是关系运算符 当我们在使用if判断语句的时候 初学者很容易犯的一个错误 就是把if x 1 写成if x 1 这样写时编译器并不会报错 因为后者会被解析为把1赋值给x
  • vue中ECharts使用

    第一步 下载echarts 并导入 npm install echarts save import echarts from echarts 导入echarts import from lodash 导入数据合并 第二部 在绘图前我们需要为
  • 现场!李飞飞斯坦福对话基因编辑发明人杜德纳:两大科技的伦理和创新走向何方?...

    热点追踪 深度探讨 实地探访 商务合作 本文来源微信公众号 硅谷洞察 ID guigudiyixian 硅谷洞察 链接硅谷资源的第一入口 本文由硅谷洞察原创 首发于腾讯科技 未经硅谷洞察或腾讯科技授权 请勿转载 人工智能和基因编辑无疑是两大
  • win11使用wsl2安装Linux子系统

    WSL Windows subsystem for Linux 顾名思义 就是在Windows中使用的Linux子系统 使开发者能够在window中无障碍使用Linux系统 下面介绍一下怎么在win11环境中搭建wsl2 1 开启子系统功能
  • Docker容器中Mysql数据的导入/导出详解

    前言 Mysql数据的导入导出我们都知道一个mysqldump命令就能够解决 但如果是运行在docker环境下的mysql呢 解决办法其实还是用mysqldump命令 但是我们需要进入docker的mysql容器内去执行它 并且通过配置vo