将数据库和复制数据库结构重命名为新数据库 - MySQL& PHP或Ruby

时间:2013-04-08 15:38:33

标签: php mysql mysqldump

参考:Copy Database Sructure of Mysql Database

这是我的问题...我有一个网站,我使用PPC来增加流量。我跟踪访问者的关键字,PPC来源,广告版本等。目前,我将此数据存储在名为visits的MySQL数据库(InnoDB)中。但是,当此PPC广告系列正在全速运行时,它会生成大量数据。我的网站经常崩溃,因为这个数据库填满并停止响应。 (因为我忘记手动复制并清空......)

所以现在我想创建一个每周/每月运行一次的PHP或Ruby脚本,将收集的数据放入存档数据库并清空用于数据收集的数据库。我假设最快的方法是将现有数据库visits重命名为2013年1月份名称为visits_010113_020113的日期戳。然后复制仅创建一个新的visits结构。主键是由PHP的md5函数生成的32个字符串哈希,因此自动增加的重复键不是问题。

(我选择了一个数据库来存储数据,因为我熟悉数据库,我希望能够解析自定义报告的数据。我愿意接受不同架构的建议,但我不想成为在接下来的3周内,我们将为新的架构编写新课程,以及现在的新架构。)

我在将数据库结构复制到新数据库时运行了Google搜索(第一个结果是我上面引用的结果,第一页的其余部分非常相似)。但是,解决方案都通过CLI使用mysqldump。我想通过PHP或Ruby做一切。我可以使用我用于PHP的SSH类来执行CLI,但这看起来像是一个黑客。

我希望有一个简单的SQL语句可以传递给重命名和复制。我首选的解决方案完全是PHP。我使用PHP 5.3.10-1ubuntu3.6与Suhosin-Patch,mysql 5.5.29-0ubuntu0.12.04.2和Ubuntu 12.04服务器。我还使用PHP的PDO对象与MySQL进行交互。

由于

1 个答案:

答案 0 :(得分:0)

所以这需要你有一个需要复制的表的列表,但我喜欢

CREATE TABLE cur_db.tbl_name LIKE old_db.tbl_name

因此,您的脚本可以重命名数据库,创建新的数据库,然后在表名称的循环中运行它。