en
言語設定
  • en
  • cs
  • hu
  • it
  • es
  • fr
  • de
  • ru
機械翻訳
  • bg
  • dk
  • nl
  • gr
  • il
  • jp
  • kr
  • いいえ
  • pl
  • tr

PostgresからMySQLに移行する

概要

Easy Projectサーバー管理者の皆様のために、PostgresからMySQLへのDB移行のためのいくつかのツールをテストしました。

XNUMXつは無料のオープンソースですが、古く、重大な欠点もあります。 その他はプレミアムツールであり、私たちの意見では、購入する価値のある結果が得られました。

無料オプション-pg2mysqlphpスクリプト

免責事項: このツールはサードパーティによって開発されました=> Easy Softwareの製品ではないため、保証されていません。
テスト済みのツールは次の場所で入手できます。
http://www.lightbox.ca/pg2mysql.php
php 7.4で動作するように、ツールに独自の変更を加えました。 ただし、使用は依然として自己責任であり、当社はいかなる保証も提供しません。

移行の手順

1.スクリプトをダウンロードし、アーカイブを解凍します。

wgetの http://www.lightbox.ca/pg2mysql/pg2mysql-1.9.tar.bz2  (作者によるオリジナルのスクリプトが含まれています)
wget https://www.easyredmine.com/ER/media/knowledge-base/pg2mysql-1.9.zip (phpバージョン7.4用に変更されたスクリプトが含まれています)

tar -xvf pg2mysql-1.9.tar.bz2(作者によるオリジナルスクリプトの場合)
pg2mysql-1.9.zipを解凍します (phpバージョン7.4用に変更されたスクリプトの場合)

2.phpをインストールします

須藤 apt インストール php7.4-cli (変更されたスクリプトの場合)

3.PostgreSQLデータベースのダンプを.sql形式で作成します。必ず「--formatp--inserts」を使用してください。

sudo -u postgres pg_dump --format p --inserts DBNAME_HERE> /path/to/file.sql

4.pg2mysql-1.9フォルダーに切り替えます

cd pg2mysql-1.9 /

5。 実行

php pg2mysql_cli.php /path/to/pd/dump/file.sql /path/where/to/save/mysql/file.sql

次のような行が表示されます

完了しました! 30820行5539SQLチャンク

注意:
 -いいえ、完璧ではありません
 -はい、すべてのストアドプロシージャを破棄します
 -はい、CREATETABLEとINSERTINTOを除くすべてのクエリを破棄します 
 -はい、提案をメールで送信できます:info [AT] lightbox.org
    -メールには、Postgresコードと予想されるMySQLコードを含めてください
 --postgresダンプの作成で問題が発生した場合は、必ず「--formatp--inserts」を使用してください。
 -指定されていない場合のデフォルトの出力エンジンはMyISAMです。 "

6.これで、SQLダンプが変更されたファイルが作成されます。 それを確認し、MyISAMをどこでもInnoDBに置き換えることを強くお勧めします

7.これで、このダンプをクリアなmysqlデータベースに復元できます。

8.(作成者が通知したように)スクリプトはインデックスを保存しないため、すべてのテーブルに手動でインデックスを追加する必要があります(インデックスがなくても機能しますが、重大なパフォーマンスの問題が発生する可能性があります)。 通常のEasyProjectアプリケーションによって生成されたMySQLテーブルに存在する必要があるすべてのインデックスのリストがあります。 手動または独自のカスタムスクリプトを介してそれらを追加する必要があります。

Web上で利用可能な他の無料ツールがあります。 しかし、私たちのテスト結果はそれらで満足のいくものではありませんでした。

プレミアムツール-DBConvert for MySQL&PostgreSQLv。4.3.5

3つのプレミアムツールをまとめてテストしました。 DBConvertが最適であると感じたため、その詳細な手順を説明します。

準備:

1. MySQLデータベースとPostgreSQLデータベースの両方に外部からアクセスできることを確認します(一時的に許可する場合があります)。

