DB分割版で添付ファイル保存ディレクトリをmysql-5.0以下に配置していると、3.5.0へのバージョンアップに失敗する。
- 種別
- サーバー環境の制限事項
- 機能
-
- インストーラー
- 再現バージョン
-
- 3.5.0
- 改修バージョン
- 公開日
- 2014-03-26
- 更新日
- 2014-07-31
詳細
次の条件をすべて満たす場合に発生します。
- バージョン 3.1.3以前のガルーンをDB分割構成で構築し、3.5.0へバージョンアップする。
- 添付ファイル保存ディレクトリーをmysql-5.0以下に配置している。
- NFSクライアントで、NFS サーバーの添付ファイル保存ディレクトリーをマウントした領域に、root権限がない。
【準備】
- 次の構成でDB分割版を構築した場合の再現例を記載します。
構成:
--------------------------
サーバーA (NFSクライアント):アプリケーションサーバー
サーバーB (NFSクライアント):マスターデータベースサーバー
サーバーC (NFSサーバー) :スレーブデータベースサーバー
補足:
- すべてのアプリケーションの添付ファイルを一括してサーバーCに保存するものとします。
- 添付ファイル保存ディレクトリーの配置mysql-5.0以下指定し、バージョン 3.1.3以前のDB分割版ガルーンを構築します。
補足:
- 添付ファイルを保存するディレクトリーは、setting.iniファイルの[common]セクションにあるfiles_dirで設定します。
例:
--------------------------
[common]
(省略)
files_dir = /usr/local/cybozu/mysql-5.0/files
(省略)
-------------------------- - すべてのアプリケーションの添付ファイルを一括してサーバーCに保存する設定にします。
- サーバーCのexportsファイル例:
--------------------------
/usr/local/cybozu/mysql-5.0/files [サーバーAのIP](rw) [サーバーBのIP](rw)
-------------------------- - サーバーA、サーバーBで実行するNFSマウントコマンド例:
--------------------------
mount -o intr [サーバーCのIP]:/usr/local/cybozu/mysql-5.0/files /usr/local/cybozu/mysql-5.0/files
--------------------------
- サーバーCのexportsファイル例:
【再現手順】
- バージョン 3.5.0へのバージョンアップ手順のうち、CGIアプリケーションのバージョンアップまで完了させます。
- スレーブデータベースサーバーをバージョンアップさせます。
--------------------------
64ビットOS: ./versionup.sh mysql_slave_64 setting.ini
32ビットOS: ./versionup.sh mysql_slave setting.ini
--------------------------
補足:
- バージョンアップが正常に完了します。
- バージョンアップが正常に完了します。
-
マスターデータベースサーバーをバージョンアップさせます。
--------------------------
64ビットOS: ./versionup.sh mysql_master_64 setting.ini
32ビットOS: ./versionup.sh mysql_master setting.ini
--------------------------
→現象発生:
次のエラーが発生し、バージョンアップに失敗します。
例:
--------------------------
chown: cannot read directory `/usr/local/cybozu/mysql-5.0/files': 許可がありません
[Wed, 22 Jan 2014 18:48:17 +0900] ! Execute failed 'chown -R apache:apache /usr/local/cybozu/mysql-5.0'. returned 1.
[Wed, 22 Jan 2014 18:48:17 +0900] failed to chown
[Wed, 22 Jan 2014 18:48:17 +0900] failed to deploy new MySQL
[Wed, 22 Jan 2014 18:48:17 +0900] !! Mysql-Master versionup failed.
--------------------------
- DB分割版の構築やバージョンアップについての詳細は、各マニュアルを参照してください。
- スレーブデータベースサーバーがNFSクライアントになっている場合は、手順2の実行時にエラーが発生し、バージョンアップに失敗します。
回避/対応方法
- 次の順に各サービスを停止します。
- Webサーバー
- Memcache
- スケジューリングサービス
- データーベースエンジン
-
マウントしている添付ファイル保存ディレクトリーをすべてアンマウントします。
例:
--------------------------
umount -f /usr/local/cybozu/mysql-5.0/files
-------------------------- - すべてのサーバーで、common.iniファイルを編集します。
例:
--------------------------
[Files]
files_dir = "/usr/local/cybozu/files"
--------------------------
補足:
- common.iniはデフォルトでは次のディレクトリに存在します。
--------------------------
/usr/local/cybozu/[インストール識別子]/common.ini
--------------------------
- common.iniはデフォルトでは次のディレクトリに存在します。
- すべてのサーバーで、添付ファイル保存ディレクトリーを移動します。
例:
--------------------------
mv /usr/local/cybozu/mysql-5.0/files /usr/local/cybozu/
--------------------------
補足:
- すべてのサーバーで、添付ファイル保存ディレクトリーを手順3で指定したディレクトリーへ移動します。
- すべてのサーバーで、添付ファイル保存ディレクトリーを手順3で指定したディレクトリーへ移動します。
- exportsファイルを変更します。
サーバーCのexportsファイル例:
--------------------------
/usr/local/cybozu/files [サーバーAのIP](rw) [サーバーBのIP](rw)
--------------------------
補足:
- exportsファイルに手順3で指定したディレクトリーを記述します。
- exportsファイルに手順3で指定したディレクトリーを記述します。
- 各サーバーで、NFSマウントに必要なサービスを再起動します。
- 移動した添付ファイル保存ディレクトリーをマウントします。
サーバーA、サーバーBで実行するNFSマウントコマンド例:
--------------------------
mount -o intr [サーバーCのIP]:/usr/local/cybozu/files /usr/local/cybozu/files
-------------------------- - 次の順に各サービスを起動します。
- データーベースエンジン
- スケジューリングサービス
- Memcache
- Webサーバー
-
ファイルのダウンロードがすべてのアプリケーションで行えるか、動作確認をします。
-
setting.iniファイルの[common]セクションにあるfiles_dirを変更します。
例:
--------------------------
[common]
files_dir = /usr/local/cybozu/files
--------------------------
補足:- 添付ファイル保存領域を /usr/local/cybozu 配下に指定します。
- 添付ファイル保存領域を /usr/local/cybozu 配下に指定します。
- バージョン 3.5.0へバージョンアップします。
【対応方法】
すでに現象が発生している場合はバージョンアップ前の環境を再構築し、「回避方法」の手順を行います。
------------------------------------------------------------
【更新履歴】
2014/07/31 「再現バージョン」を修正しました。
2014/04/04 「回避方法」を一部修正しました。