2017-09-29 20 views
0

OpenShift v2を使用する前に、mysqlスキーマをアプリケーションにインポートするのは簡単です。私はちょうど私のOpenShiftアプリケーションにphpMyadminカートリッジを追加して、私のSQLファイルをインポートします。しかし、OpenShift v3では、phpMyadminカートリッジを持っていません。mysqlデータストアを使用してOpenShift v3でmysqlデータベース(schema.sql)をインポートする方法は?

答えて

1

私が正しく理解していれば、MySQLデータベースアプリケーションをOpenShiftバージョン2(v2)からOpenShiftバージョン3(v3)に移行する必要があります。その場合は、ここで手順は次のとおりです:ダンプ・ファイルへ

エクスポートすべてのデータベースと(カレントディレクトリに)ローカルマシンにコピー:ローカルマシンへ

$ 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 

ダウンロードDBDUMP:

$ mkdir mysqldumpdir 
$ rhc scp -a <v2_application_name> download mysqldumpdir app-root/data/all.sql 

テンプレートからv3のmysqlの永続ポッド作成:POかどうかを確認するために

$ 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> 

チェックdが使用できるようになりました:rootユーザーとしてMySQLにアクセスする必要があるデータベースを復元するために、V3では

$ oc rsh <mysql_pod> 
$ cd /var/lib/mysql/data/mysqldumpdir 

$ oc get pods 
When the pod is up and running, copy database archive files to your v3 MySQL pod: 

$ oc rsync /local/mysqldumpdir <mysql_pod_name>:/var/lib/mysql/data 

はv3のランニングポッドでデータベースを復元します。

v2では、$ OPENSHIFT_MYSQL_DB_USERNAMEはすべてのデータベースに対して完全な権限を持っていました。 v3では、データベースごとに$ MYSQL_USERに権限を付与する必要があります。

$ mysql -u root 
$ source all.sql 
Grant all privileges on <dbname> to <your_v2_username>@localhost, then flush privileges. 

ポッドからダンプディレクトリを削除します。

$ cd ../; rm -rf /var/lib/mysql/data/mysqldumpdir 
+1

をコンテナにデータ・ダンプ・ファイルをアップロードする必要の代わりにローカルマシンにデータベースを公開するポート転送を使用することです。ローカルのボックスにある '' mysql''クライアントを使ってリモートデータベースに接続し、データダンプを再生することができます。ポート転送についてはhttps://learn.openshift.com/のシナリオを参照してください。 PostgreSQLを使用してリモートデータベースに接続する例を示します。 MySQLの場合と同じ考えです。 –

関連する問題