6.2. データベースアプリケーションの移行
6.2.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
以下のトピックでは、MySQL、PostgreSQL および MongoDB データベースアプリケーションを OpenShift バージョン 2 (v2) から OpenShift version 3 (v3) に移行する方法を確認します。
6.2.2. サポートされているデータベース リンクのコピーリンクがクリップボードにコピーされました!
v2 | v3 |
---|---|
MongoDB: 2.4 | MongoDB: 2.4、2.6 |
MySQL: 5.5 | MySQL: 5.5、5.6 |
PostgreSQL: 9.2 | PostgreSQL: 9.2、9.4 |
6.2.3. MySQL リンクのコピーリンクがクリップボードにコピーされました!
すべてのデータベースをダンプファイルにエクスポートして、これをローカルマシン (現在のディレクトリー) にコピーします
rhc ssh <v2_application_name> mysqldump --skip-lock-tables -h $OPENSHIFT_MYSQL_DB_HOST -P ${OPENSHIFT_MYSQL_DB_PORT:-3306} -u ${OPENSHIFT_MYSQL_DB_USERNAME:-'admin'} \ --password="$OPENSHIFT_MYSQL_DB_PASSWORD" --all-databases > ~/app-root/data/all.sql exit
$ rhc ssh <v2_application_name> $ mysqldump --skip-lock-tables -h $OPENSHIFT_MYSQL_DB_HOST -P ${OPENSHIFT_MYSQL_DB_PORT:-3306} -u ${OPENSHIFT_MYSQL_DB_USERNAME:-'admin'} \ --password="$OPENSHIFT_MYSQL_DB_PASSWORD" --all-databases > ~/app-root/data/all.sql $ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dbdump をローカルマシンにダウンロードします。
mkdir mysqldumpdir rhc scp -a <v2_application_name> download mysqldumpdir app-root/data/all.sql
$ mkdir mysqldumpdir $ rhc scp -a <v2_application_name> download mysqldumpdir app-root/data/all.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow テンプレートから v3 mysql-persistent Pod を作成します。
oc new-app mysql-persistent -p \ MYSQL_USER=<your_V2_mysql_username> -p \ MYSQL_PASSWORD=<your_v2_mysql_password> -p MYSQL_DATABASE=<your_v2_database_name>
$ oc new-app mysql-persistent -p \ MYSQL_USER=<your_V2_mysql_username> -p \ MYSQL_PASSWORD=<your_v2_mysql_password> -p MYSQL_DATABASE=<your_v2_database_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod の使用準備ができているかどうかを確認します。
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod の実行中に、データベースのアーカイブファイルを v3 MySQL Pod にコピーします。
oc rsync /local/mysqldumpdir <mysql_pod_name>:/var/lib/mysql/data
$ oc rsync /local/mysqldumpdir <mysql_pod_name>:/var/lib/mysql/data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow v3 の実行中の Pod に、データベースを復元します。
oc rsh <mysql_pod> cd /var/lib/mysql/data/mysqldumpdir
$ oc rsh <mysql_pod> $ cd /var/lib/mysql/data/mysqldumpdir
Copy to Clipboard Copied! Toggle word wrap Toggle overflow v3 では、データベースを復元するには、root ユーザーとして MySQL にアクセスする必要があります。
v2 では、
$OPENSHIFT_MYSQL_DB_USERNAME
には全データベースに対する完全な権限がありました。v3 では、権限をデータベースごとに$MYSQL_USER
に割り当てる必要があります。mysql -u root source all.sql
$ mysql -u root $ source all.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <dbname> のすべての権限を
<your_v2_username>@localhost
に割り当ててから、権限をフラッシュします。Pod からダンプディレクトリーを削除します。
cd ../; rm -rf /var/lib/mysql/data/mysqldumpdir
$ cd ../; rm -rf /var/lib/mysql/data/mysqldumpdir
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サポート対象の MySQL 環境変数
v2 | v3 |
---|---|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
|
6.2.4. PostgreSQL リンクのコピーリンクがクリップボードにコピーされました!
ギアから v2 PostgreSQL データベースをバックアップします。
rhc ssh -a <v2-application_name> mkdir ~/app-root/data/tmp pg_dump <database_name> | gzip > ~/app-root/data/tmp/<database_name>.gz
$ rhc ssh -a <v2-application_name> $ mkdir ~/app-root/data/tmp $ pg_dump <database_name> | gzip > ~/app-root/data/tmp/<database_name>.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルマシンに、バックアップファイルを展開します。
rhc scp -a <v2_application_name> download <local_dest> app-root/data/tmp/<db-name>.gz gzip -d <database-name>.gz
$ rhc scp -a <v2_application_name> download <local_dest> app-root/data/tmp/<db-name>.gz $ gzip -d <database-name>.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記手順 4 とは別のフォルダーにバックアップファイルを保存します。
新規サービスを作成するための v2 アプリケーションのデータベース名、ユーザー名、パスワードを使用して PostgreSQL サービスを作成します。
oc new-app postgresql-persistent -p POSTGRESQL_DATABASE=dbname -p
$ oc new-app postgresql-persistent -p POSTGRESQL_DATABASE=dbname -p POSTGRESQL_PASSWORD=password -p POSTGRESQL_USER=username
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod の使用準備ができているかどうかを確認します。
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod を実行中に、バックアップディレクトリーを Pod に同期します。
oc rsync /local/path/to/dir <postgresql_pod_name>:/var/lib/pgsql/data
$ oc rsync /local/path/to/dir <postgresql_pod_name>:/var/lib/pgsql/data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod にリモートからアクセスします。
oc rsh <pod_name>
$ oc rsh <pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースを復元します。
psql dbname < /var/lib/pgsql/data/<database_backup_file>
psql dbname < /var/lib/pgsql/data/<database_backup_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要のなくなったバックアップファイルをすべて削除します。
rm /var/lib/pgsql/data/<database-backup-file>
$ rm /var/lib/pgsql/data/<database-backup-file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サポート対象の PostgreSQL 環境変数
v2 | v3 |
---|---|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
6.2.5. MongoDB リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift v3 の場合: MongoDB シェルバージョン 3.2.6
- OpenShift v2 の場合: MongoDB シェルバージョン 2.4.9
ssh
コマンドを使用して、v2 アプリケーションにリモートからアクセスします。rhc ssh <v2_application_name>
$ rhc ssh <v2_application_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -d <database_name> -c <collections>
で単一のデータベースを指定して、mongodump を実行します。このオプションがないと、データベースはすべてダンプされます。各データベースは、独自のディレクトリーにダンプされます。mongodump -h $OPENSHIFT_MONGODB_DB_HOST -o app-root/repo/mydbdump -u 'admin' -p $OPENSHIFT_MONGODB_DB_PASSWORD cd app-root/repo/mydbdump/<database_name>; tar -cvzf dbname.tar.gz exit
$ mongodump -h $OPENSHIFT_MONGODB_DB_HOST -o app-root/repo/mydbdump -u 'admin' -p $OPENSHIFT_MONGODB_DB_PASSWORD $ cd app-root/repo/mydbdump/<database_name>; tar -cvzf dbname.tar.gz $ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dbdump を mongodump ディレクトリーのローカルマシンにダウンロードします。
mkdir mongodump rhc scp -a <v2 appname> download mongodump \ app-root/repo/mydbdump/<dbname>/dbname.tar.gz
$ mkdir mongodump $ rhc scp -a <v2 appname> download mongodump \ app-root/repo/mydbdump/<dbname>/dbname.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow v3 で MongoDB Pod を実行します。最新のイメージ (3.2.6) には mongo-tools が含まれないので、
mongorestore
またはmongoimport
コマンドを使用するには、デフォルトの mongodb-persistent テンプレートを編集して、mongo-tools, “mongodb:2.4”
を含むイメージタグを指定します。このため、以下のoc export
コマンドを使用して、編集することが必要です。oc export template mongodb-persistent -n openshift -o json > mongodb-24persistent.json
$ oc export template mongodb-persistent -n openshift -o json > mongodb-24persistent.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mongodb-24persistent.json の L80 を編集します。
mongodb:latest
はmongodb:2.4
に置き換えてください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mongodb Pod の実行中に、データベースのアーカイブファイルを v3 MongoDB Pod にコピーします。
oc rsync local/path/to/mongodump <mongodb_pod_name>:/var/lib/mongodb/data oc rsh <mongodb_pod>
$ oc rsync local/path/to/mongodump <mongodb_pod_name>:/var/lib/mongodb/data $ oc rsh <mongodb_pod>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MongoDB Pod で、復元する各データベースについて以下を実行します。
cd /var/lib/mongodb/data/mongodump tar -xzvf dbname.tar.gz mongorestore -u $MONGODB_USER -p $MONGODB_PASSWORD -d dbname -v /var/lib/mongodb/data/mongodump
$ cd /var/lib/mongodb/data/mongodump $ tar -xzvf dbname.tar.gz $ mongorestore -u $MONGODB_USER -p $MONGODB_PASSWORD -d dbname -v /var/lib/mongodb/data/mongodump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースが復元されたかどうかを確認します。
mongo admin -u $MONGODB_USER -p $MONGODB_ADMIN_PASSWORD use dbname show collections exit
$ mongo admin -u $MONGODB_USER -p $MONGODB_ADMIN_PASSWORD $ use dbname $ show collections $ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod から mongodump ディレクトリーを削除します。
rm -rf /var/lib/mongodb/data/mongodump
$ rm -rf /var/lib/mongodb/data/mongodump
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サポート対象の MongoDB 環境変数
v2 | v3 |
---|---|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
|