Copy Database/Move Database on SAP HANA(Japanese)
SAP HANAマルチテナントデータベースコンテナーインスタンス間のデータベースの複製・移動
2016/12/20改訂
以下のリンクも併せてお読みください。
プライベート/パブリックを問わず、また、インフラ/プラットホーム/バックエンドを問わず、クラウドの中ではDBサーバーはマルチコンテナー対応機能抜きには投資効果は期待できない状況です。データベースレベルのマルチコンテナー化が今後の既定となるかはわかりませんが、データベースレベルでプロビジョニングをし、アプリケーションをその上に作成し、バックアップや障害対策を行うという流れは当分続きそうです。
こういった流れの中、SAP HANAもMDC(マルチテナントデータベースコンテナー)機能を実装し、SPSを追うごとに機能強化をしています。今回は、このMDCの機能の中で知っていると運用上便利そうなCopy Database/Move Databaseの設定について説明をしたいと思います。
Copy Database/Move Databaseとは?
異なる2つのMDC HANAインスタンス間でデータベースを基本的には複製する機能です。Move Databaseでも「基本的には複製」と説明しているのは、CopyもMoveも動作自体は、システムレプリケーションを応用した ー つまり、スナップショット+ログの転送による ー データベースのコピーである、という意味です。最後のファイナライズという処理で複製元のデータベースを削除するか、残すかの違いが、CopyとMoveの違いとなります。
Copy Database/Move Databaseの動作
前述しました通り、Copy database/Move databaseはシステムレプリケーションの応用です。ということは、バックアップの仕組みが分かっていれば想像がつきます。複製先のHANAインスタンスで
create database 複製DB名 as replica of ソースDB名 at ’host:port’;
と実行すると、複製元のインスタンスでセーブポイントとログが実行されます。次にスナップショットが複製先に転送されデータベースが(indexserver)が起動されます。最後に同じく複製先に転送されたログが適用されて、複製元と同じデータベースが出来上がるというプロセスです。
データのコピーだけではなく、必要なプロセスの起動やそれに伴うシステム情報の更新なども行われます。
何に使うか?
本番システムからテストやトラブル対応ためのデータベースを作成する、テスト・検証環境でメンテナンスしたデータを本番に移行する、ハードウェアをリニューアルするときのDB移行手段などが考えられます。
手順
SSLの設定部分は、ページを分けそちらに詳細な説明を書いてあります。リンクを示してありますので併せてご参照ください。
読まれる時には、その作業がhost1で行われているのか、host2で行われているか、また、証明書がhost1/host2どちらで得られたものなのか、を意識して読んで頂くとと理解しやすいと思います。
環境
- ソースシステム
- ホスト名:mo-62963da0b(以降、host1)
- SID:SR1
- システム番号:00
- データベース名:DB1
- MDC設定:テナントDBとしてDB1を作成
- ターゲットシステム
- ホスト名: mo-984434d84(以降、host2)
- SID:SR1(SIDは、たまたまソース=ターゲットになっています。)
- システム番号:00
- MDC:設定済み
目的
- SR1/host1からSR1/host2へテナントデータベースDB1をコピーまたは移動する。
手順
- テスト用データベースの作成
- SR1(host1)のsystemdbに接続
- create database db1 system user password Hana8787;
- alter system start database db1;
- コピー、移動を確認するためにテーブルを作成しておく
- SR1(host1)のDB1に接続
- create table t1 (c1 int);
- insert into t1 values(9999999);
- ホスト間のSSL認証にsystemPKIを使用するように設定
- SR1(host1), SR1(host2)それぞれのsystemdbに接続
- alter system alter configuration (‘global.ini’, ‘SYSTEM’) set (‘communication’, ‘ssl’) = ‘systemPKI’;
- SR1(host1), SR1(host2)それぞれのsystemdbに接続
- 両インスタンスのサービス間通信の設定を行う
- host1, host2で以下を設定
- sr1admでログイン
- cd /hana/shared/SR1/hdblcm
-
./hdblcm
Choose an action to perform
- sr1admでログイン
- host1, host2で以下を設定
Index | Action to be performed | Description
————————————————————————————–
1 | add_host_roles | Add Host Roles
2 | add_hosts | Add Additional Hosts to the SAP HANA System
3 | check_installation | Check SAP HANA Installation
4 | configure_internal_network | Configure Inter-Service Communication
5 | configure_sld | Configure System Landscape Directory Registration
…
10 | exit | Exit (do nothing)
Enter selected action index [10]: 4
Enter System Administrator Password (sr1adm):
Select Inter-Service Communication
Index | Inter-Service Communication | Description
———————————————————————————————————-
1 | global | The HANA services will listen on all network interfaces
2 | internal | The HANA services will only listen on a specific network interface
3 | local | The HANA services will only listen on loopback interface (127.0.0.1)
The recommended value for single-host system is ‘local’
Select Inter-Service Communication / Enter Index [3]: 1
Index | Internal Network Address
——————————–
1 | none
2 | 10.97.64/19
It is recommended to select network address, which is part of an internal network
Select Internal Network Address / Enter Index [1]: 2
…
Inter-Service Communication configured
Log file written to ‘/var/tmp/hdb_SR1_hdblcm_configure_internal_network/hdblcm.log’ on host ‘host1’.
- host1/host2に相互接続のためのSSL設定を行う。(詳細は、SAP HANA SSL for Copy Database/Move Databaseを参照)
- 秘密鍵、サーバー証明書をBase64形式で抽出する
- SR1(host1)にSSLのためのPSEを作成
- SR1(host2)にSSLのためのPSEを作成
- SR1(host1), SR1(host2)のSSL設定完了後、速やかに両方をリスタートする。
- host2にデータベースレプリケーションのためのSSL設定を行う。(詳細は、SAP HANA SSL for Copy Database/Move Databaseを参照)
- SR1(host2)にDATABASE REPLICATIONのためのPSEを作成
- SR1(host2)のSSL設定完了後、速やかにリスタートする。
- SR1(host2)にDATABASE REPLICATIONのためのPSEを作成
- DATABASE REPLICATIONの為の認証情報を設定する。具体的には、host2からhost1に接続する時のid, パスワードの設定(xxxロールが必要)
- create credential for component ‘DATABASE_REPLICATION’ PURPOSE ‘host1:30001′ TYPE’PASSWORD’USING’user=”SYSTEM”;password=“Hana8787”’;
- バックアップをして、ログモードをノーマルに変える
- hana1 systemdb, db1
- hana2 systemdb
- host1上のデータベースDB1をhost2にDB1Aという名前でコピーする
- create database db1a as replica of db1 at ’host1:30001′;
- ホスト:ポート番号は、ソースシステムのsystemdbの内部通信ポートを指定
- create database db1a as replica of db1 at ’host1:30001′;
- コピーの状況をモニターする
- host1またはhost2のsystemdbに接続
- select * from SYS_DATABASES.M_DATABASE_REPLICAS;
- replication_statusにエラーが出ないか確認
- select * from SYS_DATABASES.M_DATABASE_REPLICA_STATISTICS;
- より詳細な情報
- コピー終了後、ファイナライズをして完了
- copy databaseの場合、(ソースシステム側のデータベースを残す場合)
- alter database db1a finalize replica;
- move databaseの場合、(ソースシステム側のデータベースを削除する場合)
- alter database db1a finalize replica drop source database;
- copy databaseの場合、(ソースシステム側のデータベースを残す場合)
結果
まず、プロセスの構成が変わります。以下2つはHDB infoの出力ですが、上が設定前、下が設定&複製後です。設定&複製後には新しくIndexserverが増えているのがわかると思います。
次の画像は、設定&複製後のHANA Studioです。DB1Aの接続のツリーの下にテーブルT1がありデータベース複製が成功したことがわかります。
以上
( 内容はSPS12に基づいています。)
2016年9月5日
花木敏久
SAPジャパン