服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

用InnoDB和MyISAM表创build*一致的* *在线* MySQL备份

我花了几个小时build立一个新的数据库服务器,从一个月前创build的mysqldump文件中取代了两个失败的服务器,然后使用我的服务器的bin-logs使mysqldump保持最新状态。 现在我已经有了这个新的数据库服务器,并且已经运行了几天,我需要完成服务器设置并重新实现一个备份策略。 我需要为新服务器联机(至less)一个MySQL Replication Slave,并且在事情再次失败时开始创build可用的备份。 在我进一步行动之前: 我忘记了(eep)在导入旧的逻辑备份和执行旧的bin日志之前启用了新的MySQL服务器上的bin日志(在这个时候,在这个时候被唤醒了24小时)。 我的数据由多个数据库组成,所有这些数据库都混合使用了MyISAM表和InnoDB表。 同样,在启用新服务器上的bin日志的同一行中,我忘记了在导入所有数据之前打开my.cnf的innodb-file-per-table选项。 现在在新的MySQL服务器上启用了二进制日志,但是每个表的inno文件选项几乎是一个无法解决的问题,直到我可以导入另一个逻辑备份(我可能最终会启动第二个从服务器,并提升第一个从服务器掌握和放弃当前的主 – 因为configuration不是我需要它的地方)。 所以,问题是: 我需要备份MySQL服务器,但是我不能让新的MySQL服务器脱机。 我需要继续写作,并提供几乎没有停机时间的阅读。 这个“小到没有停机”的要求被定义为不到10分钟。 我的数据目前在服务器上使用大约100GB的空间(mysql数据文件),而逻辑备份大概是50GB(这是很多的索引..哈哈)。 我不在乎这个备份是合乎逻辑的,还是从MySQL数据目录拷贝数据文件。 我可以创build一个逻辑备份从奴隶后,我得到它在线。 而问题是: 你将如何创build这个需要的备份? 我知道这不容易,很多人会说这是不可能的。 但我拒绝相信这是不可能的,必须有办法做到这一点。 有关服务器的说明:它运行Ubuntu 10.04,MySQL 5.1.41,数据存储在其上的文件系统是ext3。 服务器在Rackspace Cloud上运行,所以文件系统几乎“现在就是这样”,除非我可以重新分区根设备,并用另一个FS(XFS也许?)重新分区来做快照。 我已经阅读了Perconas XtraBackup Tool,但它只适用于InnoDB表。 他们有一个MyISAM工具,但我真的不明白它如何(或者甚至是否与XtraBackup一起工作)创build一个完全一致的备份。 我已经阅读了关于mysqlhotcopy但它只适用于MyISAM表。 很明显,我知道mysqldump ,但(显然),这里的问题是创build一个一致的备份,而不locking整个数据库服务器的小时数,它将需要输出整个sql备份文件。

你如何设置PHP的CLI组件的最大执行时间?

你如何设置PHP的CLI组件的最大执行时间? 我有一个进入无限循环的CLI脚本,我不知道如何在不重新启动的情况下杀死它。 我用quicksilver启动它,所以我不能在命令行上按Ctrl + C。 我尝试运行ps -A (显示所有进程),但是php没有显示在列表中,所以也许已经超时了 – 但是如何手动设置时间限制? 我试图find关于应该在哪里设置max_execution_time设置的信息,我习惯将此设置为使用apache运行的PHP版本,但我不知道应该将其设置为位于/usr/bin的PHP版本/usr/bin 。 我确实看到了下面的引用,看起来是准确的(见下面的截图),但是执行时间不受限制似乎不是一个好主意。 请记住,对于CLI SAPI,max_execution_time被硬编码为0.所以它似乎被ini_set或set_time_limit更改,但实际上它不是。 我发现这个奇怪的决定的唯一参考是深入bugtracker( http://bugs.php.net/37306 )和php.ini(“max_execution_time”指令的注释)。 (通过http://php.net/manual/en/function.set-time-limit.php ) ini_set('max_execution_time')没有效果。 我也试过同样的事情,并用set_time_limit(7)得到相同的结果。 更新 所以似乎有三种方法来实现这一点: 在脚本中: 参数或者set_time_limit(10); // 这条路 ini_set('max_execution_time',10); //或者这样 或者在调用脚本时: php -d max_execution_time = 5 script.php 要回答我关于php.ini文件将从何处加载的问题,如果存在的话,那将来自/etc/php.ini 。 该文件还需要运行php脚本的用户可读,所以如果它是由root创build的,并且用户不能“读取”它,这意味着php可能无法“读取”它。 但是,似乎在/etc/php.ini设置的任何max_execution_time实际上都不会影响CLI脚本 – 即使正确加载了文件(使用phpinfo()查找) – 所以您必须使用其他方法之一上文提到的。 关于使用睡眠循环来testing这一点,我了解到,它不会工作。 set_time_limit()函数和configuration指令max_execution_time只影响脚本本身的执行时间。 在确定脚本运行的最长时间时,不包括使用system(),sleep()函数,数据库查询等在脚本执行之外发生的任何活动,如系统调用 检查出一个非常类似的问题上堆栈溢出问: https : //stackoverflow.com/questions/5874950/set-max-execution-time-in-php-cli