LoginSignup
7
5

More than 1 year has passed since last update.

Aurora の Blue/Green デプロイで少し遊んでみた

Last updated at Posted at 2022-11-28

こちら↓について、Aurora で軽く遊んでみたらいくつか途中でハマったのでメモを残しておきます。


2022/11/30 追記:
GA になっているのに「ベータ版」と書くのも厭味ったらしいので(?)タイトルから削りました。
(正直、本当に「ベータ版」だと思っていました… 続編とあわせて読み進めると勘違いした意味が分かるのでは、と…


1. Aurora MySQL v1 のクラスタを用意

「あれ? 2022/09/27 で新規クラスタは作れなくなったんじゃ…?」と思うかもしれませんが、これを書いている 2022/11/29 時点ではまだ作れます。

image.png

なお、データは Sakila Sample Database を入れてみました。

(注) Aurora MySQL v1 にそのまま入れてしまうと、一部テーブルでストレージエンジンとして MyISAM を指定している部分でエラーになるので、SQL ファイルを一部修正します。

データ投入(途中で失敗)
$ mysql -u admin -h my56.cluster-XXXX.ap-northeast-1.rds.amazonaws.com -p < <( \
>     wget 'http://downloads.mysql.com/docs/sakila-db.zip' \
>     && unzip -o sakila-db.zip 1>/dev/null \
>     && cat sakila-db/sakila-schema.sql sakila-db/sakila-data.sql \
>   )
--2022-11-28 12:04:02--  http://downloads.mysql.com/docs/sakila-db.zip
Resolving downloads.mysql.com (downloads.mysql.com)... Enter password: 23.206.10.112, 2600:140b:1a00:3ad::2e31, 2600:140b:1a00:39c::2e31
Connecting to downloads.mysql.com (downloads.mysql.com)|23.206.10.112|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://downloads.mysql.com/docs/sakila-db.zip [following]
--2022-11-28 12:04:02--  https://downloads.mysql.com/docs/sakila-db.zip
Connecting to downloads.mysql.com (downloads.mysql.com)|23.206.10.112|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 729523 (712K) [application/octet-stream]
Saving to: ‘sakila-db.zip’

100%[========================================================================================================================================>] 729,523     2.72MB/s   in 0.3s   

2022-11-28 12:04:02 (2.72 MB/s) - ‘sakila-db.zip’ saved [729523/729523]
(DB パスワード入力)

ERROR 1238 (HY000) at line 196: Variable 'default_storage_engine' is a read only variable
viで修正
$ vi sakila-db/sakila-schema.sql
修正部分
--
-- Table structure for table `film_text`
-- 
-- InnoDB added FULLTEXT support in 5.6.10. If you use an
-- earlier version, then consider upgrading (recommended) or 
-- changing InnoDB to MyISAM as the film_text engine
--

-- Use InnoDB for film_text as of 5.6.10, MyISAM prior to 5.6.10.
-- SET @old_default_storage_engine = @@default_storage_engine;
-- SET @@default_storage_engine = 'MyISAM';
/*!50610 SET @@default_storage_engine = 'InnoDB'*/;

CREATE TABLE film_text (
  film_id SMALLINT NOT NULL,
  title VARCHAR(255) NOT NULL,
  description TEXT,
  PRIMARY KEY  (film_id),
  FULLTEXT KEY idx_title_description (title,description)
) DEFAULT CHARSET=utf8mb4;

-- SET @@default_storage_engine = @old_default_storage_engine;

--
-- Triggers for loading film_text from film
--
  • SET @old_default_storage_engine = @@default_storage_engine;
  • SET @@default_storage_engine = 'MyISAM';
  • SET @@default_storage_engine = @old_default_storage_engine;

をコメントアウトしました。

やり直してみます。

データ投入再試行
$ mysql -u admin -h my56.cluster-XXXX.ap-northeast-1.rds.amazonaws.com -p < <( \
>     cat sakila-db/sakila-schema.sql sakila-db/sakila-data.sql \
> )
Enter password:
(DB パスワード入力)

今度は行けました。

DB・テーブル確認
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
+--------------------+
4 rows in set (0.00 sec)

mysql> use sakila;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------------+
| Tables_in_sakila           |
+----------------------------+
| actor                      |
| actor_info                 |
| address                    |
| category                   |
| city                       |
| country                    |
| customer                   |
| customer_list              |
| film                       |
| film_actor                 |
| film_category              |
| film_list                  |
| film_text                  |
| inventory                  |
| language                   |
| nicer_but_slower_film_list |
| payment                    |
| rental                     |
| sales_by_film_category     |
| sales_by_store             |
| staff                      |
| staff_list                 |
| store                      |
+----------------------------+
23 rows in set (0.00 sec)

2. クラスタでブルー/グリーンデプロイを作成

早速ブルー/グリーンデプロイを作成してみます。

まだベータですね(嘘なんですけどまんまと騙されました)。

image.png

ちなみに、当初ここで↓の画面が出て先に進めず時間を溶かしました。

image.png

ブラウザを開き直したところ、先に進めました。

image.png

Aurora MySQL v1 から直接作成できる Green(ステージング)環境は、今のところ同じ v1 だけ のようです。残念。


2022/12/01 追記:
今日見たら直接 v2 の Green 環境が作成できるようになっていました。

image.png


そしてここで先に進もうとしていくつか問題が。

クラスタのパラメータグループで binlog を有効にする必要がある

Blue → Green のレプリケーションに binlog を使うから、でしょう。

というわけで、(とりあえずMIXEDで)binlog を有効にしたパラメータグループに変更して 再チャレンジしてみたのですが…。

image.png

↑のメッセージで怒られました。

クラスタと DB のパラメータグループで設定を揃える必要がある

クラスタと DB のパラメータグループの両方にある項目について、どこまで設定を揃えれば良いのかは分かりませんが、差異を見つけて修正して(設定を揃えて)、今度こそ…!

image.png

行けたようです!

image.png

Green環境データ確認
$ mysql -u admin -h my56-green-nlq1ml.cluster-XXXX.ap-northeast-1.rds.amazonaws.com -p
Enter password: 
(中略)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
+--------------------+
4 rows in set (0.00 sec)

mysql> use sakila;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------------+
| Tables_in_sakila           |
+----------------------------+
| actor                      |
| actor_info                 |
| address                    |
| category                   |
| city                       |
| country                    |
| customer                   |
| customer_list              |
| film                       |
| film_actor                 |
| film_category              |
| film_list                  |
| film_text                  |
| inventory                  |
| language                   |
| nicer_but_slower_film_list |
| payment                    |
| rental                     |
| sales_by_film_category     |
| sales_by_store             |
| staff                      |
| staff_list                 |
| store                      |
+----------------------------+
23 rows in set (0.01 sec)

3. Green(ステージング)環境をバージョンアップしてみる

Green 側のクラスタに対してバージョンの変更をかけてみます。

image.png

当然ですが v3 に直接バージョンアップすることはできません。

image.png

バージョンアップできました。

image.png

なお、時間の都合で「バージョンアップ中に Blue(本番)環境でデータを更新するとどうなるか」「実際のクラスタ切り替えでどういう挙動になるのか」等、細かいことは試していません。

(アドベントカレンダーの記事で書く…かもしれません) 続きの記事を書きました。

4. その他

一通り遊んで、「さて、クラスタを止めるか」と思い…

image.png

なんと!

Green(ステージング)環境が存在する状態では一時停止できないようです。

(「with read replicas」が誤解を生みそう)

仕方なく、Green(ステージング)環境を削除して、一時停止しました。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5