V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
cexia
V2EX  ›  MySQL

MySQL load data 中途遭遇 SSH 断线。。。

  •  
  •   cexia · 2016-03-28 15:28:26 +08:00 · 3282 次点击
    这是一个创建于 2954 天前的主题,其中的信息可能已经有所发展或是发生改变。

    情景: 本地通过 SSH 登录远程的 CentOS6.5.

    上传数据文件后,在 mysql client 中执行 load data infile ... into table ...。

    数据文件大小 3 个 GB 左右。

    执行到中途, VPN 中断导致 SSH 断线。

    SSH 重新连上以后,发现 mysqld 进程“僵死”:无法 kill ,无法配置。

    搜了相关资料,定位到一个异常现象是,发生断线后,/var/lib/mysql/mysql.sock 文件被系统删除。

    第一次发生以上现象后,用 CentOS reboot 和 MySQL 重装解决。

    侥幸心理,又试了一次,再次遭遇 SSH 断线。问题依旧。

    无能为力了,求高人指点!

    20 条回复    2016-03-29 17:31:35 +08:00
    noahzh
        1
    noahzh  
       2016-03-28 15:31:45 +08:00   ❤️ 1
    tmux 适合你,而且不是僵死,那是数据没有 load 完....
    UnisandK
        2
    UnisandK  
       2016-03-28 15:33:38 +08:00   ❤️ 1
    你开个 screen 跑啊。。
    CosWind
        3
    CosWind  
       2016-03-28 15:34:15 +08:00   ❤️ 1
    同学你需要在后台执行任务, screen , byobu , tmux 之类都可以
    cexia
        4
    cexia  
    OP
       2016-03-28 15:43:21 +08:00
    @noahzh

    SSH 重连上以后:

    # mysql -u root -p
    Enter password:
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    另外 mysqld kill 不掉啊!

    个人觉得是异常。如果有误还请指点!
    noahzh
        5
    noahzh  
       2016-03-28 15:47:01 +08:00
    你看一下 uptime 不是断线是重启了吧.
    CosWind
        6
    CosWind  
       2016-03-28 15:47:03 +08:00   ❤️ 1
    找到 pid, kill -9 不可能杀不掉;
    启动的时候看下错误日志,看看是什么原因;
    估计是 data_dir 里的文件 load data 中断之后损坏了,重新 init 一次,恢复一次数据吧
    cexia
        7
    cexia  
    OP
       2016-03-28 15:47:10 +08:00
    正在研究 screen ,应该就是可行的解决办法。谢谢大家!
    youkochan
        8
    youkochan  
       2016-03-28 16:09:43 +08:00
    screen ~ 喵~
    tmux ~ 喵~
    micookie
        9
    micookie  
       2016-03-28 16:40:33 +08:00
    screen
    yghack
        10
    yghack  
       2016-03-28 16:41:59 +08:00
    为什么不在后台跑
    表示不能理解
    lxy
        11
    lxy  
       2016-03-28 16:46:47 +08:00
    写个脚本, nohup 挂后台。
    cexia
        12
    cexia  
    OP
       2016-03-28 18:43:32 +08:00
    @yghack

    "load data infile ... into table ..."

    MySQL 的 SQL 语句怎么用后台来执行?
    hualuogeng
        13
    hualuogeng  
       2016-03-28 19:31:41 +08:00
    tmux 多好
    staticor
        14
    staticor  
       2016-03-28 22:46:31 +08:00
    楼主 经历过一些 就成长一些.
    realpg
        15
    realpg  
       2016-03-28 23:42:11 +08:00
    1. 为啥不后台跑,这种需要很长时间执行的东西,直接 ssh 跑,你领导知道么
    2. 你那不是 kill 不掉,是硬 kill 掉以后再起不来吧,你需要删除那个 pid 文件, unix 系的启动脚本大多用 pid 文件来检测是否已经在运行,你 kill 掉非正常退出,没有清理 pid 文件
    11138
        16
    11138  
       2016-03-28 23:54:10 +08:00
    http://stackoverflow.com/questions/20410904/linux-bash-mysql-load-infile

    然后用 cron 定个时间执行。用 nohup 的话,有些系统还是会因为 ssh 断开而挂掉。
    Mireas
        17
    Mireas  
       2016-03-29 00:33:43 +08:00
    凡是重要进程一律丢 screen...这是作为使用 LinuxServer 的一个重要知识...
    LINAICAI
        18
    LINAICAI  
       2016-03-29 00:39:48 +08:00
    SSH 登录有个超时短线啊。。。你这么玩的
    yghack
        19
    yghack  
       2016-03-29 08:30:36 +08:00
    shell
    anyforever
        20
    anyforever  
       2016-03-29 17:31:35 +08:00
    @UnisandK 9494,这么重要的事,一定要保证后续能顺利进行啊。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4831 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:41 · PVG 13:41 · LAX 22:41 · JFK 01:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.