Nutanix Database Service(NDB)には Copy Data Management 機能があり、ソース DB のスナップショットで、クローン DB をリフレッシュできます。今回は、PostgreSQL のクローン DB を、テスト データを格納したソース DB のスナップショットでリフレッシュしてみます。
今回の内容です。
1. 今回の環境
今回は、下記の投稿で用意したソース DB と クローン DB を使用しています。
ソース DB と、クローン DB が1つずつ存在します。
1-1. ソース DB
NDB 管理上の DB 名は「pgsql15-02」で、NDB タイムマシンは「pgsql15-02_TM」です。
DB Server VM は「pgsql15-vm-02」という名前で、「vectordb」という DB が作成されています。
vectordb にはテーブルが作成してあり、データはインサート済みです。
[postgres@pgsql15-vm-02 ~]$ psql --dbname=vectordb --username=postgres psql (15.6) Type "help" for help. vectordb=# \dt List of relations Schema | Name | Type | Owner --------+-------------------------+-------+---------- public | langchain_pg_collection | table | postgres public | langchain_pg_embedding | table | postgres (2 rows) vectordb=# select count(*) from langchain_pg_embedding; count ------- 763 (1 row) vectordb=#
1-2. クローン DB
NDB 管理上の DB 名は「vectordb-clone-01」です。タイムマシンは、ソース DB と同じ「pgsql15-02_TM」が表示されています。
クローン DB にも、vectordb という DB が作成されています。
の DB Server VM は vectordb-clone-vm-01 という名前にしてあったのですが、文字数が長かったためか「vectordb-clone」になっています。クローン DB の vectordb には、この時点ではテーブルが未作成です。
[postgres@vectordb-clone ~]$ psql --dbname=vectordb --username=postgres psql (15.6) Type "help" for help. vectordb=# \dt Did not find any relations. vectordb=# vectordb=# exit [postgres@vectordb-clone ~]$
そして、OS は7日ほど起動したままです。
[postgres@vectordb-clone ~]$ uptime 14:28:25 up 7 days, 1:56, 1 user, load average: 0.00, 0.01, 0.00
2. ソース DB のタイムマシン スナップショット作成
テスト用のテーブルが作成され、テーブルにデータがインサートされている状態のソース DB(に割り当てられている NDB のタイムマシン)で、スナップショットを作成します。
ソース DB で、「スナップショット」をクリックします。
スナップショット名を入力して、「作成」をクリックします。
- スナップショット名: after-data-loading
少し待つと、スナップショットが作成されます。「オペレーション」画面で、タスクの完了を確認しておきます。
タイムマシンの画面でも、スナップショットが作成されたことを確認できます。
3. クローン DB のリフレッシュ
ソース DB のスナップショットで、クローン DB をリフレッシュしてみます。
クローン DB の画面で「リフレッシュ」をクリックします。ちなみに画面右上にある水色の「リフレッシュ」リンクは、ただの画面更新です。
スナップショットを選択して、「リフレッシュ」をクリックします。
- スナップショット: after-data-loading (タイムスタンプ)
しばらく待つと、クローンのリフレッシュが完了します。
4. リフレッシュされた クローン DB の様子
リフレッシュされたクローン DB では、OS が起動されたまま、部分的に仮想ディスクのスナップショット リストアなどが実施されています。vectordb DB に再接続して確認すると、テーブルが作成され、ソース DB のスナップショットと同じ状態になっています。
[postgres@vectordb-clone ~]$ uptime 14:48:30 up 7 days, 2:16, 1 user, load average: 0.01, 0.11, 0.07 [postgres@vectordb-clone ~]$ psql --dbname=vectordb --username=postgres psql (15.6) Type "help" for help. vectordb=# \dt List of relations Schema | Name | Type | Owner --------+-------------------------+-------+---------- public | langchain_pg_collection | table | postgres public | langchain_pg_embedding | table | postgres (2 rows) vectordb=# select count(*) from langchain_pg_embedding; count ------- 763 (1 row) vectordb=#
このように、開発環境構築などの目的でクローンしておいた DB を、効率的にソース DB と同じ状態にできそうです。
以上。