プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

AWS RDS の SQL Server のネイティブバックアップを使ってみました

最近 AWS RDS の SQL Server を使い始めました(もちろんExpressエディションです)。 いろいろ試していると、ネイティブバックアップという機能を使えるということなので、早速試してみました。

SQL Server のネイティブバックアップおよび復元のサポート - Amazon Relational Database Service

オプショングループの作成

ネイティブバックアップを使うためには、オプショングループに該当するオプションを追加する必要があります。 SQL Server 起動時は何も考えてなかったので、デフォルトオプショングループとなっています。このデフォルトオプショングループにオプションを追加することはできないので、新規にオプショングループを作成します。

RDSの管理画面から、『オプショングループ』を選択して、『グループの作成』を選択します。

f:id:junichim:20161101011059p:plain

『名前』と『説明』に適当な値を入れ、『データベースエンジン』は sqlserver-ex 、『メジャーバージョン』として12.00 を選択します(現在のインスタンスに合わせます)。 問題がなければ、オプショングループが作成されます。

オプションの追加

作成したオプショングループに対して、ネイティブバックアップのオプションを追加します。 対象のオプショングループを選択して、『オプションの追加』を選択します。 『オプション』として、SQLSERVER_BACKUP_RESTORE を選択し、IAMロールがない場合、『新規ロールの作成』をクリックします。

f:id:junichim:20161101011829p:plain

上記のような画面が表示されるので、必要に応じて、IAMロール、S3バケットなどを選択し、場合によっては新規作成します。

『すぐに適用』はこのオプショングループがDBインスタンスに割り当てられていないので、どっちを選択していても大丈夫(なはず)です。 『オプションの追加』ボタンを押すと、選択したオプションが追加されます。

オプショングループをインスタンスに割り当て

わかってみれば、大したことないのですが、実はこれが一番わかりませんでした。 要は、オプショングループをDBインスタンスに割り当てるためには、既存のDBインスタンスを選択して、『インスタンスの操作』から『変更』を選択し、インスタンスの内容の変更画面で、オプショングループを選択する、というものでした。

docs.aws.amazon.com

RDS 知ってると当たり前なのかな?もう少しドキュメントの書き方を工夫して、わかりやすくなってほしいと感じた部分です。

なお、オプショングループの変更と一緒に『すぐに適用』にチェックを入れておきます。『次へ』で確認画面が表示されるので、問題がなければ、『DBインスタンスの変更』をクリックします。 これで、問題が無ければすぐに変更作業が始まります。 しばらくすると、変更が完了となるので(インスタンス画面で確認できます)、新しいオプショングループが割り当てられていることが確認できます。

バックアップの取得

ここまでできたら、早速バックアップを取ってみたいと思います。

docs.aws.amazon.com

こちらのページあるように、 SQL Server Management Studio を起動して、SQL Server に接続します。 『新しいクエリ』を選択して、

EXEC msdb.dbo.rds_backup_database
    @source_db_name=N'database name',
    @s3_arn_to_backup_to='arn:aws:s3:::{bucket name}/{filename}',
    @overwrite_s3_backup_file=0;

と入力して、実行します。 問題が無ければ、しばらくするとS3側にバックアップファイルが作成されています。

取得したバックアップファイルは、同じDBインスタンスに復元できないなど制約はあるものの、復元オプションの一つとして使えそうかなと思っています。

QNAP TS-251+ の設定(バックアップ設定など)

さて、下記の記事などで設定して、QNAP TS-251+ を使い始めましたが、やはりバックアップ設定は早めにやっておいたほうがよいと思います。

QNAP TS-251+ の設定(主に公開設定周り) - プログラマーのメモ書き

QNAP TS-251+ の設定(HDD移設など) - プログラマーのメモ書き

ということで、今回はバックアップ設定を行った話をまとめます。

QNAP でのバックアップ設定について

QNAPではバックアップ設定は、『バックアップマネージャ』を通じて行うことができます。 いろいろな設定方法がありますが、主に、

  • リモートレプリケーション
  • クラウドバックアップ
  • 外部バックアップ

に分類できます。また、リモートレプリケーションでは、

  • NAS to NAS (QNAP NAS にレプリケーション)
  • Rsync (Rsync サーバーにレプリケーション)
  • RTRR
  • Snapshot レプリカ
  • LUN バックアップ

などの選択肢があります。

とりあえず、別のNAS(Netgearの別のNAS, ReadyNas Ultra2)にバックアップを保存する方法を設定したので、それについてまとめておきます。

Rsync によるバックアップの準備

Rsyncによるバックアップを行うために、最初にNetgearのNASのバックアップ用共有を作成し、Rsyncユーザーとパスワードを設定しておきます。

f:id:junichim:20161011162019p:plain f:id:junichim:20161011162043p:plain

次に、QNAPのバックアップマネージャを開き、『バックアップサーバー』→『Rsyncサーバー』を選択します。特に設定は変更しませんが、『最大ダウンロード速度を有効にする』にチェックを入れておきます。 これで準備完了です。

