Tidb数据库导入数据出现oom问题
今天使用insert操作向tidb中插入数据,发现正在导入的过程中出现如下错误:
mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
也就是说客户端不能连接mysql服务器端。有的人会想到可能是mysql客户端连接至服务器端超时导致的:
mysql> show variables like '%connect%'; +-----------------------------------------------+-----------------+ | Variable_name | Value | +-----------------------------------------------+-----------------+ | connect_timeout | 10 |
一般情况下我的错误也有可能由connect_timeout时间太短这种情况导致的。比如查询数据集比较大的数据的时候。
不过针对这个错误tidb官方也有另外的解释,看看是不是oom问题,因此我就排查了一下:
[root@:vg_adn_tidbCkhsTest /data/splits]#dmesg -T | grep -i oom [Thu Nov 29 11:16:42 2018] mysqld invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 [Thu Nov 29 11:16:42 2018] [<ffffffff8bd97c44>] oom_kill_process+0x254/0x3d0 [Thu Nov 29 11:16:42 2018] [ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name [Thu Nov 29 12:05:50 2018] mysqld invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 [Thu Nov 29 12:05:50 2018] [<ffffffff8bd97c44>] oom_kill_process+0x254/0x3d0 [Thu Nov 29 12:05:51 2018] [ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
果然是内存溢出问题,我仔细看了一下,发现mysql程序是比较消耗内存的,因此被内核给干掉了。
但是数据还必须继续导入才行,那我们只好停止一些暂时不用的程序,接着导入数据
然后导入数据就成功了。
下面是官方给出的问题解决方法:
因此我们下次要注意二点:
1、在导入数据的时候,比较消耗内存,因此我们先给程序释放空间运行
2、开启swap功能