zabbixで使用しているpostgreSQLのDBサイズの縮小方法について
CentOS 6.8
zabbix 2.2.11
postgresql 8.4.20
zabbixで使用しているDBサイズが大きくなってきたので、バックアップ(dump)からリストアをして、サイズを小さくしようとしています。
postgresqlのバックアップ/リストアを実施した経験があまりないので、いろいろ調べながらやっているのですが、
初歩的なことなのですが、バックアップ/リストアの際にzabbixサーバの停止は必要なのでしょうか。
※稼働中だとデータの整合性が取れない為、バックアップ時は停止した方が良いと考えています。
また、リストア時ですが、「-c」を付けてリストアするのと一度DBをDROPしてからリストアするのはどちらが良いのでしょうか。
-----------------------
・zabbix用DB名:zabbix_db
■バックアップ
# su - postgres
$ pg_dump --format=custom zabbix_db > zabbix_db_dump.custom
■リストア
# su - postgres
$ pg_restore -c -C -d postgres zabbix_db_dump.custom
もしくは
$ pg_restore -C -d postgres zabbix_db_dump.custom
~~~~~
-c
--clean
再作成前にデータベースオブジェクトを整理(削除)します。 (対象のデータベースの中にオブジェクトがまったくない場合でも、害のないメッセージをいくつか出力するかもしれません。)
-C
--create
リストア前にデータベースを作成します。 --cleanも同時に指定されている場合、接続する前に対象データベースを削除し再作成します。
このオプションがある場合、-dで指定したデータベースは最初のDROP DATABASEとCREATE DATABASEコマンドの発行時にのみ使用されます。 そして、すべてのデータはアーカイブ内に記述された名前のデータベースにリストアされます。
-----------------------
TNK - 投稿数: 4769
停止した方が良いと思います。
あと、書かれていたコマンドラインで本当に目的のバックアップと
リストアができるのか、テスト用の環境を作成して確認するように
してください。
私なら、綺麗な状態の環境にしたいのであれば、明示的に削除して
からにします。
あと、サイズを小さくするだけなら、VACUUMやREINDEXを使うとい
う方法もあるのではないかと私は思うのですが、いかがでしょうか。
kasugai - 投稿数: 72
回答頂きありがとうございます。
動作について、テスト用の環境を用意して確認しました。
データの削除は、以下のGithubにあったスクリプトで削除してdumpとvacuum fullの確認しました。
https://github.com/jalexandre0/zabbix/blob/master/scripts/housekeeping.sh
※pg_restoreで-c と-C が一緒に使用できなかったので、一度DBはDROPしてから オプション -C -d を使用しました。
その結果、dumpリストアの方がZabbixの停止時間が短かったので、dumpリストアで行おうと思います。
VACUUMとREINDEXですが、あまりサイズを小さくできなかった為、今回見送りました。