sql >> データベース >  >> RDS >> Mysql

Perl:リモートMYSQLテーブルを別のデータベースにコピー/ミラーリングする方法は?おそらく異なる構造も?

    探している2つの用語は、「レプリケーション のいずれかです。 "または"ETL"。

    まず、レプリケーションアプローチ。

    管理サーバーにテーブルT1、T2、T3があり、パブリックサーバーにテーブルTP1、TP2があるとします。

    したがって、(あなたが言ったように異なるテーブル構造を持っているので)あなたがしたいことは次のとおりです:

    1. パブリックサーバーからテーブルを取得し、管理サーバー(TP1およびTP2)にそれらのテーブルの正確なコピーを作成します。

    2. 管理サーバーの元のテーブルにトリガーを作成して、T1 / T2/T3から管理サーバーのTP1/TP2のコピーにデータを入力します。

    3. また、T1 / T2/T3から管理サーバーのTP1/TP2のコピーに初期データを取り込む必要があります。ええ。

    4. レプリケーション を設定します "管理サーバーのTP1/TP2からパブリックサーバーのTP1/TP2へ

    別のアプローチは、管理サーバー(「ETL」の「E」部分)のT1 / T2 / T3からデータを抽出し、データをマッサージするプログラム(ETL-Extract-Transform-Loadと呼ばれる)を作成することです。 TP1 / TP2テーブル(「ETL」の「T」部分)へのロードに適した形式に変換し、(ftp / scp / whatnotを介して)それらのファイルをパブリックサーバーに転送し、プログラムの後半(「L」)一部は、パブリックサーバー上のテーブルTP1/TP2にファイルをロードします。プログラムの両方の半分はcronによって起動されます または選択したスケジューラー。

    Perl / MySQLETLの構築を開始する方法の非常に良い例を含む記事があります: http://oreilly.com/pub/a/databases/2007/04/12/building-a-data-warehouse -with-mysql-and-perl.html?page =2

    独自に構築したくない場合は、オープンソースETLシステムのリストを次に示します。使用したことがないため、使いやすさや品質についての意見はありません。 http://www.manageability.org/blog/stuff/open-source-etl



    1. SQL Server:複数の行を1つの行に結合

    2. MariaDBでのLOG()のしくみ

    3. $ _GETを使用して、PHPで同じ名前を使用して複数のパラメーターを取得する方法

    4. SQL:フルネームフィールドから名、ミドルネーム、ラストネームを解析します