先日 Azure Marketplace に新しい WordPress が公開されました
今回は本ブログを新しい環境に移行してみたので、それについてまとめます
Public preview: WordPress enhancements for App Service | Azure の更新情報 | Microsoft Azure
結論から言うと途中で wordpress の設定に挫折し、妥協しました。。。
概要
新しい環境だと以下の点が改善されているようです(機械翻訳)
- このリリースでは、キャッシュやイメージ圧縮などの領域を最適化することで、読み取り応答時間が 10 倍、書き込み応答時間が 2 倍に短縮され、リソース使用率が 80% 削減されます。
- 4つのホスティングプランにより、要件を最もよく反映するオプションを柔軟に選択できます。
- 設定に必要なのはユーザー名とパスワードを作成するだけで、他のすべてはあなたのために世話をされます。
ホスティング プランの詳細は以下です
Hosting Plan | WebApp | Database (MySQL Flexible server) |
---|---|---|
Basic (Hobby or Research purposes) | B1 (1 vCores, 1.75 GB RAM, 10 GB Storage) | Burstable, B1s (1 vCores, 1 GB RAM, 32 GB Storage, 400 IOPs) |
Development (Development and Staging purposes) | S1 (1 vCores, 1.75 GB RAM, 50 GB Storage) | Burstable, B1ms (1 vCores, 2 GB RAM, 64 GB Storage, 500 IOPs) |
Standard (General Purpose production apps) | P1V2 (1 vCores, 3.5 GB RAM, 250 GB Storage) | Burstable, B2s (2 vCores, 4 GB RAM, 128 GB Storage, 400 IOPs) |
Premium (Heavy Workload production apps) | P1V3 (2 vCores, 8 GB RAM, 250 GB Storage) | Gen Purpose, D2ds_v4 (2 vCores, 8 GB RAM, 128 GB Storage, 700 IOPs) |
Flexible server が使われていますね!
以前にサイトのパフォーマンス改善で試行錯誤し、必要なメモリを確認しました
App Service のパフォーマンスを改善させる! | クラウドを勉強し隊
ただ、新しい環境だとリソース使用率が削減されるということなので、Basic プランを選択してみました
デプロイ
Azure Marketplace にアクセスをしてデプロイのためのパラメータを入力していきます
以下がスクリーンショットになります
忘れずに DB のパスワードをメモしておきます(あとからパスワードリセットをすることもできます)
Web App の課金額が非常に安いですね。。。!
デプロイ後アクセスしてみましたがタイムアウトしてしまいました。。
少し時間を空けて再度挑戦すると無事にアクセスできました!
サイトの移行
それでは既存のサイトを新環境に移行してみます(ここからが挫折ポイント)
MySQL のデータ移行
こちらの手順に従って実施しますまずは前提条件を確認
- バージョン 5.7 または 8.0 を実行している Azure Database for MySQL 単一サーバーのインスタンス
- Azure Database for MySQL フレキシブル サーバーのインスタンス。 詳細については、Azure Database for MySQL フレキシブル サーバーでのインスタンスの作成に関する記事を参照してください。
- MySQL Workbench を使用して接続し、データベースを作成する。 詳細については クイック スタート:接続する - MySQL Workbench - Azure Database for MySQL - フレキシブル サーバー | Microsoft Learn を参照してください。
- Linux を実行し、自分のソースおよびターゲット データベースをホストする Azure VM を、同じリージョン (またはプライベート アクセスを使用する同じ VNet 上) に配置するようにする。
- mysql クライアントまたは MySQL Workbench (クライアント ツール) を自分の Azure VM にインストールする。 プライマリとレプリカの両方のサーバーに接続できるようにしてください。 この記事では、mysql クライアントがインストールされています。
- mydumper または myloader を自分の Azure VM にインストールする。 詳細については、 mydumper または myloader を使用して大規模なデータベースを Azure Database for MySQL に移行する | Microsoft Learn を参照してください。
1つ目と2つ目はそのままで問題ありませんでした
3つ目の内容に取り掛かりますが、ここで注意です。
デプロイ直後の Flexible server のネットワーク設定がガバガバになっていました。先に必要最低限の許可だけに変更しておきます
改めて取り掛かります。Flexible Server への接続してみたところ、wordpress 用の DB はすでに作成されていました
なので3つ目の項目もクリアです
続いて4つ目です
作業用の Linux VM を作成します。今回は Ubuntu 20.04 を作成しました
5つ目ではその Linux VM に MySQL クライアント をインストールします
apt-get -y install mysql-client
インストールしたら接続できることを確認します
mysql -u [MySQLユーザ名] --password="[MySQLユーザのパスワード]" -h [MySQLサーバ名]
無事に接続ができることが確認できたので 6つ目に移ります。MySQL の接続を終了して、以下のコマンドを実行してツールをインストールします
wget https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
これでようやく前提条件を満たせたので、次の手順に進みます
移行元の Database に mysql クライアントでアクセスし log_bin がソースで有効かどうかを確認します
SHOW VARIABLES LIKE 'log_bin';

続いて移行元サーバーにユーザーを作成します (SSL を有効にしているかどうかでコマンドが変わります。詳しくは公開資料を参照して下さい)
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
続いてデータベースをバックアップします
mydumper --host=<primary_server>.mysql.database.azure.com --user=<username>@<primary_server> --password=<Password> --outputdir=./backup --rows=100 -G -E -R -z --trx-consistency-only --compress --build-empty-files --threads=16 --compress-protocol --ssl --regex '^(<Db_name>\.)' -L mydumper-logs.txt
次に取ったバックアップを移行先で復元します
myloader --host=<servername>.mysql.database.azure.com --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=100 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt
WordPress の設定
復元した Database を参照するように Web Apps の環境変数を変更します
Web Apps の構成メニューから「高度な編集」を選択し、DATABASE_NAME の value を編集します
これで移行してきた DB を参照するようになりました!が!!!
管理者アカウントでログインができなくなりました。。。。移行前の管理者アカウントで試してもだめでした。。
色々試行錯誤しましたがうまくいかず、結局今回は WordPress の移行機能でサイトのお引越しをすることにしました
手順は以前にやったものと ほぼ同じです
App Service のパフォーマンスを改善させる! | クラウドを勉強し隊
まとめ
新しい WordPress 環境に移行してみました。想定していたやり方ではありませんでしたが、MySQL DB の移行の経験ができたのでこれはこれでありです(ということにしたい)