1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[OCI]Azure Blob Storage上にあるMySQLのバックアップファイルを直接MySQL DBシステムにリストアしてみた

Last updated at Posted at 2022-02-25

はじめに

こちらの記事では、goofysを使用してAWS S3のバケットをファイルシステムとしてマウントし、S3バケット内にあるバックアップを直接OCIのMySQL DBシステムにリストアしました。

今回は、Microsoftから提供されているblobfuseというAzure Blob Storage用の仮想ファイルシステムドライバーを使用して、Azure Blob Storageのコンテナ内にあるバックアップファイルを直接OCIのMySQL DBシステムにリストアしてみました。

1. blobfuseのインストール

Microsoftパッケージリポジトリを構成します。

[opc@compute1 ~]$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
Retrieving https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
warning: /var/tmp/rpm-tmp.TtGT9F: Header V4 RSA/SHA256 Signature, key ID be1229cf: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:packages-microsoft-prod-1.0-1.el7################################# [100%]
[opc@compute1 ~]$

yumコマンドでblobfuse をインストールします。

[opc@compute1 ~]$ sudo yum install -y blobfuse
Loaded plugins: langpacks, ulninfo
<略>
Resolving Dependencies
--> Running transaction check
---> Package blobfuse.x86_64 0:1.3.6-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================
 Package               Arch                Version                  Repository                                Size
===================================================================================================================
Installing:
 blobfuse              x86_64              1.3.6-1.el7              packages-microsoft-com-prod              3.5 M

Transaction Summary
===================================================================================================================
Install  1 Package

Total download size: 3.5 M
Installed size: 15 M
Downloading packages:
warning: /var/cache/yum/x86_64/7Server/packages-microsoft-com-prod/packages/blobfuse-1.3.6-RHEL-7.5-x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID be1229cf: NOKEY
Public key for blobfuse-1.3.6-RHEL-7.5-x86_64.rpm is not installed
blobfuse-1.3.6-RHEL-7.5-x86_64.rpm                                                          | 3.5 MB  00:00:01     
Retrieving key from https://packages.microsoft.com/keys/microsoft.asc
Importing GPG key 0xBE1229CF:
 Userid     : "Microsoft (Release signing) <gpgsecurity@microsoft.com>"
 Fingerprint: bc52 8686 b50d 79e3 39d3 721c eb3e 94ad be12 29cf
 From       : https://packages.microsoft.com/keys/microsoft.asc
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : blobfuse-1.3.6-1.el7.x86_64                                                                     1/1 
  Verifying  : blobfuse-1.3.6-1.el7.x86_64                                                                     1/1 

Installed:
  blobfuse.x86_64 0:1.3.6-1.el7                                                                                    

Complete!
[opc@compute1 ~]$ 

2. blobfuse利用のための準備

バッファのための一時パスのディレクトリを作成します。

[opc@compute1 ~]$ sudo mkdir /mnt/resource/blobfusetmp -p

マウントポイントを作成します。

[opc@compute1 ~]$ sudo mkdir /mnt_azureblob -p

ストレージ アカウントの資格情報ファイルを作成します。

Azureコンソールのストレージアカウントのアクセスキーのページで、ストレージアカウント名とキーを確認します。
スクリーンショット 2022-02-25 14.22.55.png

今回は、hogehoge1というストレージアカウントのazureblobというコンテナをマウントします。

[opc@compute1 ~]$ sudo vi /root/fuse_connection.cfg
txt /root/fuse_connection.cfg
accountName hogehoge1
accountKey ストレージアカウントのキー
containerName azureblob

他のユーザーが読み取れないように資格情報ファイルのパーミッションを変更します。

[opc@compute1 ~]$ sudo chmod 600 /root/fuse_connection.cfg

3. blobfuseによるコンテナのマウント

blobfuseコマンドでコンテナazureblobをマウントポイント/mnt_azureblobにマウントします。

[opc@compute1 ~]$ sudo blobfuse /mnt_azureblob --tmp-path=/mnt/resource/blobfusetmp --config-file=/root/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120 -o allow_other

マウントできたようです。
/mnt_azureblob内にファイルを作成してみます。

[opc@compute1 ~]$ touch /mnt_azureblob/test.txt

Azureのコンソールから確認してみます。
スクリーンショット 2022-02-25 14.33.35.png
コンテナazureblob内にtest.txtが作成されていることが確認できました。

4. MySQLの準備

mysqlコマンドでadminユーザとしてMySQL DBシステムに接続します。

[opc@compute1 ~]$ mysql -u admin -p -h mysqlds1.subnet1.vcn1.oraclevcn.com
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28-u1-cloud MySQL Enterprise - Cloud

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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>

リストア先のデータベース"employees"を作成します。

mysql> CREATE DATABASE employees;yees;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| employees          |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql>

mysqlを終了します。

mysql> exit
Bye
[opc@compute1 ~]$

5. バックアップファイルの準備

mysqldumpで取得したバックアップファイル"employees.dmp"をAzure Blobのコンテナにアップロードします。
こちらのバックアップファイルは、こちらで公開されているサンプルデータを一度MySQLに取り込み、mysqldumpでデータベースのバックアップとして取得したものです。
スクリーンショット 2022-02-25 14.13.32.png
Azure Blob Storageコンテナのマウントポイントの内容を確認します。

[opc@compute1 ~]$ ls -l /mnt_azureblob/
total 164430
-rw-r--r--. 1 root root 168375940 Feb 24 05:32 employees.dmp
-rw-r--r--. 1 root root         0 Feb 24 01:18 test.txt
[opc@compute1 ~]$

employees.dmpがあることが確認できました。

6. Azure Blobコンテナにあるバックアップファイルのリストア

Azure Blobコンテナのマウントポイント/mnt_azureblobにあるバックアップファイルemployees.dmpをmysqlコマンドでMySQL DBシステムにリストアします。

opc@compute1 ~]$ time mysql -u admin -p -h mysqlds1.subnet1.vcn1.oraclevcn.com -t employees < /mnt_azureblob/employees.dmp
Enter password: 

real	1m26.789s
user	0m1.999s
sys	0m0.147s
[opc@compute1 ~]$

mysqlコマンドでadminユーザとしてMySQL DBシステムに接続して、バックアップファイルが正しくリストアされているか確認します。

[opc@compute1 ~]$ mysql -u admin -p -h mysqlds1.subnet1.vcn1.oraclevcn.com
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.28-u1-cloud MySQL Enterprise - Cloud

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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> 

データベースをemployeesに切り替えます。

mysql> use employees;
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> 

データベースemployees内のテーブルを確認します。

mysql> show tables;
+----------------------+
| Tables_in_employees  |
+----------------------+
| current_dept_emp     |
| departments          |
| dept_emp             |
| dept_emp_latest_date |
| dept_manager         |
| employees            |
| salaries             |
| titles               |
+----------------------+
8 rows in set (0.00 sec)

mysql>

テーブル内のデータを確認します。

mysql> SELECT COUNT(*) FROM employees;
+----------+
| COUNT(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.02 sec)

mysql> SELECT COUNT(*) FROM departments;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+
1 row in set (0.01 sec)

mysql>

mysqlを終了します。

mysql> exit
Bye
[opc@compute1 ~]$

blobfuseを使用してAzure Blob Storageコンテナをファイルシステムにマウントし、コンテナ内のバックアップファイルを直接MySQL DBシステムにリストアすることができました。

参考情報

blobfuse を使用して Blob Storage をファイル システムとしてマウントする方法
[OCI]AWS S3上にあるMySQLのバックアップファイルを直接MySQL DBシステムにリストアしてみた

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?