phpMyAdminを利用したMySQL同期とWM3500Rポート解放
2014/11/22
本投稿においては、phpMyAdminを利用したMySQL同期について投稿します。
前回から続きで、レンタルサーバ環境へのphpMyAdminの設置まで完了しましたので、
私の本来の目的であった同期を行います。
はじめに
最初はphpMyAdminからレプリケーションを利用して、
リアルタイムに同期したいという目的がありましたが、
レンタルサーバ側にphpMyAdminをインストールしたところ、
レプリケーションが未実装なMySQLであったことが分かりました。
急遽、同期機能で代用することとしました。
レンタルサーバ側でどのような設定が有効であるかを確認するには、
phpMyAdminの[状態]タブから[レプリケーション]で確認ができます。
このレンタルサーバ上では「(未実装)」と表示されています。
これまでの投稿経緯は以下のようになっています。
- Webサーバ(Apache)インストール・導入設定
- PHPインストール・導入設定
- MySQLインストール・導入設定
- WordPressインストール・導入設定
- ローカル環境へのphpMyAdminの設置
- レンタルサーバ環境へのphpMyAdminの設置
- phpMyAdminを利用したMySQL同期設定(本投稿)
今回想定している同期の環境は、
これまでにインストールを行ってきた、
レンタルサーバーの公開ブログ(ここ)を
ローカル環境のMySQLに対して同期バックアップを取るという想定です。
本来ならここはリアルタイムで同期が可能な、
レプリケーションでバックアップしたいのですが、
レンタルサーバの負荷軽減を目的とした対応と思われる、
無効化であると思いますので今回はこの方法で行います。
注)同期は実行を行うたびにデータが直接ローカルに更新される為、
phpMyAdminのエクスポートインポートの手間が省けるだけで、
エクスポートのようにある時点のバックアップが残らないというデメリットがあります。
各自利用目的に応じて利用して頂けたらと思います。
手順としては以下の作業を行っていくことになります。
設定手順
事前準備
同期にてデータを受け取る側のデータベース名は、
同期元のデータベース名と同一名になります。
今回はwordpressにて利用するデータベースの
バックアップを目的としていますので、
同期先のwordpress設定も同期元のデータベース設定と、
同一にする必要があります。
wordpressのディレクトリ構成も同一とする必要があります。
またwordpressは内部的にURLを絶対パスで管理しているため、
同期先であるローカル環境でもリンクなどは、
すべて元URLにて取り込まれることに注意が必要です。
ただしこれはレンタルサーバの引っ越しなどで、
引越先のサーバにDNSを切り替える場合には、
特に問題になることはありません。
データベースの同期に合わせてwordPressのインストールディレクトリなどは、
別途FTP転送などで、同期先も同じように更新を行っておく必要があります。
ローカル環境のMySQLポートの解放
ローカル環境のポート解放については、
各自のインターネット接続環境に依存します。
自宅のルータなどのポートマッピング等に読み替えて頂ければと思います。
私の場合、WiMAXルータ AtermWM3500R に対して設定を行います。
投稿と関係ありませんが、WiMaxは結構安定していて便利です。
携帯のLTEでテザリング!という思惑も最近はありますが、
どうも公称されているほど速度もでず、安定性も悪い印象です。
携帯のバッテリの問題もありますし。
その為、現時点ではWiMaxが手放せない状況です^^;
但し、新幹線など高速移動を伴う場合には、
すぐにエリア外に出てしまうなどの不便さもありますが、
通常利用においては非常に安定して通信が可能です。
古い製品ですがクレードルで有線LANが使えるのも重宝してます。
NEC Aterm WM3500Rログイン
WiMAXルータのローカルIPアドレス(192.168.0.1など)に
Webブラウザからアクセスし、ユーザー名・パスワードを入力して、
クイック設定Web画面を表示します。
パケットフィルタ設定
ナビゲーションの[詳細設定]-[パケットフィルタ設定]をクリックし、
[追加]から設定を追加します。
本設定は、ポート3306に対して外部からのアクセスを許可する設定です。
ポート3306とはMySQLがデフォルトで利用するポート番号です。
ポートマッピング設定
ナビゲーションの[詳細設定]-[ポートマッピング設定]をクリックし、
[追加]から設定を追加します。
追加を行うと一覧に表示されます。
本設定は、ポート3306に対して外部からのアクセスがあった場合に、
ローカルIPアドレス192.168.0.2に対して、パケットを送る設定です。
192.168.0.2はローカル環境でMySQLがインストールされており、
wordpressブログ用にデータベースを設置したホストです。
これで外部からMySQLに関するパケットが、
192.168.0.2に対して届くようになりました。
次は、外部からアクセスを行う為にDNS設定を行います。
グローバルIPの直接指定でも構いませんが、グローバルIPではIPが変更になった際に、
毎回変更する必要がある為、現在のIPをDDNSに登録するように、
DDNSクライアントを設定します。
※既にDNSサービスに対してAレコードの設定が終了しているものとします。
[rakuten]bookfan:10421700[/rakuten]
ローカル環境へのグローバルIPのDDNS登録
ここではレンタルサーバをGMOのサーバーとして紹介します。
同じくGMOのお名前.comのレンタルサーバをご利用の場合には、
以下のヘルプを参照してください。
ダイナミックDNSクライアントのダウンロードについて
DDNS設定の登録
DNSエントリの新規追加
[タスク]-[新規作成]をクリックし、タスクの追加ダイアログを表示します。
DNSエントリの詳細設定
サブドメイン名の指定とドメインを入力し、
ドメインのユーザーIDとパスワードを入力します。
DNSエントリの確認
登録したDNSエントリが表示されているかを確認し、
[実行]をクリックすると現在のグローバルIPが、
対象のDNS名に割り当てられます。
これによって指定したドメイン名にて、
ルータモデムに対してアクセスが可能になります。
※但し、DNS名にてアクセスが可能になる為には、
最長で24時間程度がかかる場合があります。
同期実行前の注意事項
今回、wordpressブログのデータベースを対象として、
MySQLの同期を行いますが、
同期元のサーバー上wordpressにインストールされている
プラグイン、テーマなどに関しては極力同じものを、
同期先のローカル上wordpressに対しても
インストールされることをお勧めします。
まれにプラグインがそのプラグイン用として、
個別にテーブルを追加するような場合があり、
同期やエクスポートにて出力したデータのインポートに、
失敗しやすくなります(出力のオプションに依存しますが)
例)wp_tweet_urlsテーブルなどがデフォルトで存在しないテーブルです。
レンタルサーバ側のphpMyAdmin同期設定
ここまできてやっと、ローカル環境のMySQLが外部からアクセスが可能になります。
アクセスが可能になったローカル環境を、
サーバ側のphpMyAdminからアクセスを行って同期の実行を行います。
phpMyAdminへのログイン
phpMyAdminにログインを行い[同期]タブをクリックします。
ページサイズが小さい際には[その他]タブ内に集約されている場合があります。
サーバー設定について
phpMyAdminのインストール時に行ったサーバー追加を
既に同期先であるMySQL(ローカル)に対しても設定が、
済んでいることとします。
ローカル側MySQLの状態
同期先であるMySQLにはデータベースが存在しており、
テーブルが存在していない状態であることを確認します。
※実際にはテーブルもデータも存在している場合でも、
データをすべて削除してから同期する設定が選択可能です。
ここでは同期をわかりやすくするためテーブルが存在していないこととしています。
同期設定画面の表示
phpMyAdminにログインを行い[同期]タブをクリックすると、
同期元と同期先をせっていする画面が表示されます。
同期設定
サーバー側のデータベース指定(同期元)と、
先ほどDNS指定したローカル側のデータベース指定(同期先)をそれぞれ設定します。
設定を行ったら[実行する]をクリックします。
同期内容の確認
同期元と同期先それぞれの差分状態が表示されますので、
表示内容が自分が行った設定と相違がないことを確認し、
[データベースの同期]をクリックし処理を開始します。
[rakuten]book:16373495[/rakuten]
同期結果の確認
データの確認
MySQLワークベンチを開き、対象のデータベースに対して、
正しくデータが反映されているかを確認します。
ローカル側のphpMyAdminで確認しても同様です。
同期自体に関しては以上で完了です。
しかしながら、wordpressは様々な部分で絶対パスのURLを保持しており、
このままの状態でwordpressで表示を行っても、
元のURLであるレンタルサーバ側の表示となってしまいます。
[rakuten]001:9784798111131[/rakuten]
設定テーブルのURL書き換え
サイト情報を管理しているテーブルのドメインをローカルに変更します。
内部データすべてのURLのドメインを変更しても構わないのですが、
取り急ぎローカル環境のテスト検証を目的として、
環境構築をしていますのでデータベースの内容の最小限の変更を行います。
wp_optionsテーブルデータの変更
option_name=’site_url’ データのURLをローカルドメインへ変更します。
変更前: http://algorhythnn.jp/blg/wp
変更後: http://(HOST).(DOMAIN)/blg/wp (またはlocalhostなど)
option_name=’home’ データのURLをローカルドメインへ変更します。
変更前: http://algorhythnn.jp/blg/
変更後: http://(HOST).(DOMAIN)/blg/ (またはlocalhostなど)
この時点で表示を確認すると、以下のようになります。
一部、設定が違っている状態ですが、正しく移行されています。
但し、ローカル側の投稿内のURLなどに関しては、
ドメインの変更を行っていないので、同期元のURL指定のままになっています。
サーバー側(同期元)
ローカル側(同期先)
これによって、サーバー側で実際に投稿した内容を、
ローカル側の環境で表示の確認を行ったりする、
テストデータとして活用することができます。
実際に本番環境でCSSなどを触ってしまい、
体裁が崩れた状態を急いで復旧するといったことも、
事前にこうしてテストする環境があれば安心して修正ができると思います。
個人が運営するブログのレベルでこうした環境を持つのは、
少々やりすぎな感じもしますが、実際に仕事でやる場合には、
あって当然の環境なので、こうして構築を行ってみました。
[rakuten]001:9784774137278[/rakuten]
エクスポート・インポートによるデータ移行
同期設定によってデータベースの同期をとることは、
同期元からのプッシュによって1操作で完了する為、簡単に行うことができる反面、
ローカル側のMySQLを外部に公開しなければいけなかったり、
バックアップデータが残らなかったりといった面倒な面もあります。
通常、データの移行を行うには、
こうした同期よりもエクスポート・インポートを利用することの方が多いでしょう。
補足的に実際にエクスポートインポートを行う方法についても投稿しておきます。
エクスポート
同期元サーバからのエクスポート
エクスポート元サーバのphpMyAdminにログインし
[エクスポート]タブをクリックします。
エクスポート方法の選択
エクスポート方法から[簡易]または[詳細]を選択し、
適宜目的に応じたエクスポート方法を設定します。
設定が終わったら[実行]をクリックします。
ファイルの保存
ブラウザからファイルの保存ダイアログが表示されますので、
ファイルを保存します。
インポート
同期先サーバでのインポート
インポート先サーバのphpMyAdminにログインし
[インポート]タブをクリックします。
インポートファイルの指定
先ほどエクスポートしたファイルを指定し、
[実行]をクリックします。
インポート完了の確認
インポート完了のメッセージが表示されればインポート完了です。
この本は結構わかりやすく説明されていて、
一冊あると重宝します。
私の場合、このインポートですが出力方法や取り込み方法などで、
sqlエラーがよく出ましてインポートに失敗することがよくありました。
エラー内容を見れば大体は分かるのですが、
出力時のオプションとの関係が少し分かりづらかった印象です。
今後、いろいろ試してどのようなSQLが出力されるのか、
他の出力形式ではどうかなど調べていきたいと思います。
[amazonjs asin=”4798034711″ locale=”JP” title=”オープンソース ブログ&ウェブサイト構築ソフト WordPressガイドブック Ver.3.X対応”]
関連記事
-
(mod_fastcgi on 2.0.x)windowsでCGIをFastCGIで実行するように設定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpmyadminダウンロードが始まらない時の対処
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
SugarSync™の無料版にログインができない場合にはcomからログイン
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
各FTPクライアントの転送モード選択の違いによる動作
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(lounge mod_fcgid on 2.4.6)windowsでCGIをFastCGIで実行するように設定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(テーブル単位)それでもphpMyAdminでエクスポートがサーバーエラーになってしまう場合の対処法
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminが[mysql拡張がありません。PHP の設定をチェックしてみてください。]という場合
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ファイル共有(SugarSync)の無料アカウント取得方法(まだ取れる!)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ファイル共有(SugarSync)のPC用クライアントのインストール
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
GROUP_CONCATのgroup_concat_max_len()が有効にならない対処法
Google or AdMax Promotion(it) 禁断の機能がau公式 …