はじめに
以前、弊社のブログで紹介していたインスタンス作成に続き、バックアップ&リストア機能について動作確認を行ってみます。
Oracle MySQL Cloud Serviceはコンソール上で、バックアップとリカバリ機能が使えます。
バックアップは、内部的に、MySQL Enterprise Backupを使用しており、ブロッキングを発生させない高パフォーマンスのホット・オンライン・バックアップが実行できます。
では、実際に触ってみましょう。
現時点(2018/6/25)で、MySQL Enterprise Backupは下記のバージョンを使っています。
※バックアップログで下記のversionを確認
1 |
MySQL Enterprise Backup version 4.1.0-bug26659540 Linux-4.1.12-37.4.1.el6uek.x86_64-x86_64 |
検証インスタンス情報
コンソール上でバックアップ機能を使うためには、インスタンス作成時、「バックアップ保存先」に対し「なし」以外を選択する必要があります。
今回は、「クラウド・ストレージとディスク・ストレージ両方」を選択して、検証を行います。
後、バックアップ情報を確認するため、MySQL Enterprise Monitorの構成も行っています。
以下、インスタンス作成時の詳細情報です。
バックアップ画面の表示
Oracle MySQL Cloud Serviceのリストから「インスタンス「TestBackupRestore」」をクリック → 表示された「概要」画面から、左下の表示された画面から「管理」を選択 → 「Backup」タブが表示されます。
バックアップ&リストアは下記の画面で操作できます。
※以降の画面キャプチャーは、ヘッダー・フッター部分を除いて取っています。
「バックアップの保存先」に「なし」を選択している場合は、「Backup」タブが表示されません。
検証範囲
バックアップ画面のAvailable Backupsの右横にあるアクションメニューボタンをクリックすると、メニューが表示されます。
今回は、メニューに表示されている「Backup now」、「Restore Instance」、「Configure Backups」の機能を検証してみます。
※検証内容が長いため、記事を前編/後編に分けています。ご了承ください。
今回行う検証は、「検証の簡単説明」1から4までになります。
検証の簡単説明
1.データ登録:テーブルを作成し、10分間1秒ごとのデータを挿入
2.スケジュールによるフル(full)バックアップ実施
3.データ登録:10分間、1秒ごとのデータを挿入
4.スケジュールによる増分(incremental)バックアップ実施
5.テーブル削除
6.過去のある時点へのリストア:「Restore Instance」を利用し、「3」のある時点(Point in Time)にリストアを実施
7.データ登録:10分間、1秒ごとのデータを挿入
8.オンデマンド・バックアップ実施:「Backup now」を利用し、現時点でのバックアップ(フルバックアップ)実行
9.テーブル削除
10.特定のバックアップからのリストア:「8」の時点に「Restore」実施
1.データ登録
テーブルを作成し、10分間、1秒毎にデータを挿入します。
◆テーブルの作成
テーブルを作成します。
1 2 3 4 5 6 7 8 9 10 |
mysql> show create table test_backup \G *************************** 1. row *************************** Table: test_backup Create Table: CREATE TABLE `test_backup` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `text` varchar(50) NOT NULL, `reg_date` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 1 row in set (0.00 sec) |
このようなテーブルを作成し、reg_dateカラムに登録日時を格納していきます。
◆データの登録
データを挿入します。
1 2 3 4 5 6 7 8 9 |
[oracle@testbackuprestore-mysql-1 ~]$ date; Mon Jun 25 01:55:49 UTC 2018 [oracle@testbackuprestore-mysql-1 ~]$ for i in $(seq 1 600) > do > mysql --user=root --password=【password】 mydatabase --execute="INSERT INTO test_backup (text, reg_date) VALUES ('Register before backup.', NOW())" > sleep 1 > done; [oracle@testbackuprestore-mysql-1 ~]$ date; Mon Jun 25 02:06:01 UTC 2018 |
「Mon Jun 25 01:55:49 UTC 2018」から「Mon Jun 25 02:06:01 UTC 2018」まで、10分間、毎秒のデータを登録しました。
※mysql コマンドを sleep 1 で連続実行したために、若干の誤差は出てしまってますが、およそ 10 分後に終了しています。
◆データの確認
作成されたデータを確認します。
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 |
mysql> select count(*) from test_backup; +----------+ | count(*) | +----------+ | 600 | +----------+ 1 row in set (0.01 sec) mysql> select * from test_backup order by reg_date limit 5; +----+-------------------------+---------------------+ | id | text | reg_date | +----+-------------------------+---------------------+ | 1 | Register before backup. | 2018-06-25 01:55:49 | | 2 | Register before backup. | 2018-06-25 01:55:50 | | 3 | Register before backup. | 2018-06-25 01:55:51 | | 4 | Register before backup. | 2018-06-25 01:55:52 | | 5 | Register before backup. | 2018-06-25 01:55:53 | +----+-------------------------+---------------------+ 5 rows in set (0.00 sec) mysql> select * from test_backup order by reg_date desc limit 5; +-----+-------------------------+---------------------+ | id | text | reg_date | +-----+-------------------------+---------------------+ | 600 | Register before backup. | 2018-06-25 02:06:00 | | 599 | Register before backup. | 2018-06-25 02:05:59 | | 598 | Register before backup. | 2018-06-25 02:05:58 | | 597 | Register before backup. | 2018-06-25 02:05:57 | | 596 | Register before backup. | 2018-06-25 02:05:56 | +-----+-------------------------+---------------------+ 5 rows in set (0.00 sec) |
2.スケジュールのフルバックアップ実施
◆バックアップスケジュールの設定
では、早速、スケジュールを設定してみましょう。
アクションメニューから「Configure Backups」を選択します。
初期設定時は、下記のように設定されています。
項目 | 初期値 |
---|---|
フルバックアップ | インスタンス作成日時+12時間の「曜日」/「時分」 |
増分バックアップ | インスタンス作成日時+12時間の「時分」 |
保存期間 | 30日 |
フルバックアップは週に1回、増分バックアップは一日1回行われます。
なお、バックアップ保存先で、「クラウド・ストレージのみ」を選択した場合は、クラウド・ストレージに「保存期間」の日分、バックアップが保存できます。
「クラウド・ストレージとディスク・ストレージ両方」を選択した場合は、クラウド・ストレージには「保存期間」の日分、ディスク・ストレージには直前の7日分のバックアップが保存できます。
Full Backupを2:10に設定を変え、保存を行います。
※Oracle MySQL Cloud Service での時間はUTCで表されます。
バックアップ画面から設定が変わっていることが確認できます。
では、スケジューラーによるバックアップ(フルバックアップ)を確認してみましょう。
※1回目のスケジュールバックアップは、フルバックアップのスケジュール(曜日)ではなくてもフルバックアップが実施されます。
フルバックアップのスケジュール設定時間「2:10」が経過していることを確認して、バックアップ履歴を確認します。
バックアップリストに、スケジュールによるフルバックアップの履歴が追加されました。
バックアップの実行情報は、4の増分バックアップの後、一緒に確認することにします。
3.データ登録
再度、10分間、1秒ごとのデータを挿入します。やり方は「1」と同様なので、説明は省略します。
◆データの登録
データを挿入します。
1 2 3 4 5 6 7 8 9 |
[oracle@testbackuprestore-mysql-1 ~]$ date; Mon Jun 25 02:20:36 UTC 2018 [oracle@testbackuprestore-mysql-1 ~]$ for i in $(seq 1 600) > do > mysql --user=root --password=【password】 mydatabase --execute="INSERT INTO test_backup (text, reg_date) VALUES ('Register after full-backup by scheduled.', NOW())" > sleep 1 > done; [oracle@testbackuprestore-mysql-1 ~]$ date; Mon Jun 25 02:30:46 UTC 2018 |
「Mon Jun 25 02:20:36 UTC 2018」から「Mon Jun 25 02:30:46 UTC 2018」まで、10分間、毎秒のデータを登録しました。
◆データの確認
作成されたデータを確認します
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 |
mysql> select count(*) from test_backup; +----------+ | count(*) | +----------+ | 1200 | +----------+ 1 row in set (0.00 sec) mysql> select * from test_backup where reg_date >= '2018-06-25 02:20:36' order by reg_date limit 5; +-----+------------------------------------------+---------------------+ | id | text | reg_date | +-----+------------------------------------------+---------------------+ | 601 | Register after full-backup by scheduled. | 2018-06-25 02:20:37 | | 602 | Register after full-backup by scheduled. | 2018-06-25 02:20:38 | | 603 | Register after full-backup by scheduled. | 2018-06-25 02:20:39 | | 604 | Register after full-backup by scheduled. | 2018-06-25 02:20:40 | | 605 | Register after full-backup by scheduled. | 2018-06-25 02:20:41 | +-----+------------------------------------------+---------------------+ 5 rows in set (0.00 sec) mysql> select * from test_backup order by reg_date desc limit 5; +------+------------------------------------------+---------------------+ | id | text | reg_date | +------+------------------------------------------+---------------------+ | 1200 | Register after full-backup by scheduled. | 2018-06-25 02:30:45 | | 1199 | Register after full-backup by scheduled. | 2018-06-25 02:30:44 | | 1198 | Register after full-backup by scheduled. | 2018-06-25 02:30:43 | | 1197 | Register after full-backup by scheduled. | 2018-06-25 02:30:42 | | 1196 | Register after full-backup by scheduled. | 2018-06-25 02:30:41 | +------+------------------------------------------+---------------------+ 5 rows in set (0.00 sec) |
4.スケジュールの増分バックアップ実施
スケジューラーによるバックアップ(増分バックアップ)を実行します。
Full Backupの曜日を、本日以外に変え、Incremental Backupを3:00に設定し、保存を行います。
※時間上、次回のスケジュールまで待たずに、スケジュールを変えてバックアップを行いました。
画面から設定が変わっていることが確認できます。
スケジューラーによるバックアップ(増分バックアップ)を確認してみましょう。
増分バックアップのスケジュール設定時間が経過していることを確認して、バックアップ履歴を確認します。
バックアップが行われていることが確認できます。
では、バックアップの実行情報を確認してみましょう。
◆バックアップ状況を確認
バックアップ状況は MySQL Server の「backup_progress」/「backup_list」テーブルから確認する方法とMySQL Enterprise Monitorから確認する方法があります。
(MySQL Enterprise Monitorを利用するためには、インスタンス作成時、MySQL Enterprise Monitorの構成を「はい」にする必要があります。)
Using the MySQL Enterprise Backup Logs
◇「mysql.backup_progress」/「mysql.backup_list」テーブルから確認
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 |
mysql> select * from mysql.backup_progress order by backup_id; +-------------------+-------------+------------+---------------+---------------------+-------------------------------------------------------------------+ | backup_id | tool_name | error_code | error_message | current_time | current_state | +-------------------+-------------+------------+---------------+---------------------+-------------------------------------------------------------------+ ↓2のフルバックアップ | 15298926039488567 | mysqlbackup | 0 | NO_ERROR | 2018-06-25 02:10:03 | Started mysqlbackup. | | 15298926039488567 | mysqlbackup | 0 | NO_ERROR | 2018-06-25 02:10:05 | mysqlbackup locking tables and copying .frm + other engines data. | | 15298926039488567 | mysqlbackup | 0 | NO_ERROR | 2018-06-25 02:10:07 | mysqlbackup unlocked the tables. | | 15298926039488567 | mysqlbackup | 0 | NO_ERROR | 2018-06-25 02:10:07 | mysqlbackup returns success. | ↓4の増分バックアップ | 15298956057974168 | mysqlbackup | 0 | NO_ERROR | 2018-06-25 03:00:05 | Started mysqlbackup. | | 15298956057974168 | mysqlbackup | 0 | NO_ERROR | 2018-06-25 03:00:07 | mysqlbackup locking tables and copying .frm + other engines data. | | 15298956057974168 | mysqlbackup | 0 | NO_ERROR | 2018-06-25 03:00:09 | mysqlbackup unlocked the tables. | | 15298956057974168 | mysqlbackup | 0 | NO_ERROR | 2018-06-25 03:00:09 | mysqlbackup returns success. | +-------------------+-------------+------------+---------------+---------------------+-------------------------------------------------------------------+ 8 rows in set (0.00 sec) mysql> select * from mysql.backup_history order by backup_id; +-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+---------------------+------------+----------------------------------+-------------------+--------------------------------------+------------------------+--------------------+-----------+-----------+----------------------+-------------+---------------+------------------+----------------------+-----------------------------+---------------------------+----------------------+-------------------------------------------------------------------------------------------------+-----------+------------+------------+-----------------+------------------+------------------+----------------------+-------------------+ | backup_id | tool_name | start_time | end_time | binlog_pos | binlog_file | compression_level | engines | innodb_data_file_path | innodb_file_format | start_lsn | end_lsn | incremental_base_lsn | backup_type | backup_format | mysql_data_dir | innodb_data_home_dir | innodb_log_group_home_dir | innodb_log_files_in_group | innodb_log_file_size | backup_destination | lock_time | exit_state | last_error | last_error_code | start_time_utc | end_time_utc | consistency_time_utc | meb_version | +-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+---------------------+------------+----------------------------------+-------------------+--------------------------------------+------------------------+--------------------+-----------+-----------+----------------------+-------------+---------------+------------------+----------------------+-----------------------------+---------------------------+----------------------+-------------------------------------------------------------------------------------------------+-----------+------------+------------+-----------------+------------------+------------------+----------------------+-------------------+ ↓2のフルバックアップ | 15298926039488567 | /u01/bin/meb/bin/mysqlbackup --user=oracle --backup-dir=/u01/backup/MySQLCS/TestBackupRestore/scheduledFull/e3bd58e3-4f13-4336-bc07-9c8790134a6e --backup-image=backup_full.mbi --compress backup-to-image | 2018-06-25 02:10:03 | 2018-06-25 02:10:07 | 7964724 | testbackuprestore-mysql-1.000002 | 1 | CSV:InnoDB:MyISAM:PERFORMANCE_SCHEMA | ibdata1:12M:autoextend | Barracuda | 115246080 | 115246311 | 0 | FULL | IMAGE | /u01/data/mysql/ | | /u01/translog/inno-bin-logs | 6 | 1073741824 | /u01/backup/MySQLCS/TestBackupRestore/scheduledFull/e3bd58e3-4f13-4336-bc07-9c8790134a6e | 1.727 | SUCCESS | NO_ERROR | 0 | 1529892603937767 | 1529892607780872 | 1529892607770500 | 4.1.0-bug26659540 | ↓4の増分バックアップ | 15298956057974168 | /u01/bin/meb/bin/mysqlbackup --user=oracle --backup-dir=/u01/backup/MySQLCS/TestBackupRestore/scheduledIncremental/ff63923c-b0d6-42bc-ba7c-18a988253255 --backup-image=backup_incremental.mbi --incremental_base=dir:/u01/backup/MySQLCS/TestBackupRestore/scheduledFull/e3bd58e3-4f13-4336-bc07-9c8790134a6e --incremental backup-to-image | 2018-06-25 03:00:05 | 2018-06-25 03:00:09 | 8238324 | testbackuprestore-mysql-1.000002 | 0 | CSV:InnoDB:MyISAM:PERFORMANCE_SCHEMA | ibdata1:12M:autoextend | Barracuda | 115246312 | 151366501 | 0 | INCREMENTAL | IMAGE | /u01/data/mysql/ | | /u01/translog/inno-bin-logs | 6 | 1073741824 | /u01/backup/MySQLCS/TestBackupRestore/scheduledIncremental/ff63923c-b0d6-42bc-ba7c-18a988253255 | 1.641 | SUCCESS | NO_ERROR | 0 | 1529895605792402 | 1529895609049588 | 1529895609030955 | 4.1.0-bug26659540 | +-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+---------------------+------------+----------------------------------+-------------------+--------------------------------------+------------------------+--------------------+-----------+-----------+----------------------+-------------+---------------+------------------+----------------------+-----------------------------+---------------------------+----------------------+-------------------------------------------------------------------------------------------------+-----------+------------+------------+-----------------+------------------+------------------+----------------------+-------------------+ 2 rows in set (0.00 sec) |
◇MySQL Enterprise Monitorから確認
左のメニューから「Backups」をクリックすると、「Current Status」が表示され、直前に行われたバックアップ状況は、バックアップ・イベント情報が確認できます。
※MySQL Enterprise Monitorへの接続方法は、前回の記事で説明していますので、ご参考してください。
MySQL Enterprise Monitorに接続
「History」タブを押すと、履歴が表示されます。
下から、2のフルバックアップ、4の増分バックアップの履歴が確認できます。
Current Statusか、Historyの「Instance」項目のリンクボタンを押すと、バックアップの詳細情報が確認できます。
表示項目は「backup_progress」/「backup_history」テーブルで確認できる項目とほぼ同じのようですね。
◆バックアップファイルの確認
次はバックアップファイルを確認してみましょう。
バックアップファイルは、インスタンス作成時「バックアップ保存先」を「クラウド・ストレージのみ」にした場合は、「ストレージ・コンテナ」画面から、
「クラウド・ストレージとディスク・ストレージ両方」にした場合は、クラウド・ストレージに保存されたバックアップは「ストレージ・コンテナ」画面で、
ディスク・ストレージに保存されたバックアップは、インスタンスに接続しコンソール上で確認できます。
今回は「クラウド・ストレージとディスク・ストレージ両方」を選択していますので、両方確認してみましょう。
◇「ストレージ・コンテナ」画面
Storage Classicのコンテナ・リストからインスタンス作成時、設定した「クラウド・ストレージ・コンテナ」名である「コンテナ「TestBackupRestore」」をクリックします。
上から、2のフルバックアップ、4の増分バックアップファイルが確認できます。
◇コンソール
フルバックアップ時は「scheduledFull」に保存されていて、増分バックアップは「scheduledIncremental」に保存されていることが確認できます。
※バックアップ保存場所は「backup_history」テーブルの「backup_destination」項目で確認できます。
1 2 3 4 5 6 7 8 9 10 11 |
↓2のフルバックアップ [oracle@testbackuprestore-mysql-1 e3bd58e3-4f13-4336-bc07-9c8790134a6e]$ pwd /u01/backup/MySQLCS/TestBackupRestore/scheduledFull/e3bd58e3-4f13-4336-bc07-9c8790134a6e [oracle@testbackuprestore-mysql-1 e3bd58e3-4f13-4336-bc07-9c8790134a6e]$ ll total 57708 -rw-r----- 1 oracle oracle 59051959 Jun 25 02:10 backup_full.mbi -rw-r----- 1 oracle oracle 378 Jun 25 02:10 backup-my.cnf drwxr-x--- 2 oracle oracle 4096 Jun 25 02:10 datadir drwxr-x--- 2 oracle oracle 4096 Jun 25 02:10 meta -rw-r----- 1 oracle oracle 16592 Jun 25 02:10 server-all.cnf -rw-r----- 1 oracle oracle 5282 Jun 25 02:10 server-my.cnf |
1 2 3 4 5 6 7 8 9 10 11 |
↓4の増分バックアップ [oracle@testbackuprestore-mysql-1 ff63923c-b0d6-42bc-ba7c-18a988253255]$ pwd /u01/backup/MySQLCS/TestBackupRestore/scheduledIncremental/ff63923c-b0d6-42bc-ba7c-18a988253255 [oracle@testbackuprestore-mysql-1 ff63923c-b0d6-42bc-ba7c-18a988253255]$ ll total 30492 -rw-r----- 1 oracle oracle 31182726 Jun 25 03:00 backup_incremental.mbi -rw-r----- 1 oracle oracle 378 Jun 25 03:00 backup-my.cnf drwxr-x--- 2 oracle oracle 4096 Jun 25 03:00 datadir drwxr-x--- 2 oracle oracle 4096 Jun 25 03:00 meta -rw-r----- 1 oracle oracle 16593 Jun 25 03:00 server-all.cnf -rw-r----- 1 oracle oracle 5282 Jun 25 03:00 server-my.cnf |
次回も検証続きます
以上で、スケジュールによるバックアップの実施、バックアップのファイルや状況の確認方法について確認を行ってみました。
次回は、今回に続けて
「過去のある時点へのリストア」、「オンデマンド・バックアップ」、「特定のバックアップからのリストア」
の検証を行いますので、続いてご覧になってください。
◆マニュアル
バックアップ&リストアについては、下記のマニュアルを参照してください。
・Using Oracle MySQL Cloud Service – Backing Up and Restoring Databases on MySQL Cloud Service