レンダーファーム管理ソフトウエア Qube! FAQ

検索結果詳細

種別 ライセンス/インストール
No 1005
質問 MySQLからPostgreSQLへのデータ移行手順(対応ver:7.0以降)
回答

MySQLからPostgreSQLへのデータ移行手順


オリジナル(英文)の移行手順は以下のサイトにございます。
・Transferring data from MySQL to PostgreSQL
http://docs.pipelinefx.com/display/QUBE/Transferring+data+from+MySQL+to+PostgreSQL

<注意事項>

    ・Qube! 6.x supervisorで使用していたMySQLデータを、Qube! 7 以降のPostgreSQLへ引き継ぐための手順を解説します。
    投入履歴や統計などの引継ぎが必要な場合の手順となりますので、引継ぎが必要無い場合は、このステップを実行する必要はありません。
    ・Qube! 6.10-x のデータベース形式(version 37) からのデータ移行のみをサポートします。
    それ以前のデータ形式から移行する場合は、事前にversion 37にアップしておく必要がありますので、ステップ2をご参照ください。
    ・作業の順序は重要ですので、事前に作業ステップをご確認ください。
    ・Windows版では、Python 2.6以上が必要となりますので、事前にインストールし、システムパスに、C:\Python<ver>, C:\Python<ver>\Scripts が含まれていることを確認します。
    (Linux, Mac OSXではOSに含まれております)

 <作業フロー>

    1.現在のファームを非アクティブにします。
    2.MySQLからデータを、.csvへエクスポートします。
    3.Supervisorをバージョンアップします。
    4..csvを、PostgreSQLにインポートします。
    5.新しいSupervisor環境で、ファームをアクティブ化します。

<作業内容>

ステップ1.現在のファームを非アクティブにします。


supervisorにて、コマンドプロンプトより以下を実行します。

supervisorを非アクティブにし、新規にジョブを受け付けないようにします。
qbadmin supervisor --set stop_activity
qbadmin supervisor --set reject_submit

  • Workerをロック状態にします。
    qblock --all ※実行中のジョブがあれば、フレームが完成後にロック
    または、
    qblock --all --purge ※実行中のジョブはフレームの完成を待たず、直ぐに終了

ステップ2.MySQLからデータを、.csvへエクスポートします。


エクスポートに要する時間を見積もっておきます。
supervisorのCPUやHDD等のハードウェアおよびジョブ数に依存しますが、一例として、Mac OS X, SSDの構成、ジョブ数が256(各100フレーム)の場合、約6秒でした。
従いまして、ジョブ数が、10,000くらいだと、4分程度となります。

    このステップでは、スクリプトを使用して、MySQLから、フォルダ内の.csvファイルへ一括して出力します。

    1. MySQLサーバーが実行中になっているのを確認し(PfxMysqlサービスが実行中)、Qubeのデータベース形式が、version 37になっているかどうか確認します。コマンドプロンプトより以下を実行します。

    Linux: /usr/bin/mysql -u root -e 'SELECT * FROM qube.tableversion'
    Mac: /usr/local/mysql/bin/mysql -u root -e 'SELECT * FROM qube.tableversion'
    Windows: "C:\Program Files\pfx\qube\mysql\bin\mysql" -u root -e "SELECT * FROM qube.tableversion"


    以下のように返ってくればOKです。
    +---------+
    | version |
    +---------+
    | 37        |
    +---------+


    もし、37より少ないバージョン番号が返ってきた場合、以下の手順で、データベース形式をアップグレードします。
    a. お使いのプラットフォームにあわせて、"upgrade_supervisor"を以下のサイトよりダウンロードします。
      http://repo.pipelinefx.com/downloads/pub/db_migration_tools/
    b. コマンドプロンプトより、ダウンロードした"upgrade_supervisor"を実行します。
      ※Windowsの場合、zipを解凍し、"upgrade_supervisor.bat"を実行します。
    c. "upgrade_supervisor"の実行で、クリティカルなエラーが出ていないかチェックします。
    d. 再び、1.のコマンドでデータベース形式のバージョンをチェックします。37になっていればOKです。


    2. MySQLからの .csvファイルの出力フォルダを選択します。あわせて、アクセス権限、空き容量などもご確認ください。

    【注意】=====
    CentOS 7.x、および他のLinuxでも、/opt以下に作業用ディレクトリを作成し、rootユーザでexportを実行します。
    ここで、/tmp, /var/tmp, /usr/tmpといったディレクトリ、および、それらのディレクトリ内のサブディレクトリは、MySQLサービスが使用している可能性があるため使用しないようにしてください。また、/root以下や、任意のユーザのホームディレクトリもパーミッションの問題でアクセスできない可能性がありますので、避けてください。
    例えば、/opt以下にディレクトリを作成し、パーミッションを設定します。

    sudo mkdir -p /opt/mysql_dump
    sudo chmod 755 /opt/mysql_dump

    rootユーザにて、引き続き3.の"export_data_from_mysql.py"と"fix_mysql_column_orders.sql"スクリプトを、このディレクトリに置き、スクリプトを実行する手順となります。
    ==========

 

    3. 以下のサイトより、"export_data_from_mysql.py"と"fix_mysql_column_orders.sql"スクリプトをダウンロードし、2.の出力フォルダに置きます。
    http://repo.pipelinefx.com/downloads/pub/db_migration_tools/

    4. コマンドプロンプトより、出力フォルダに移動し、"export_data_from_mysql.py"スクリプトを実行します。
    引数無しで実行すると、カレントディレクトリ内に、サブディレクトリ"qube_mysqldump"を作成し、その中にすべてのダンプファイルを出力します。
     
    python export_data_from_mysql.py
     ※"export_data_from_mysql.py -h" にて、オプション類が確認できます。


    5. 処理するジョブ数やフレーム数によっては時間がかかりますので、実行中、エラーが出力されないか注意してください。

    6. プロセスが終了したら、エラーが出ていないか確認します。あわせて、サブフォルダ"qube"とサブフォルダ"<number>qube"のダンプディレクトリが存在するかも確認します。

    7. ダンプディレクトリの位置に注意し、次のステップへ進みます。