Rsyncによるバックアップの設定

設定は、『バックアップマネージャ』→『リモートレプリケーション』→『Rsync』を選択します。紛らわしいですが、『NAS to NAS』はQNAPのNAS同士でバックアップを設定する際に使うようです。

f:id:junichim:20161011162512p:plain (画面は設定後のためジョブが登録済みになっています)

設定画面が表示されたら、『レプリケーションジョブの作成』ボタンをクリックします。

f:id:junichim:20161011162753p:plain

リモートレプリケーション名に、適当な名前を入れて、リモートサイトの『設定』ボタンを押します。

f:id:junichim:20161011162801p:plain

先ほど設定した、バックアップ先のNASのIPアドレス(または名前)、ユーザー名、パスワードを入力します。『テスト』ボタンを押すと、接続テストを行い、平均速度などを計測して表示してくれます。設定に問題なければ『適用』ボタンを押してください。

次に、『ソースフォルダ』(QNAP側のフォルダ)と『宛先フォルダ』(バックアップ先サーバーのフォルダ)を選択します。 なお、ここでの設定は、あくまでのローカルNASのフォルダを、リモートサーバーのフォルダにバックアップするという設定であり、反対向きの設定はできませんので、ご注意ください。

設定に問題がなければ、『追加』ボタンを押してフォルダ情報を追加します。

最後に『バックアップ周期』ボタンを押して、定期的にバックアップする際の周期などを設定します

f:id:junichim:20161011163358p:plain なお、すぐにバックアップを行わないならば、『バックアップをただちに実行します』のチェックを外しておきます。

最後に適用ボタンを押して登録すれば完了です。

あとは登録したスケジュールでバックアップが実行されていることを確認すれば完了です。

備考

さて、今回 QNAP でバックアップの設定を行いましたが、Netgear と比較すると結構異なっています。気づいた点をちょっと書いておくと

項目 Netgear ReadyNas Ultra2 QNAP TS-251+
共有フォルダへのバックアップ ×
リモートからローカルへのバックアップ設定 ×(バックアップ自体は可能だが設定はリモート側で行う必要がある)
外付けディスク等へのバックアップ
Amazon S3 へのバックアップ ×

実際に設定してみると、Readynas の共有フォルダへのバックアップはお手軽にバックアップを設定できて、それはそれで便利だったんだなと実感できました。 まあ、この後、S3へのバックアップも設定する予定なのと、dockerを試したいので、メインのNASとして ReadyNas を使い続けるという選択肢はないのですが。

あと、地味なところとしては、QNAPでは、バックアップが完了した際の完了通知が無いようです。外部デバイスへのバックアップだと設定できるみたいですが、Rsyncの場合は通知が来ません。この辺りは選択できるようになってほしいところです。

QNAP TS-251+ の設定(HDD移設など)

以前の記事でQNAP TS-251+ を導入した話を書きましたが、その続きです。

ここでは、既存のNASからデータをコピーして、いろいろと設定してゆきます。なお、既存のNASは、Netgear ReadyNas Duo で 2TB HDD × 2台(RAID 1)構成となっています。

アンチウィルス

一応、有効にしておきます。ダッシュボードから『コントロールパネル』→『アプリケーション』→『アンチウィルス』を選択し、『アンチウィルスを有効にする』にチェックを入れれば終わりです。

f:id:junichim:20161011152700p:plain

既定の共有フォルダの設定

  • Public
  • Web
  • homes

があります。 PublicはゲストアカウントでもR/W OK としておきます。 Webおよびhomesは当面使う予定がないので、共有名を非表示にしておきます。

あと、disk01という共有フォルダを追加しておきます(名称は既存のNASから引き継いでいる共有名なので、深い意味はありません)

ユーザー設定

既存のアカウントは管理者用として置いておくので、日常使い用のアカウントを作ります。 ユーザーとユーザーグループを追加して終わりです。ただし、一つ注意しないといけないのは、GUIからは、uid/gidの変更ができません。ですので、他のNASと混在して使うなどの場合は、SSHでログインして変更してやします。

uid 変更

uidの変更はsshでログインしてシェルから変更します。ちなみに、gidも変更する場合もあると思いますが、今回の環境だとgidは同じだったので、省略しています。

[/etc] # cat passwd
・・・
mor:x:500:100:Linux User,,,:/share/homes/mor:/bin/sh
[/etc] # 
[/etc] # usermod -u 1002 mor
[/etc] # cat passwd
・・・
mor:x:1002:100:Linux User,,,:/share/homes/mor:/bin/sh
[/etc] # 

既存の公開ディレクトリの所有者も変更しておきます。既存の公開ディレクトリは、/shareを見るとシンボリックリンクが作成されているので、それからたどるのが早いと思います。

