はじめに
今回は、Oracle MySQL Cloud Serviceのスナップショット&クローン機能を検証してみたいと思います。
Oracle MySQL Cloud Serviceではバックアップ機能と共にスナップショット機能も提供しています。スナップショット機能では、インスタンスから現状のスナップショットを取得し、取得時と同じ環境(データ)のクローン・インスタンスを作成することができます。
では、見ていきましょう。
※以前弊社のブログでGUIでのインスタンスの作成や、バックアップ&リストア機能も紹介していますので、一緒にご覧になってください。
- Oracle MySQL Cloud Serviceを使ってみました-インスタンス作成編
- Oracle MySQL Cloud Serviceを使ってみました-バックアップ&リストア(前編)
- Oracle MySQL Cloud Serviceを使ってみました-バックアップ&リストア(後編)
- Oracle MySQL Cloud Serviceを使ってみました-嵌ったこと&解決編
検証
下記の順で、簡単に確認してみました。
- スナップショット前の準備
- スナップショットの実施
- クローン前の準備
- クローン実施
- スナップショット/クローン後のインスタンス情報確認
※おまけ
- バックアップ VS スナップショット機能の使い分け
- 削除機能について
- ストレージの確認
1. スナップショット前の準備
スナップショットを取得する「SnapshotTest」というインスタンスを作成しておきました。
詳細情報は下記の通りです。今回はバックアップ、MySQL Enterprise Monitorは利用していないため、「なし」に設定しています。
作成後のストレージの容量は125GBです。
簡単なテーブルを作成しデータを5件登録しておきました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
mysql> CREATE TABLE <code>test_snapshot</code> ( → <code>id</code> int(11) unsigned NOT NULL AUTO_INCREMENT, → <code>text</code> varchar(50) NOT NULL, → <code>reg_date</code> datetime NOT NULL, → PRIMARY KEY (<code>id</code>) → ); Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO <code>test_snapshot</code> (<code>text</code>, <code>reg_date</code>) VALUES → ('snapshot text1', now()), → ('snapshot text2', now()), → ('snapshot text3', now()), → ('snapshot text4', now()), → ('snapshot text5', now()) → ; Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE <code>test_snapshot</code> \G *************************** 1. row *************************** Table: test_snapshot Create Table: CREATE TABLE <code>test_snapshot</code> ( id</code> int(11) unsigned NOT NULL AUTO_INCREMENT, text</code> varchar(50) NOT NULL, reg_date</code> datetime NOT NULL, PRIMARY KEY (<code>id</code>) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 1 row in set (0.00 sec) mysql> SELECT * FROM <code>test_snapshot</code> ORDER BY <code>id</code>; +----+----------------+---------------------+ | id | text | reg_date | +----+----------------+---------------------+ | 1 | snapshot text1 | 2018-10-09 07:24:09 | | 2 | snapshot text2 | 2018-10-09 07:24:09 | | 3 | snapshot text3 | 2018-10-09 07:24:09 | | 4 | snapshot text4 | 2018-10-09 07:24:09 | | 5 | snapshot text5 | 2018-10-09 07:24:09 | +----+----------------+---------------------+ 5 rows in set (0.00 sec) |
2. スナップショットの実施
インスタンスの管理画面 → Snapshotsタブ → Createボタンをクリックし、「Create Snapshot」画面を表示します。
「Snapshot Name」、「Snapshot description」を入力し、「Create」ボタンをクリックします。
「Snapshot Name」には、最初の1文字は英字で始まり、入力可能文字は英数字、ハイフンのみ入力可能です。
※アラート文言にも書いていますが、スナップショットを取得している際にはメンテナンスモードになり、読み取り専用モードになりますのでお気をつけてください。
「Available Snapshots」の方で、取得したスナップショットのリストが確認できます。
ストレージの容量が250GBで、スナップショットの取得前の2倍になっていることが確認できます。
※スナップショット時、フルボリュームのスナップショットを取得しているため、元のボリュームのサイズと同じ容量のストレージが増量されます。
例)スナップショットを2回取得している場合のストレージ容量
・元ボリューム : 125G
・1個目のスナップショット後:125G + 125G = 250G
・2個目のスナップショット後:125G + 125G + 125G = 375G
3. クローン前の準備
クローン時、現状のデータではなく、スナップショット時のデータが取得されることを確認するため、「SnapshotTest」インスタンスのデータを修正します。テーブルにmemo項目を追加し、データを5件追加しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
mysql> ALTER TABLE <code>test_snapshot</code> ADD <code>memo</code> varchar(50) AFTER <code>text</code>; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> INSERT INTO <code>test_snapshot</code> (<code>text</code>, <code>memo</code>, <code>reg_date</code>) VALUES → ('snapshot text6' , 'memo6' , now()), → ('snapshot text7' , 'memo7' , now()), → ('snapshot text8' , 'memo8' , now()), → ('snapshot text9' , 'memo9' , now()), → ('snapshot text10', 'memo10', now()) → ; Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE ><code>test_snapshot></code> \G *************************** 1. row *************************** Table: test_snapshot Create Table: CREATE TABLE <code>test_snapshot</code> ( id</code> int(11) unsigned NOT NULL AUTO_INCREMENT, text</code> varchar(50) NOT NULL, memo</code> varchar(50) DEFAULT NULL, reg_date</code> datetime NOT NULL, PRIMARY KEY (<code>id</code>) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 1 row in set (0.00 sec) mysql> SELECT * FROM <code>test_snapshot</code> ORDER BY <code>id</code>; +----+-----------------+--------+---------------------+ | id | text | memo | reg_date | +----+-----------------+--------+---------------------+ | 1 | snapshot text1 | NULL | 2018-10-09 07:24:09 | | 2 | snapshot text2 | NULL | 2018-10-09 07:24:09 | | 3 | snapshot text3 | NULL | 2018-10-09 07:24:09 | | 4 | snapshot text4 | NULL | 2018-10-09 07:24:09 | | 5 | snapshot text5 | NULL | 2018-10-09 07:24:09 | | 6 | snapshot text6 | memo6 | 2018-10-09 08:22:45 | | 7 | snapshot text7 | memo7 | 2018-10-09 08:22:45 | | 8 | snapshot text8 | memo8 | 2018-10-09 08:22:45 | | 9 | snapshot text9 | memo9 | 2018-10-09 08:22:45 | | 10 | snapshot text10 | memo10 | 2018-10-09 08:22:45 | +----+-----------------+--------+---------------------+ 10 rows in set (0.00 sec) |
4. クローン実施
先ほど作成したスナップショットのアクションボタンをクリックし、表示されたメニューから「Create Clone」をクリックします。
◆Instance画面 – 初期表示時
「Create Instance」画面が表示されました。
通常のインスタンス作成画面とは違って、右上にクローンの元になるスナップショットの情報が表示されています。
以降は、新規インスタンス作成時と同様、インスタンスの情報を設定し、クローン・インスタンスを作成していきます。
※「Region」編集不可項目です。(「SnapshotTest」インスタンス作成時は、「aucom-east-1」を選択)
項目名 | 編集可否 | 初期値 |
---|---|---|
Instance Name | 可 | 空 |
Description | 可 | 空 |
Notification Email | 可 | ログインユーザーのEmail |
Region | 不可 | 「No Preference」 |
Tags | 可 | 空 |
◆Instance画面 – 入力後
インスタンスの基本情報を入力し、「次>」ボタンをクリックします。
◆詳細画面 – 初期表示時
詳細画面の初期表示時です。通常のインスタンス詳細画面に比べ、すでに入力されている項目や、変更不可項目、非表示項目があります。
※「①Reserved IPs」項目、「②バックアップからのデータの初期化」エリアは非表示で、「③使用可能なデータベース・ストレージ(GB)」、「④データベース・スキーマ名」、「⑤サーバー文字セット」、「⑥タイムゾーン」、「⑦MySQL Enterprise Monitorの構成」は編集不可項目です。
※下記の「引継ぎ値」は、インスタンス(スナップショット元)の作成時に入力していた値です。
- 構成
項目名 編集可否 初期値 コンピュート・シェイプ 可 引継ぎ値 SSH公開鍵 可 空 高パフォーマンス・ストレージの使用 可 空(未チェック) Reserved Ips 非表示 – - MySQL構成
項目名 編集可否 初期値 使用可能なデータベース・ストレージ(GB) 不可 引継ぎ値 管理ユーザー名 可 引継ぎ値 パスワード 可 空 Confirm パスワード 可 空 データベース・スキーマ名 不可 引継ぎ値 サーバー文字セット 不可 引継ぎ値 タイムゾーン 不可 引継ぎ値 MySQLポート 可 引継ぎ値 MySQL Enterprise Monitorの構成 不可 引継ぎ値 ※下記の項目は、「MySQL Enterprise Monitorの構成」の引継ぎ値が「はい」の場合のみ表示されます。
項目名 編集可否 初期値 マネージャ・ユーザー 可 引継ぎ値 マネージャ・パスワード 可 空 Confirm マネージャ・パスワード 可 空 エージェント・ユーザー 可 引継ぎ値 エージェント・パスワード 可 空 Confirm エージェント・パスワード 可 空 - バックアップおよびリカバリ構成
項目名 編集可否 初期値 バックアップの保存先 可 「クラウド・ストレージとディスク・ストレージ両方」 クラウド・ストレージ・コンテナ 可 「【storage service rest endpoint url】/MySQLCS」 ユーザー名 可 引継ぎ値 パスワード 可 空 クラウド・ストレージ・コンテナの作成 可 チェック済み - MySQL Enterprise Monitorの構成:非表示
◆詳細画面 – 入力後
インスタンスの詳細情報を入力し、「次>」ボタンをクリックします。
◆確認画面
内容を確認し、「作成」ボタンをクリックします。
しばらく時間が経ち、クローン・インスタンスが作成できました。
クローン・インスタンスは区別しやすくするため、イメージに「C」がついています。
DBに接続してデータを確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
******************************************************************************** * Welcome to * * MySQL Cloud Service * * by * * Oracle * * If you are an unauthorised user please disconnect IMMEDIATELY * ******************************************************************************** ******************************* MySQL Information ****************************** * Status: RUNNING * * Version: 5.7.22 * ******************************************************************************** ************************** Storage Volume Information ************************** * Volume Used Use% Available Size Mounted on * * MySQLlog 6.1G ---- 11% 50G 59G /u01/translog * * bin 2.6G ------- 28% 6.7G 9.8G /u01/bin * * data 135M -- 1% 24G 25G /u01/data * ******************************************************************************** [opc@clonetest-mysql-1 ~]$ sudo su - oracle [oracle@clonetest-mysql-1 ~]$ mysql -u root -p mydatabase Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 5.7.22-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW CREATE TABLE <code>test_snapshot</code> \G *************************** 1. row *************************** Table: test_snapshot Create Table: CREATE TABLE <code>test_snapshot</code> ( id</code> int(11) unsigned NOT NULL AUTO_INCREMENT, text</code> varchar(50) NOT NULL, reg_date</code> datetime NOT NULL, PRIMARY KEY (<code>id</code>) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 1 row in set (0.00 sec) mysql> SELECT * FROM <code>test_snapshot</code> ORDER BY <code>id</code>; +----+----------------+---------------------+ | id | text | reg_date | +----+----------------+---------------------+ | 1 | snapshot text1 | 2018-10-09 07:24:09 | | 2 | snapshot text2 | 2018-10-09 07:24:09 | | 3 | snapshot text3 | 2018-10-09 07:24:09 | | 4 | snapshot text4 | 2018-10-09 07:24:09 | | 5 | snapshot text5 | 2018-10-09 07:24:09 | +----+----------------+---------------------+ 5 rows in set (0.00 sec) mysql> |
予想通り、スナップショット取得時のデータが登録されていました。
5. スナップショット/クローン後のインスタンス情報確認
◆スナップショット – Instance Overview
画面の下端部に「Associations」が追加され、「CloneTest」の情報が表示されるようになりました。
◆スナップショット – Snapshots
クローン元のスナップショットの下端部に「Cloned Instances」が追加され、同じく「CloneTest」の情報が確認できます。
◆クローン・インスタンス – Instance Overview
画面の下端部に「Associations」が追加され、「SnapshotTest」の情報が表示されるようになりました。
◆クローン・インスタンス – Snapshots
クローン・インスタンスには「Snapshots」タブが非表示になっており、スナップショット機能が使えなくなりました。
まとめ
簡単に複数のクローン・インスタンスが作成できるので、開発での分岐リリースなどでテーブルのデータや定義を変える必要がある場合や、テスト/本番で環境を分ける必要がある場合などで利用すると便利そうです。
ただし、取得したスナップショットからのリストアや、クローンではない独立した別のインスタンスを作成することはできないため、バックアップ機能とスナップショット機能を適切に使い分けて使用する必要があります。
検証は以上です。下記は「おまけ」は参考程度で、ご覧になってください。
◆マニュアル
- Oracle MySQL Cloud Serviceの使用 – スナップショットからクローン・インスタンスを作成
- Oracle MySQL Cloud Serviceの使用 – スナップショットの作成と管理
おまけ
◆バックアップ VS スナップショット機能の使い分け
- バックアップを目的にし、Point-in-Time リストア機能を使いたい場合
リストアはスナップショットの機能では利用できません。バックアップ&リストアの機能を利用します。
インスタンスの作成時「バックアップおよびリカバリ構成」エリアの「バックアップ保存先」に対し「なし」以外を選択 → スケジュールバックアップを有効にすると「管理」画面の「Backup」タブでバックアップ&リストア機能が利用できます。
Oracle MySQL Cloud Serviceを使ってみました-バックアップ&リストア(前編)
Oracle MySQL Cloud Serviceを使ってみました-バックアップ&リストア(後編)
- 現状のデータベース(データ)をベースに新規インスタンスを作成したい場合
新規インスタンス作成時のデータ初期化機能を利用します。
現状インスタンスのバックアップを取得し、新規インスタンスの生成時「Create Instance – 詳細」画面から、「バックアップからのデータの初期化」に取得したバックアップを設定してインスタンスを生成することで作成できます。 -
現状のインスタンスのクローンを作成したい場合
本日検証していたスナップショット&クローン機能を利用することで、作成できます。
◆削除機能について
1.スナップショットの削除
- 紐付いているクローン・インスタンスが存在する場合
削除機能がDisabledになり、削除できません。
スナップショットを削除するには、先に紐付いているクローン・インスタンスを削除する必要があります。
- 紐付いているクローン・インスタンスが存在しない場合
削除機能が使用できます。
2.インスタンスの削除
- スナップショットに紐付いているクローン・インスタンスが存在する場合
インスタンスは削除できません。
「SnapshotTest」インスタンスのアクションメニュー → 削除
同アイデンティティ・ドメインの中に「CloneTest」サービスが依存しているため、「SnapshotTest」インスタンスが削除できませんと警告が表示され、削除できません。
◆ストレージの確認
Compute Classic → ストレージタブ → ストレージ・スナップショットを選択すると、スナップショットのストレージ情報が確認できます。
Compute Classic → ストレージ タブ → ストレージ・ボリューム を選択すると、スナップショット・クローンの紐付き情報及び、ストレージ情報が確認できます。