0

参考:Mysqlデータベースのコピーデータベース構造

これが私の問題です... 私は PPC を使用してトラフィックを誘導するサイトを持っています。訪問者のキーワード、PPC ソース、広告のバージョンなどを追跡します。現在、このデータを という名前の MySQL DB (InnoDB) に保存していますvisits。ただし、この PPC キャンペーンがフルスロットルで実行されると、大量のデータが生成されます。この DB がいっぱいになり、応答しなくなるため、サイトがクラッシュすることがよくあります。(そして、手動でコピーして空にするのを忘れているため...)

そこで、収集したデータをアーカイブ DB に入れ、データ収集に使用する DB を空にするために、週/月に 1 回実行する PHP または Ruby スクリプトを作成したいと考えています。最も速い方法は、既存の DBの名前を 2013 年 1 月のvisitsような名前に日付スタンプを含む名前に変更することだと思います。次に、構造のみで新しいものをコピーして作成します。主キーは PHP の md5 関数によって生成された 32 文字のハッシュであるため、自動インクリメントによる重複キーは問題になりません。visits_010113_020113visits

(私は DB に精通しており、カスタム レポート用にデータを解析できるようにしたかったので、データを格納する DB を選択しました。別のアーキテクチャの提案は歓迎しますが、次のコストを費やしたくありません。現在、新しいアーキテクチャ用に新しいクラスなどをコーディングするのに 3 週間かかります。)

DB の構造を新しい DB にコピーするために Google 検索を実行しました (最初の結果は上記で参照したもので、最初のページの残りのほとんどは非常に似ていました)。ただし、ソリューションはすべて CLI を介して mysqldump を使用します。PHPまたはRubyを介してすべてを行いたいです。CLI を実行するために PHP 用に持っている SSH クラスを使用できますが、それはハックのようです。

名前の変更とコピーを行うために渡すことができる単純な 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

したがって、スクリプトはDBの名前を変更し、新しいdbを作成してから、テーブル名に対してループでこれを実行できます。

于 2013-04-08T17:21:11.637 に答える