2010-04-20 40 views
0

ALTER TABLE可能需要几天时间 - 在此期间,由于网络问题,连接终止的机会不可忽视。是否有可能启动ALTER TABLE(或CREATE TABLE ... SELECT ...;或其他一些长时间运行的查询),并保持连接运行而不保持连接始终打开?是否可以在不保持连接打开的情况下继续运行mysql迁移?

(屏幕+控制台mysql客户端的明显解决方案不会轻松工作,因为该服务器上没有运行ssh,只有mysqld)。

回答

0

把你的alter table命令的脚本,你会从一个shell脚本调用此类

#!/usr/bin/ksh 

muser=username 
mpass=password 
mhost=hostname 
mdb=databasename 

mysql --user=$muser --password=$mpass --host=$mhost $mdb < alter.sql 

然后调用shell脚本的nohup

nohup myscript.ksh >logfile 2>&1 & 

您可以登录出壳会议后立即。您可能会收到一条警告消息,指出您正在运行作业,但可以忽略。

您可以跳过sql脚本并将这些命令放在shell脚本中。我只是不记得语法

+0

如果它不是立即从我的答案清楚,你可以从任何可以远程连接到mysql数据库的linux/unix框运行此 – coolgeek 2010-04-20 06:21:48

+0

这根本不会工作,因为作为我说,服务器上只有mysql,而不是任何形式的ssh。如果我在另一台计算机上启动脚本,网络连接可能会在运行的所有日期内失败。 – taw 2010-04-20 11:06:26

+0

首先,您通过shell脚本中的mysql命令连接到数据库,而不是通过ssh。其次,阅读nohup的手册页。这正是它所设计的 - 长时间运行的工作,有可能导致连接终止。还要注意我正在记录输出并将作业放在后台 – coolgeek 2010-04-20 13:13:55

相关问题