[/share] # ls
CACHEDEV1_DATA/ HDD_DATA/       HDH_DATA/       HDL_DATA/       HDP_DATA/       HDT_DATA/       HDX_DATA/       Web@
HDA_DATA/       HDE_DATA/       HDI_DATA/       HDM_DATA/       HDQ_DATA/       HDU_DATA/       HDY_DATA/       disk01@
HDB_DATA/       HDF_DATA/       HDJ_DATA/       HDN_DATA/       HDR_DATA/       HDV_DATA/       HDZ_DATA/       external/
HDC_DATA/       HDG_DATA/       HDK_DATA/       HDO_DATA/       HDS_DATA/       HDW_DATA/       Public@         homes@
[/share] # 

上記の場合なら、Public Web homes といったデフォルトのものと、自分で作成した disk01 という公開フォルダがあることが分かります。

それぞれの公開フォルダ内で

[/share/disk01] # chown -R mor ./xxxxx

のようにして、所有者を自分にしておきます。

データのコピー

さて、既存のNASからデータをコピーしてやります。PC経由で2台のNAS間のファイルコピーをしてもよいのですが、その間PCが実質的に使えなくなるので、ちょっとやめました。 ということで、既存のNAS(Netgear Readynas Duo )から TS-251+ に対して、バックアップ機能を使って、TS-251+の共有フォルダにファイルをコピーしてやります。 ユーザーが自分だけなので、これでもなんとかります。

コピー対象となるデータ量が、約150GB程度で、約5時間程度でコピーが完了しました。

実は、単純にファイルコピーを行う前に、Rsyncを使ったバックアップでデータのコピーをしようとしたのですが、これが信じられないぐらい遅かったです。一晩経って、15GBだったかな? 何か設定ミスがあったのかもしれません。

HDD の移設

さて、既存のNASのHDDが2TBあるので、それをTS-251+に移して、既存NASには新たに購入した1TBのHDDを入れて、家族のデータを保存するのに使う予定です。 TS-251+は、こちらの記事でも書いたように、テスト用に1TBのHDDが1台セットアップ済みです。 このあたりの状況をまとめておきます。

NAS名称 HDD台数
TS-251+ 1TB HDD 1台
ReadyNas Duo 2TB HDD 2台

これを

NAS名称 HDD台数 備考
TS-251+ 2TB HDD 2台
ReadyNas Duo 1TB HDD 2台 1台はTS-251+から、もう1台は新規購入済みのもの

となるように入れ替える予定です。

まず最初に、ReadyNAS Duo からHDDを取り出します。 ホットスワップに対応しているので、何も考えずにフロントベイから抜いてしまいます。あ、もちろん作業前にはバックアップは取ってます。

次に、TS-251+ の空いているスロットへHDDを追加します。 こちらもホットスワップに対応しているので、何も考えずにHDDを認識してくれます。

f:id:junichim:20161007005649p:plain

ただ、このままではHDDは認識しているものの未使用の状態です(この辺りはHDDを認識すれば、勝手にRAIDに組み込んで使えるようになる ReadyNas の便利さが実感できます)。 『ストレージマネージャ』→『ストレージ領域』を開き、自分のストレージプール(この場合は『ストレージプール1』)を選択して『管理』ボタンを押します。

f:id:junichim:20161007005945p:plain

さらに、表示された画面下部の『ストレージプール1のRAIDグループ』にある『管理』ボタンを押します。

f:id:junichim:20161007010103p:plain

すると、移行画面が表示されます。

f:id:junichim:20161007010131p:plain

この画面は、現在のシングルディスクの状態からRAID1の状態に移行するための画面になります。 画面下部の『適用』ボタンを押すと、追加したHDDを組み込んでRAID1を構成してくれます。問題なく構成が完了すると、こんな画面が表示されます。

f:id:junichim:20161007010343p:plain

2台のディスク容量が異なっていても問題ないのがいいですね。

あと、同様の手順を踏んで、2TBのディスク2台でRAID1を構成した状態にします。 でも、最初に作成したボリュームの容量から自動的には増えてくれません。 それを増やすために、

f:id:junichim:20161007013556p:plain

にある『管理』から『容量の拡張』を選択します。

f:id:junichim:20161007013630p:plain

画面下部にある『容量の拡張』ボタンを押すと、ストレージプールとして容量を増やしてくれます。 ちなみに、上部にある『変更』とは、ディスクを入れ替えるときに使うようです。

次に、ディスク領域を増やします。今回は、ディスク領域全体を単一のボリュームとして利用します。 ストレージマネージャを開いて、『ストレージ領域』→データボリューム(DataVol1)を選択します。 f:id:junichim:20161011155815p:plain

この状態で『管理』ボタンを押します。

f:id:junichim:20161011155839p:plain

上部に『ボリュームの拡張』ボタンがあるので、そちらをクリックします。

f:id:junichim:20161011155913p:plain

新規ボリュームサイズを入力することができるので、拡張後のサイズを入力します(今回は『最大に設定』ボタンで設定します)。 『適用』ボタン押下後、しばらくたつとステータスに『準備完了』と表示されれば、終わりです。

とりあえず、これで使い始めることができるようになりました。