`
hunxiejun
  • 浏览: 1148613 次
文章分类
社区版块
存档分类
最新评论

cPanel下Cron Jobs还原超大MYSQL数据库的方法

 
阅读更多
大家都知道phpMyAdmin导入数据库有尺寸的限制,而且时间稍长就会time out导入失败。
网上也有各种软件用来导入,通常采用切割sql文件为多个小包的方法实现,繁琐而成功率也不是很高的。

如果你的数据库较大,就会常常烦恼。。。




用SSH直接登录到虚拟主机上直接运行如下命令来导入的:

mysql -u 用户名 -p口令 [-h 数据库主机] 数据库 < 数据库备份.sql

不过很多空间提供商都不给开放SSH或telnet权限。。。

可以用crontab来运行命令这样就不用为上传数据库苦恼了 !

使用 cPanel 面板里的Cron Jobs定时任务来实现数据库的还原。方法如下:

1、通过FTP上传你的备份SQL文件(或压缩文件data.sql.gz,飘易一般使用压缩后的备份,能节省一半以上的流量),放在网站根目录下。
2、进入你的cPanel,找到Cron Jobs 图标(时钟守护作业),点击进去,设置定时任务如下图:详细的设置请看文章下面的扩展阅读!

因为只需要运行一次,所以Minute, Hour, Day, Month 都填入准备运行的具体时间,留两分钟余量就行(服务器的当前时间可以在FTP上查看或放一个探针到网站上), Weekday填*号算了。

3、Command 填待运行的命令,就是导入命令:

mysql -u用户名 -p口令 [-h数据库主机] 数据库 < 数据库备份.sql

一般还原的是压缩的备份文件,命令如下:

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

在phpMyAdmin里监视导入情况。 速度很快,1G的数据库也就几分钟,我还原几十M的数据库,秒杀,因为这相当于在服务器本机操作,所以速度飞快。


更多的mysql数据库备份、还原的命令:

备份MySQL数据库的命令:
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库:
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

直接将MySQL数据库压缩备份:
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

备份MySQL数据库某个(些)表:
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

同时备份多个MySQL数据库:
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

仅仅备份数据库结构:
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上所有数据库:
mysqldump –all-databases > allbackupfile.sql

还原MySQL数据库的命令:
mysql -hhostname -uusername -ppassword databasename < backupfile.sql

还原压缩的MySQL数据库:
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器:
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename



扩展阅读:
Cpanel-Cron-Jobs设置方法:
时钟守护作业,设置页面有三大选项:Cron Email(通知邮箱地址,每次定时执行成功或失败都会通知这个邮箱)、Add New Cron Job(添加新的定时任务)、Current Cron Jobs(当前已有的定时任务)。

主要设置 Add New Cron Job 选项,如下图:

图上的是每隔5分钟执行一次 command 命令:
command命令:“php /home/piaoyi.org/public_html/cron.php”的意思为:
以php脚本的形式执行该命令,相当于浏览器访问的形式。
piaoyi.org 为你的当前用户名,在cpanel里找,必须改对。
cron.php 即定时执行的文件。

注:如果你的命令写的不对,你会在你的邮箱中收到类似 “/bin/sh: /home/www.piaoyi.org/public_html/cron.php: Permission denied”或者“No such file or directory”这样的错误提示;成功执行的话,邮箱中会收到类似“X-Powered-By: PHP/5.2.13 Content-type: text/html”这样的代码。

关于crontab的时间设置,说明如下:

crontab基本格式 :
* * * * *  command
分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)

第6列要运行的命令
crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启lighttpd 。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启lighttpd 。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启lighttpd 。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启lighttpd
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启lighttpd
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics