:::: MENU ::::

SOS JobSchedulerでPostgreSQLのバックアップJOBを動かしてみた②


こんにちは!sovaでは会社の仲間たちなどのような特定グループ内でクローズドなコミュニケーションを取ることが出来るCircleBoardというアプリを運営しています。全て無料なので、興味のある方は是非使ってみて下さい。
https://circleboard.me

JobSchedulerでpostgresのバックアップJobを構成する前回からの続きです。
前回はJobSchedulerのインストールまで実施したので、今回はJob実行対象サーバへのJobSchedulerエージェントのインストールからスケジュール定義、実行確認までしたいと思います。

環境:CentOS6.3

②JobSchedulerエージェントのインストール

  • デスクトップ環境のインストール

JobSchedulerのエージェントもGUI環境が必要です。初期インストールでデスクトップ環境をインストールしていなかったので、まずはGNOMEデスクトップ環境をインストールします。
インストールは下記のコマンド一発でインストール出来ます。(232パッケージあったので、気長に待ちます。)

  • JobSchedulerエージェントのインストール

サーバ側と同じようにエージェントもインストールしていきます。インストールはGUI環境で実施します。JobScheduler IDはサーバに合わせておいた方がわかりやすいでしょう。

これでJobSchedulerエージェントがインストールされ、インストール後に自動で起動します。

③JOEの設定

まずはJobを登録するためのGUIエディターであるJOEを起動してみましょう。64bit版のCentOSを使っているので、起動する前に64bit OSに対応させなければいけません。対応方法についてはこのサイトを参考にしました。

SWTの64bit版をダウンロードし、指定の場所にファイルを配置します。

次にjava1.7の64bit版をインストールします。環境変数のjavaは1.6を指したままにします。

次にJOE起動スクリプトをjdk1.7のバイナリーを参照するように書き換えて起動します。

これでヘッダーにJOEと書かれたGUIが起動したはずです。続いてJOBの定義をしていきます。が、その前にまずはPostgreSQLのDBバックアップ用のシェルスクリプトを作成します。

④DBバックアップ用のシェルスクリプト作成

まずはバックアップ処理を実行するJobSchedulerのユーザ:schedulerに対してsudoコマンドをパスワードなしで実行させる権限を与えます。
セキュリティ的にどーなの?と思うのですが、他にいい方法を知らず。。。

PostgreSQLのバックアップは9.1から使用可能になったpg_basebackupコマンドを使用します。
このコマンドを使うためには少し設定変更が必要でした。

試しにpg_basebackupを使ってみましょう。rootで下記コマンドを発行すればベースバックアップが取得できると思います。

データが取得出来ているか確認します。下記のファイルが作成されていれば無事にバックアップが取得出来ています。

続けてバックアップ用のシェルスクリプトを作成します。結果的には下記のシェルスクリプトになりました。(何気に初の自作シェルスクリプトだ)
シェルスクリプトはこのブログを参考にして作成しました。

⑤Jobの登録とスケジュールの定義

最後に作成したシェルスクリプトをJobSchedulerへ登録し、バックアップスケジュールの登録をします。
バックアップは毎日朝6:00に実施するように設定します。

windows端末からCentOS側のJobSchedulerへ接続する

JOEではFTPによる接続でJOBを作成することが出来ます。設定についてはこのブログを参照して実施しました。
今回はoperationという名前のホストに対してPostgreSQLのバックアップJobを定義していきます。
格納フォルダ(JobSchedulerではホッとフォルダと呼びます)はliveディレクトリ配下にoperationディレクトリを作成し、その中にJob定義(xmlファイル)を格納します。
FTPによる接続が成功すれば下記の画面がJOEにて開かれると思います。

Process Classesの定義

JobSchedulerではProcess Classに対してリモートホストの定義をします。今回はlocalhostに対するJob実行になる為、定義する必要はないですが、明示的に稼働するホストを定義する意味で作成します。
設定は下記の画像の通りに実施します。
pic1

続いてJobの定義をします。下記画像の通りに定義します。
pic3
pic4
次にスケジュールの定義をします。スケジュールの定義はSchedulesから実施します。
下記画像のようにEvery Dayにて6:00にスケジューリングするように定義します。
pic21
これでJobの定義が出来ました。JOCを開くとJobが登録されていることが確認出来ます。
pic7
試しに一回だけバックアップを流してみましょう。下図のように即時実行を選択すればJobが指定したホストで実行されます。
CentOS側でバックアップが無事に取得出来ているか確認してみて下さい。
pic8

※firewallを稼働させている場合はagentと通信するポートを開放しなければいけないようです。
 マニュアルには59999以下のポートを使用するとしか書いておらず、どこから開放すればいいのかわかりませんでした。。。
 取り合えず40000:59999で開放したらJobがリモートで稼働しました。

同様に別サーバのPostgreSQLサーバのバックアップJobを定義すればJobの管理を一元的に実施することが出来ます。
以上でJobSchedulerにてPostgreSQLのバックアップJobを定義することが出来ました。
JobSchedulerはこれ以外にも色々と機能がありそうなので、引き続き触って見たいと思います。


So, what do you think ?