docker版mysql也用了有一段日子了,期间遇到了一个问题,导入很大的sql文件会失败。百度了一番,找到了解决办法。顺便也让我对docker的命令有了更深的了解
进入容器,更新系统
查看mysql容器id
1
2
3$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dafa13759afe mysql:5.6 ...
进入容器
1docker exec -it dafa13759afe /bin/bash
更新系统 注意:我这个mysql镜像使用的是Debain系统。
1
2apt-get update
...
安装nano/vim,我个人比较喜欢nano就安装nano了
1apt-get install nano
编辑mysql配置文件
查看mysql安装位置
1
2$ whereis mysql
mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/share/mysql
经过排查,发现mysql配置文件在/etc/mysql/目录下
1cd /etc/mysql/
看看有哪些文件和文件夹
1
2$ ls
conf.d my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
编辑conf.d目录下的mysqldump.cnf文件
1nano conf.d/mysqldump.cnf
将max_allowed_packet的值改成512M 然后保存退出
1max_allowed_packet = 512M
编辑mysql.conf.d目录下的mysqld.cnf文件
1nano mysql.conf.d/mysqld.cnf
在最后一行添加max_allowed_packet = 512M 然后保存退出
1max_allowed_packet = 512M
设置数据库编码(看需求)
docker版mysql使用过程中,我还发现数据是默认的编码。需要修改一下,修改成utf-8。不然数据库有些表字段插入中文会报错。
注意:我这里使用的mysql版本是5.6,其它版本的修改方式可能略有区别。
修改mysql配置文件
1nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加如下代码
在[mysqld]之上添加如下代码
1
2[client]
default-character-set=utf8
在[mysqld]末尾添加如下代码 之后保存退出
1
2
3default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
然后重启容器docker restart mysql,重新连接msyql,查看编码是否修改成功
1mysql -uroot -p****
运行下面的命令 都为utf8就说明修改成功了
1
2
3
4
5
6
7
8
9
10
11
12
13
14mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
重启容器
重启容器使配置文件生效
1docker restart mysql
导入大sql文件测试
将宿主系统的sql文件拷贝到容器中home文件夹下,
1docker cp test.sql dafa13759afe:/home
注:test.sql大小为100M
进入容器
1docker exec -it dafa13759afe /bin/bash
测试上面的配置是否成功
1mysql -uroot -p**** myproject< /home/test.sql
不报错则导入成功,报错一般是配置文件设置的问题。请自行百度解决