NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

NDB の PostgreSQL クローン DB を ソース DB 更新に揃えてリフレッシュしてみる。

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 と同じ状態にできそうです。

以上。

©2024 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。