Mysql导入导出时遇到的问题解决

背景

自从把我手上的任务全部转换成docker运行和管理之后,遇到了一系列的坑,这次是mysql备份的问题。

原因是启动mysql镜像的时候没有指定-v,导致一段时间之后docker很大,原来的磁盘不够了,需要迁移到新磁盘。

在使用导入导出的时候出现了一些问题,浪费了很多时间去解决。

解决过程

定位mysql镜像过大

查看容器占用的空间

```docker system df```

查看详细信息

Local Volumes space usage:
VOLUME
NAME               LINKS SIZE
3e764b0633ea2c3f3dc5b0bf79dc753055d7c09451b477d3015650c66ea4a5fb 0 0B
598a592e1f9d90d2564c7c52f45f6f6a96784ad0426ec60682299fa1a1b93b96 0 0B
5eb12b3b0091810bbe3c94c5801ad2f2ff51d79b69b0ac01eb37cf00d37d89f6 0 0B
admin_logs               0 0B
f42e3ef90e4c7b3658a0fb4a877e90b298b12cb58cd63f38d9b4ad5c2ab41d73 0 0B
3361b9c615e09708170018dc7d170b8d4b498dd83cbcb155a3d41234d08e8119 1 9.3G

此时根据上面返回的信息,只有两个容器有VOLUMES,一个是mysql,还一个是redis,所以使用docker inspect container_id命令查看具体容器具体的信息,发现确实是9.3G的那个Volume。

CONTAINER ID  IMAGE  COMMAND   LOCAL VOLUMES  SIZE
cb76bbc211e6  mysql  "docker-entrypoint.s…" 1    7B

备份mysql到新挂的盘

```docker exec -it mysql mysqldump -u用户名 -p密码 数据库 > /mnt/vdb/data/mysql/test_db.sql```
用户名、密码和数据库自己修改

导入mysql

1. 为了保证之前的数据还在,所以另起一个mysql容器,并且使用-v映射到宿主机。

2. 然后执行:docker exec -i mysqld mysql -uroot -proot federation < /mnt/vdb/data/mysql/fed_db.sql

错误来了

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the
right syntax to use near 'mysqldump: [Warning] Using a password on the
command line interface can be insec' at line 1

我搜索了很多的资料,都没有效果,于是决定使用图形化工具直接备份,于是使用navicat,备份,在新的镜像导入,并且导入成功。

  • 这个里面的Rows,和我导入之后的显示的不一样
  • 这个里面的Rows,和我导入之后的显示的不一样
  • 这个里面的Rows,和我导入之后的显示的不一样

  • WTF?总数1688,只显示1480?
  • 进入到docker容器里面,使用命令行查询,确实是1688,确实是展示的Rows不对,So...

总结

使用docker时,要考虑好需不需要外挂卷,一般数据库的最好都外挂,备份迁移都很方便

不要过分依赖数据库的GUI,命令行才是最证实可靠的

