同じインスタンス内の同じサーバー上にDb2データベース(V11.1 +)の正確なコピーを作成する必要があります。 (これは本番データベースを実行しない開発サーバーです。)
これが今のやり方です。
I readdb2move
を使用してデータベーススキームをコピーすることが可能であること。完全なコピーを実行するために使用できる簡単な方法はありますか?
これは、データベース(テスト)を新しいデータベース(テスト2)にコピーする単項の例です。
db2 create database test
db2 backup database test to /tmp
db2 restore database test from /tmp into test2
db2 connect to test2
Database Connection Information
Database server = DB2/LINUXX8664 11.1.3.3
SQL authorization ID = DB2INST1
Local database alias = TEST2
これは、データベースをコピーするもう1つの例です。今回は名前付きパイプを使用して、バックアップイメージがファイルシステムに到達しないようにします。
$ db2 create database test
$ mkfifo /tmp/pipe1 /tmp/pipe2
$ db2 restore database test from /tmp/pipe1, /tmp/pipe2 into test2 &
[1] 20744
$ bash
$ db2 backup database test to /tmp/pipe1, /tmp/pipe2
Backup successful. The timestamp for this backup image is : 20180815161749
DB20000I The RESTORE DATABASE command completed successfully.
[1]+ Done db2 restore database test from /tmp/pipe1, /tmp/pipe2 into test2
Db2 CLPは同じCLPバックエンドプロセスを使用して2つの処理を実行できないため、バックアップは別のシェルセッションで実行する必要があることに注意してください。また、インスタンスの所有者でない場合は、chmod o+w
パイプまた、もちろんパイプされたデータを別のマシンにssh
することもできます。そして、それはオンラインバックアップでも機能します(上記はオフラインバックアップです)
パイプはいくつでも、またはいくつでも使用できます。複数を使用することのパフォーマンス上の利点については、こちらをご覧ください https://www.ibm.com/developerworks/community/blogs/IMSupport/entry/DB2_Backup_performance_compression_tablespace_imbalance?lang=en
Sshを使用してバックアップイメージをリモートマシンに送信する例
mkfifo /tmp/localpipe
chmod o+w /tmp/localpipe
ssh remotehost "mkfifo /tmp/remotepipe;chmod o+w /tmp/remotepipe"
db2 backup database test to /tmp/localpipe &
ssh remotehost "cat > /tmp/remotepipe" < /tmp/localpipe &
ssh remotehost "db2 restore database test from /tmp/remotepipe into test2"