LoginSignup
5
3

More than 5 years have passed since last update.

dashDB Localでバックアップ&リストア

Last updated at Posted at 2017-06-13

dashDB Localを触ってみましたの記事第3弾。バックアップ、リストアを試してみた。
バックアップの取り方だけを確認したい方は、右の目次?項目のところでリンクジャンプしてください。この記事、前おきが少し長いです

参考ページ

構築の記事はこちら
今回たくさん見たマニュアルはこちら

dashDB Localのバックアップ、リストアの考え方

DBデータのバックアップを取る、というよりかは、dashDB Localが使用するストレージ部分のレベルでコピーしておいて、それをいざとなったらリストアするイメージ。slideshareにそれっぽいのがあったので、拝借...(リンクはこちら
スクリーンショット 2017-06-13 17.27.47.png

マニュアルを見る限りはGPFSを使った例などが紹介されてますが、そんなものは手元にないのでdashDB Localの領域をLVMで構築して、バックアップリストアをやってみました。

・バックアップを取る:LVMのスナップショット
・データに変更が加わる:スナップショットに変更履歴が残っていく
・リストアする:スナップショットを適用して元に戻す

試してみる

前回までの復習

まず、docker部分の設定でそもそもdevicemapperが推奨なようです。前回紹介した手順にもうひと工夫が必要です。気持ち悪いので環境をゼロから作り直してみました。参考手順はこちら

ファイルシステムの作成

# yum install lvm2
# fdisk /dev/xvdc

xvdc1とxvdc2を作っておく。その後rebootして変更内容を反映させます(詳細の作り方はこちらにメモ済みです

device mapperの設定

設定ファイルを編集します

#vi /etc/lvm/profile/docker-thinpool.profile
{
        "storage-driver": "devicemapper",
        "storage-opts": [
                "dm.thinpooldev=/dev/mapper/docker-thinpool",
                "dm.use_deferred_removal=true"
        ]
}

Device mapperの設定ようにLVMを作成します。マニュアル通りでOK。

# pvcreate /dev/xvdc1
  Physical volume "/dev/xvdc1" successfully created.

# vgcreate docker /dev/xvdc1
  Volume group "docker" successfully created

# lvcreate --wipesignatures y -n thinpool docker -l 95%VG
  Logical volume "thinpool" created.

# lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG
  Logical volume "thinpoolmeta" created.

# lvconvert -y --zero n -c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta
  WARNING: Converting logical volume docker/thinpool and docker/thinpoolmeta to thin pool's data and metadata volumes with metadata wiping.
  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
  Converted docker/thinpool to thin pool.

新しい lvm プロフィールを適用します。

# lvchange --metadataprofile docker-thinpool docker/thinpool
  Logical volume docker/thinpool changed.
# lvs -o+seg_monitor
  LV       VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Monitor
  thinpool docker twi-a-t--- 95.00g             0.00   0.01                             monitored

以上で、Docker側の設定完了です。後はこの設定内容を再度読み込ませればOK。

# systemctl stop docker
# rm -rf /var/lib/docker/*
# systemctl daemon-reload
# systemctl start docker

きちんとdevice mapperの設定が反映されているかを確認します。一番最後の行「Storage Driver: device mapper」となっていればOKです。

# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.13.1
Storage Driver: devicemapper

やっとdashLocal側の話へ

dashDB Local用のストレージ領域の設定

dashDB用の領域作成をします。さっき作った/dev/xvdc2をdashLocal用にLVM作成、マウントします。

---LVM作成
# pvcreate /dev/xvdc2
  Physical volume "/dev/xvdc2" successfully created.
# vgcreate vgdata0 /dev/xvdc2
  Volume group "vgdata0" successfully created
# lvcreate -L 60G -n lvdata0 vgdata0 /dev/xvdc2
  Logical volume "lvdata0" created.

--ファイルシステム、マウント
# mkfs.ext3 /dev/mapper/vgdata0-lvdata0
(省略)
# mkdir /mnt/clusterfs
# mount /dev/mapper/vgdata0-lvdata0 /mnt/clusterfs/

dashインストール!

# docker run -d -it --privileged=true --net=host --name=dashDB -v /mnt/clusterfs:/mnt/bludata0 -v /mnt/clusterfs:/mnt/blumeta0 ibmdashdb/local:latest-linux

前回の記事で色々書いたので細かいログはここでは割愛します。

やっとバックアップを取る

順番的には

・バックアップ取るときように、ディスクへの書き込みを止める(サスペンド)
・バックアップ(スナップショット)を取る
・ディスクへの書き込みを再開する(レジューム)

の3段階です。

サスペンド
# docker exec -it dashDB write-suspend
*************************************************
Suspending write on bludb...this may take a while
Successfully suspended write on bludb
*************************************************
スナップショットを取る
sh-4.2# lvcreate -L 5G -s -n lvdatasnap1 /dev/vgdata0/lvdata0
  Using default stripesize 64.00 KiB.
  Logical volume "lvdatasnap1" created.
sh-4.2# lvs
  LV          VG      Attr       LSize  Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert
  thinpool    docker  twi-aot--- 95.00g              8.34   0.39
  lvdata0     vgdata0 owi-aos--- 60.00g
  lvdatasnap1 vgdata0 swi-a-s---  5.00g      lvdata0 0.00
レジューム
sh-4.2# docker exec -it dashDB write-resume
*************************************************
Resuming write on bludb...this may take a while
Successfully resumed write on bludb
*************************************************

DBにデータを入れる

データが何も入っていない状態でバックアップを取ったので、何かテーブルを作ったりしてデータをとにかく入れます。で、この後リストアをして「からっぽに戻ってる!」というのを確認するシナリオです。

データを入れる方法はこちら

ちゃんとLVMのスナップショットも変わっています。
Data%の所が、何か変更が加わるとどんどん増えていきます。ここに、変更前のメタデータが入ってい、いざリストアした時は変更前データが適用されて、元に戻る感じのようです。

LVSコマンドでスナップショットの容量が変わっていること(変更が記録されている)を確認
# lvs
  LV          VG      Attr       LSize  Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert
  thinpool    docker  twi-aot--- 95.00g              8.35   0.39
  lvdata0     vgdata0 owi-aos--- 60.00g
  lvdatasnap1 vgdata0 swi-a-s---  5.00g      lvdata0 2.45

リストア

・DB止める
・ファイルシステムをunmountして、スナップショットを適用しデータを戻す
・戻ったファイルシステムを再びmount
・DBを起動して、中身を確認し、データがからっぽの状態になっていることを確認

の3手順です

DBを止める
# docker exec -it dashDB stop
-- Stopping dashDB Local services --

-- Stopping core services --


dsserver_home: /opt/ibm/dsserver
port: 9300
https.port: 8443
status.port: 9302

dsserver_home: /opt/ibm/dsserver
port: 9300
https.port: 8443
status.port: 9302
SERVER:STOPPED

[05:41:23]  INFO: CONNECT TO BLUDB
[05:41:23]  INFO: LIST APPLICATIONS for database BLUDB
[05:41:23]  INFO: QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS
[05:41:23]  INFO: CONNECT RESET
[05:41:23]  INFO: Completed issuing quiesce for all databases - waiting for apps to be forced off
[05:42:24]  INFO: List applications for database BLUDB
[05:42:24]  INFO: Checking database consistency for BLUDB:
[05:42:24]  INFO: Deactivate db BLUDB
[05:42:25]  INFO: Checking database consistency after deactivating db
 All committed transactions have been written to disk    = YES
[05:42:25]  INFO: Stopping dashDB ...

-- Successfully stopped dashDB --
# docker stop dashDB
dashDB
アンマウントしスナップショットを適用し、またマウント
# umount /mnt/clusterfs
sh-4.2# lvs
  LV          VG      Attr       LSize  Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert
  thinpool    docker  twi-a-t--- 95.00g              8.35   0.39
  lvdata0     vgdata0 owi-aos--- 60.00g
  lvdatasnap1 vgdata0 swi-a-s---  5.00g      lvdata0 3.34
sh-4.2# lvconvert --merge /dev/vgdata0/lvdatasnap1
  Merging of volume vgdata0/lvdatasnap1 started.
  lvdata0: Merged: 96.67%
  lvdata0: Merged: 100.00%
# mount /dev/vgdata0/lvdata0 /mnt/clusterfs
dash再起動
# docker start dashDB
dashDB
# docker exec -it dashDB start

中身を確認してみる。きちんと消えてる!

# docker exec -it dashDB dbsql -db bludb -u bluadmin -pw netezza
Welcome to dbsql, the IBM dashDB SQL interactive terminal.

Type:  \? for help with internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

BLUDB.BLUADMIN(BLUADMIN)=> \dt
No relations found.

5
3
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
5
3