2.ユーザーとパスワードを使用して両方のデータベースにログインできることを確認します

3.ツールを-からインストールします https://dbconvert.com/postgresql/mysql/

変換を開始します。

1.ウィザードを開始します。

2.ソースデータベースを選択します。
PostgreSQL
ホスト名:postgresdbがインストールされているサーバーのIPまたはドメイン名。
ポート:デフォルトと異なる場合
ユーザー名:変換しようとしているデータベースにアクセスできるユーザー名
パスワード:上記のユーザーのパスワード。

[接続のテスト]ボタンをクリックします。 アプリは、選択したユーザーとパスワードでソースデータベースサーバーに接続できることを確認します。 可能であれば、データベースのリストがアップロードされます-正しいものを選択してください。

3. [次へ]をクリックします。 アプリはpostgresに接続し、データベースで利用可能なテーブルのリストを受け取ります。 変換するものをすべて選択することも、XNUMXつまたは少数のみを選択することもできます。

4.少し待つと、次のステップであるMySQL接続設定に転送されます。
ホスト名:mysqldbがインストールされているサーバーのIPまたはドメイン名。
ポート:デフォルトと異なる場合
ユーザー名:変換しようとしているデータベースにアクセスできるユーザー名
パスワード:上記のユーザーのパスワード。

[接続のテスト]ボタンをクリックします。 アプリは、選択したユーザーとパスワードでソースデータベースサーバーに接続できることを確認します。 可能であれば、データベースのリストがアップロードされます-正しいものを選択してください。

5.次のステップで、アプリケーションはソースデータベースをチェックし、考えられる問題を解決する方法についていくつかの推奨事項を提供します。

次の問題が発生しました。

テーブル「変更」フィールド「アクション」。 元のDBでは、タイプは「CHAR(1)」でした。 しかし、デフォルト値は ''だったので、Mysqlはそれが無効であると想定しました。 新しいタイプを選択できます。 CHAR(2)を選択し、[次へ]をクリックします。 この問題は修正されました。

他の問題のあるフィールドで同様のアクションを繰り返します。

6.もう一度[次へ]をクリックします。 アプリケーションは、合計および現在の進捗状況を示す変換を開始します。 変換が完了するまで待ちます。

7. [終了]をクリックします。 変換が行われます。

このツールの作成者は、有料の顧客をサポートします。

価格:149ドル(XNUMX回)

その他のプレミアムオプション

また、これらのツールの試用版もテストしました。 それらについての一般的なコメントは次のとおりです。

  • pgs2scld (https://www.convert-in.com/pgs2sql.htm)
    データベースへの接続に問題はありません(追加のドライバーをインストールしたり、何らかの方法でセットアップしたりする必要はありません)。 試用版があります(試用モードでは、テーブルごとに50レコードのみがコピーされますが、すべての行がチェックされ、データベース全体がコピーされた場合と同じ進行状況が表示されます)。 内部デバッガーがあり、移行で発生する可能性のある問題を示しています。 移行中に適用できるさまざまなオプションがあります。 有料クライアントを24時間年中無休でサポートしています。 UIのみ、 Windows のみ。
    価格は49ドル(XNUMX回)。
  • ESFデータベース移行ツールキット (https://www.dbsofts.com/articles/postgresql_to_mysql/)
    データベースへの接続に問題はありません(追加のドライバーをインストールしたり、何らかの方法でセットアップしたりする必要はありません)。 試用版があります(試用モードでは50000レコードのみをコピーします)。 内部デバッガーがあり、移行で発生する可能性のある問題を示しています。 移行中に適用できるさまざまなオプションがあります。 有料クライアントを24時間年中無休でサポートしています。 UIのみ、 Windows のみ。
    価格は322ドル(XNUMX回)。

Easy Project を 30 日間の無料トライアルで試す

フル機能、SSL 保護、毎日のバックアップ、ジオロケーション