实在不行,你狂加硬盘吧,反正都是在服务器上,但是要确保,服务器不会蹦,否则数据容易丢失。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • MySql 快速插入千万级大数据的方法示例

    在数据分析领域,数据库是我们的好帮手.不仅可以接受我们的查询时间,还可以在这基础上做进一步分析.所以,我们必然要在数据库插入数据.在实际应用中,我们经常遇到千万级,甚至更大的数据量.如果没有一个快速的插入方法,则会事倍功半,花费大量的时间. 在参加阿里的天池大数据算法竞赛中(流行音乐趋势预测),我遇到了这样的问题,在没有优化数据库查询及插入之前,我花了不少冤枉时间,没有优化之前,1500万条数据,光插入操作就花费了不可思议的12个小时以上(使用最基本的逐条插入).这也促使我思考怎样优化数据库插入

  • MySQL慢SQL语句常见诱因以及解决方法

    1. 无索引.索引失效导致慢查询 如果在一张几千万数据的表中以一个没有索引的列作为查询条件,大部分情况下查询会非常耗时,这种查询毫无疑问是一个慢SQL查询.所以对于大数据量的查询,需要建立适合的索引来优化查询. 虽然很多时候建立了索引,但在一些特定的场景下,索引还有可能会失效,所以索引失效也是导致慢查询的主要原因之一. 2. 锁等待 常用的存储引擎有 InnoDB 和 MyISAM,前者支持行锁和表锁,后者只支持表锁. 如果数据库操作是基于表锁实现的,试想下,如果一张订单表在更新时,需要锁住整张

  • MySQL中常见的八种SQL错误用法示例

    前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来.但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况. 阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题.现将<ApsaraDB专家诊断报告>中出现的部分常见SQL问题总结如下,供大家参考. 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方. 比如对于下面简单的语句

  • Mysql导入导出时遇到的问题解决

    背景 自从把我手上的任务全部转换成docker运行和管理之后,遇到了一系列的坑,这次是mysql备份的问题. 原因是启动mysql镜像的时候没有指定-v,导致一段时间之后docker很大,原来的磁盘不够了,需要迁移到新磁盘. 在使用导入导出的时候出现了一些问题,浪费了很多时间去解决. 解决过程 定位mysql镜像过大 查看容器占用的空间 ```docker system df``` 查看详细信息 Local Volumes space usage: VOLUME NAME LINKS SIZE

  • mysql导入导出数据中文乱码解决方法小结

    linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 复制代码 代码如下: mysqldump -uroot -p --default-character-set=utf8 dbname tablename > bak.sql 那么导入数据的时候也要使用-

  • Mysql导入导出工具Mysqldump和Source命令用法详解

    在PHP网站开发中,时常遇到Mysql数据库备份或数据库迁移工作,这时Mysql怎么导入导出数据库中的数据就非常关键,Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式(txt)的SQL文件,通过Mysql Source命令能够将SQL文件导入Mysql数据库中,下面通过Mysql导入导出SQL实例详解Mysqldump和Source命令的用法. M

  • MYSQL导入导出sql文件简析

    一.MYSQL的命令行模式的设置 桌面->我的电脑->属性->环境变量->新建-> PATH=":path\mysql\bin;"其中path为MYSQL的安装路径. 二.命令行进入MYSQL的方法 1.C:\>mysql -h hostname -u username -p 按ENTER键,等待然后输入密码.这里hostname为服务器的名称,如localhost,username为MYSQL的用户名,如root. 进入命令行后可以直接操作MYSQ

  • mysql导入导出命令解析

    mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.下面就让我们一起学习吧! 一.mysqldump:数据库备份程序  有3种方式来调用mysqldump: mysqldump [options] db_name [tables] mysqldump [options] ---database DB1 [DB2 DB3...] mysqldump [options] --all--da

  • mysql 导入导出数据库以及函数、存储过程的介绍

    mysql常用导出数据命令:1.mysql导出整个数据库  mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql   mysqldump -hlocalhost -uroot hqgr> hqgr.sql     (如果root用户没用密码可以不写-p,当然导出的sql文件你可以制定一个路径,未指定则存放在mysql的bin目录下) 2.mysql导出数据库一个表 mysqldump -hhostnam

  • MYSQL导入导出命令详解

    /usr/local/mysql/bin/mysql -uroot -proot test -e "LOAD DATA INFILE '/usr/1.txt' replace INTO TABLE test FIELDS TERMINATED BY '\t' (name,address)" info: 1.txt zhangsan wuhan lishi wuhan 把1.txt文件插入到mysql数据库中 网上看了一些总结出来的资料,不知道对大家有没有用的,有用的话也就不枉费我一按按

  • MySQL导入导出.sql文件及常用命令小结

    在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> source c:\\test.sql; 另附mysql常用命令: (一) 连接MYSQL: 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL 首先在打开DOS窗口,然后进入mysql安装目录下的bin目录下,例如: D:/mysql/bin,再键入命令mysql -uroot -p,回车后提示你输密码,

  • mysql 导入导出数据库、数据表的方法

    Linux下均在控制台下操作.导入数据库:前提:数据库和数据表要存在(已经被创建) (1)将数据表 test_user.sql 导入到test 数据库的test_user 表中[root@test ~]# mysql -uroot -p test < /www/web/test/test_user.sql (2) 将数据库 test.sql 导入到 test 数据库test 中[root@test ~]# mysql -uroot -p test < /www/web/test/test.sq

  • Mysql 导入导出csv 中文乱码问题的解决方法

    导入csv: 复制代码 代码如下: load data infile '/test.csv' into table table_name fields terminated by ','  optionally enclosed by '"' escaped by '"' lines terminated by '\r\n' ignore 1 lines; 导csv: 复制代码 代码如下: SELECT * INTO OUTFILE '/test.csv'  FIELDS TERMIN

随机推荐