Oracle MySQL Cloud Serviceのダッシュボードにパッチがアナウンスされていたのでパッチの適用を行いました。基本的な適用フローは以下の手順となります。
プリチェック → バックアップ(時間はDBサイズによる)→ パッチ適用 → パッチ適用完了
※バックアップはmysqldump(論理バックアップ)では無く、mysqlbackup(物理バックアップ)なので処理は高速です。
MySQL Cloud Serviceに関しては、こちらにてドキュメントとトライアルを確認する事が出来ます。
https://cloud.oracle.com/ja_JP/mysql
※ 2016年12月現在ではU.SとEMEAでのみ、MySQL Cloud Serviceを提供しているので検証環境、海外サービス展開、Enterprise版の機能検証に利用するのが宜しいかと思います。
■ パッチ適用前
mysql> select @@hostname,@@version,now(); +-----------------+-------------------------------------------+---------------------+ | @@hostname | @@version | now() | +-----------------+-------------------------------------------+---------------------+ | study01-mysql-1 | 5.7.15-enterprise-commercial-advanced-log | 2016-12-13 08:16:06 | +-----------------+-------------------------------------------+---------------------+ 1 row in set (0.00 sec) mysql>
補足:バックアップの完了した時点でのダッシュボードでの履歴確認
■ パッチ適用中のバックグラウド処理
1) MySQL5.7.16のバイナリーを取得
[oracle@study01-mysql-1 ~]$ ps -ef | grep mysql oracle 15317 1 0 08:16 ? 00:00:00 /bin/sh ./bin/mysqld_safe oracle 16372 15317 1 08:16 ? 00:00:01 /u01/bin/mysql/bin/mysqld --basedir=/u01/bin/mysql --datadir=/u01/data/mysql --plugin-dir=/u01/bin/mysql/lib/plugin --log-error=/u01/data/mysql/study01-mysql-1.err --open-files-limit=20000 --pid-file=/u01/data/mysql/study01-mysql-1.pid oracle 17135 17122 0 08:19 ? 00:00:00 /bin/sh -c source /u01/app/oracle/tools/mscs/mysql/vm-scripts/msaas-provisioning-utils.sh && fetchArtifact /tmp/patch20161213-081909/msaas-installer-patch.zip https://em2.storage.oraclecloud.com/v1/backups-jimops/jcs MSCS/5.7.16/MySQL_Binaries-5.7.16.zip oracle 17183 15032 0 08:19 pts/0 00:00:00 grep mysql
2) 展開
[oracle@study01-mysql-1 ~]$ ps -ef | grep mysql oracle 17242 17122 0 08:19 ? 00:00:00 /bin/sh -c source /u01/app/oracle/tools/mscs/mysql/vm-scripts/msaas-provisioning-utils.sh && source /u01/app/oracle/tools/mscs/mysql/vm-scripts/mysql-installation-utils.sh && extractMysql /tmp/patch-msaas-installers20161213-081909/mysql/*.tar.gz 5.7.16 /u01/bin oracle oracle 17244 17243 11 08:19 ? 00:00:01 tar zxvf /tmp/patch-msaas-installers20161213-081909/mysql/mysql-installer-5.7.16.tar.gz --directory=/u01/bin oracle 17289 15032 0 08:19 pts/0 00:00:00 grep mysql [oracle@study01-mysql-1 ~]$
3) MySQLへのネットワークアクセスをOFFにして起動して、パッチを適用 (ホストにはアクセス可能)
[oracle@study01-mysql-1 ~]$ ps -ef | grep mysql oracle 17346 1 0 08:20 ? 00:00:00 /bin/sh ./bin/mysqld_safe --skip-networking oracle 18416 17346 45 08:20 ? 00:00:02 /u01/bin/mysql/bin/mysqld --basedir=/u01/bin/mysql --datadir=/u01/data/mysql --plugin-dir=/u01/bin/mysql/lib/plugin --skip-networking --log-error=/u01/data/mysql/study01-mysql-1.err --open-files-limit=20000 --pid-file=/u01/data/mysql/study01-mysql-1.pid oracle 18533 17122 0 08:20 ? 00:00:00 /bin/sh -c source /u01/app/oracle/tools/mscs/mysql/vm-scripts/mysql-installation-utils.sh && shutdownMysql oracle 1 oracle 18539 18533 0 08:20 ? 00:00:00 mysqladmin shutdown -uoracle oracle 18582 15032 0 08:20 pts/0 00:00:00 grep mysql [oracle@study01-mysql-1 ~]$
4) パッチ適用が完了してMySQLを再起動して完了
[oracle@study01-mysql-1 ~]$ ps -ef | grep mysql oracle 18591 1 0 08:20 ? 00:00:00 /bin/sh ./bin/mysqld_safe oracle 19646 18591 3 08:20 ? 00:00:00 /u01/bin/mysql/bin/mysqld --basedir=/u01/bin/mysql --datadir=/u01/data/mysql --plugin-dir=/u01/bin/mysql/lib/plugin --log-error=/u01/data/mysql/study01-mysql-1.err --open-files-limit=20000 --pid-file=/u01/data/mysql/study01-mysql-1.pid oracle 19883 15032 0 08:21 pts/0 00:00:00 grep mysql [oracle@study01-mysql-1 ~]$
■ パッチ適用後
mysql> select @@hostname,@@version,now(); +-----------------+-------------------------------------------+---------------------+ | @@hostname | @@version | now() | +-----------------+-------------------------------------------+---------------------+ | study01-mysql-1 | 5.7.16-enterprise-commercial-advanced-log | 2016-12-13 08:23:18 | +-----------------+-------------------------------------------+---------------------+ 1 row in set (0.00 sec) mysql>
確認:スレーブ→マスターの順番でアップグレードし、MySQL Cloud Serviceで稼働しているレプリケーションも問題無いことを確認済み
REST APIを利用してパッチ適用する場合は、以下のURLを参照下さい。
【書式】
1) Pre-Check
/paas/api/v1.1/instancemgmt/{identityDomainId}/services/MySQLCS/instances/{serviceName}/patches/checks/{patchId}
2) Apply Patch
/paas/api/v1.1/instancemgmt/{identityDomainId}/services/MySQLCS/instances/{serviceName}/patches/{patchId}