0

参考:Mysql数据库的复制数据库结构

这是我的问题...我有一个网站,我使用 PPC 来吸引流量。我跟踪访问者的关键字、PPC 来源、广告版本等。目前我将这些数据存储在一个名为visits. 然而,当这个 PPC 活动全速运行时,它会生成大量数据。每隔一段时间,我的网站就会崩溃,因为该数据库已填满并停止响应。(而且因为我忘记手动复制并清空......)

所以现在我想创建一个每周/每月运行一次的 PHP 或 Ruby 脚本,将收集到的数据放入存档数据库并清空用于数据收集的数据库。我认为最快的方法是将现有数据库重命名为visits名称中带有日期戳的名称,例如visits_010113_0201132013 年 1 月。然后复制创建一个visits仅包含该结构的新数据库。主键是由 PHP 的 md5 函数生成的 32 字符散列,因此由于自动增量而导致的重复键不是问题。

(我选择了一个数据库来存储数据,因为我熟悉数据库,并且我希望能够解析数据以进行自定义报告。我愿意接受不同架构的建议,但我不想花下一个3 周的时间编写新的类,例如现在的新架构。)

我在将数据库的结构复制到新数据库时运行了 Google 搜索(第一个结果是我在上面引用的结果,第一页的其余大部分都非常相似)。但是,这些解决方案都通过 CLI 使用 mysqldump。我想通过 PHP 或 Ruby 做所有事情。我可以使用我为 PHP 提供的 SSH 类来执行 CLI,但这似乎是一个 hack。

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

谢谢

4

1 回答 1

0

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

CREATE TABLE cur_db.tbl_name LIKE old_db.tbl_name

所以你的脚本可以重命名数据库,创建新的数据库,然后在你的表名上循环运行它。

于 2013-04-08T17:21:11.637 回答