ステップ3.supervisorをバージョンアップします。

インストールガイドに従い、supervisorを v7 にバージョンアップします。


ステップ4..csvを、PostgreSQLにインポートします。

インポートに要する時間を見積もっておきます。
エクスポートと同様、supervisorのCPUやHDD等のハードウェアおよびジョブ数に依存しますが、およそ、エクスポート時の1/4程度とお考えください。
一例として、Mac OS X, SSDの構成、ジョブ数が10,000(各100フレーム)の場合、約33秒でした。

    1. PostgreSQLサーバーが実行中なのを確認し、以下のコマンドを実行します。

    Linux: /usr/local/pfx/pgsql/bin/psql -p 50055 -d pfx -U qube -c "SELECT * FROM qube.tableversion"
    Mac: /Applications/pfx/pgsql/bin/psql -p 50055 -d pfx -U qube -c "SELECT * FROM qube.tableversion"
    Windows: "C:\Program Files\pfx\pgsql\bin\psql" -p 50055 -d pfx -U qube -c "SELECT * FROM qube.tableversion"


    以下のように返ってくればOKです。※値は、51以上であればOKです。
    version
    ---------
    51
    (1 row)


    2. コマンドプロンプトにて、エクスポート時と同じ、ディレクトリに移動します。デフォルトでは、"qube_mysqldump"フォルダの親フォルダです。

    3. 以下のように、"import_data_into_pgsql.py"スクリプトを実行します。

    Linux: python /usr/local/pfx/qube/utils/pgsql/import_data_into_pgsql.py
    Mac: python /Applications/pfx/qube/utils/pgsql/import_data_into_pgsql.py
    Windows: python "C:\Program Files\pfx\qube\utils\pgsql\import_data_into_pgsql.py



    4. 処理するジョブ数やフレーム数によっては時間がかかりますので、実行中、エラーが出力されないか注意してください。

ステップ5.新しいSupervisor環境で、ファームをアクティブ化します。

  • supervisorにて、コマンドプロンプトより以下を実行します。

    supervisorをアクティブにし、新規にジョブが受けられるようにします。

    qbadmin supervisor --unset stop_activity
    qbadmin supervisor --unset reject_submit

  • Workerのロックを解除します。

    qbunlock --all

    WranglerViewまたは、ArtistViewを起動して、ジョブ履歴が引き継がれているかご確認ください。
    また、新規にジョブを投入して、正常に処理されるか確認します。
トップに戻る