• ベストアンサー

Linux環境下(CentOS)でPostgreSQL8.1の自動バックアップを取りたいのですが、四苦八苦しています。

Linux環境下(CentOS)でPostgreSQL8.1の自動バックアップを取りたいのですが、四苦八苦しています。 rootユーザにてcrontab -eで【10 0 * * * pg_dump -U postgres hogeraradb > /home/backupuser/backup.sql】と入力し保存しました。 しかし実際にバックアップが取れているのかなど確認の方法もわからず困っています。 思いつく範囲ではpg_dumpの設定も必要なのかも知れないのですが、どの画面で何を入力すればいいのかもわかりません。 何かアドバイスをよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hothunter
  • ベストアンサー率54% (6/11)
回答No.1

まず、rootユーザでコマンドラインからバックアップがとれていますか? 適切なアカウントでなければ危険ですが・・・。  とりあえず、コマンドラインからバックアップ取れていることを前提に。  cronから呼び出されるものを直接のコマンドではなくシェル スクリプトに記載します。  スクリプト内に判定や、ログを取得しメールで送信するロジック を仕組みます。  場合によっては別サーバに転送したり、ファイル一覧を取得して 動作を見たり、バックアップの世代管理を入れることもできます。  私は個人的なものでは日次バッチでローカルに一世代、メールで 自分宛に送信するようにして動かしています。当然、業務用途では 運用ポリシー等を勘案して動かしています。

timemachin
質問者

補足

ご回答ありがとうございます。 とりあえずPostgresユーザでコマンドラインでpg_dump demo1 > demomo100を実行したところバックアップは取れていました。 次の段階としてはシェルスクリプトを作成し、そこで何かをバックアップのための内容を記述するということでしょうか? よろしくお願いします。

関連するQ&A

  • PostgreSQL バッチでバックアップ

    PostgreSQL 8.4に関する質問です。 サーバ:Linux、PostgreSQL 8.4 クライアント:Windows 7 Windowsマシンから、バッチファイルでサーバ上のPostgresのバックアップを取りたいのですが、 以下のコマンドをバッチファイルに記述して実行すると、 「パスワード:」というプロンプトが出て処理が止まってしまいます。 pg_dump.exe -h [DBサーバのIP] -U [ユーザ名] -F custom -b -v -f "C:\test.backup" "test" パスワードを入れればバックアップはできるのですが、 パスワードの入力まで完全自動化するにはどうすればいいでしょうか。 Linux上のPostgresはSSL接続のみ許可するようになっています。 Windowsのタスクで毎日バックアップする運用を想定しています。

  • LinuxでpostreSQLを毎日バックアップしたく、crontab

    LinuxでpostreSQLを毎日バックアップしたく、crontabに設定して 定時にpostgres.shファイルを実行させようとしています。 ファイルの中に、 if [ -x /usr/local/pgsql/bin/pg_dump ]; then とあるのですが、これは、 /usr/local/pgsql/bin/pg_dumpが存在する場合 という意味で合っていますでしょうか? よろしくお願いします。

  • Linux上のpostgreSQLデータをWindowsでみたい

    サーバA(OS:Linux Fedora Core 4、データベース:PostgreSQL 8.0 で運用しているシステムがあり、毎日そのデータを下記のdumpコマンドで PostgreSQLの全データをバックアップしています pg_dumpall > postgres.out  サーバAを触るのは怖いので、別のマシンB(Windows-Xp)に postgresql-8.2.6をインストールしました。 このバージョンは、postgresqlとともに、pgAdmin3というGUIの管理 ツールもついていると聞きここに、サーバAからバックアップされている postgres.outをrestoreして pgAdmin3でデータベース・テーブル等をみようとしています (postgres.out)を使ってのリストアの仕方は (1)(postgres.out)をpostgresqlの/binディレクトリの中に入れる (2)psqlのメニューから次のコマンドを打つ psql -d manmg -f postgres.out   (3)pgAdmin3を立ち上げるとサーバAのDBは追加されているようなのですが  テーブルは(0)となって見えません マシンBの方のPostgreSQLについてはインストールしたままでサーバA のpostgresqlの設定等は何もしていません 何か設定する所はあるのでしょうか 上記手順でlinuxから吐出されたバックアップデータをWindowマシンに リストアする方法は間違っていないのでしょうか よろしくお願いします。

  • mysqlの自動バックアップ

    crontabを実行してmysqlのバックアップを取ろうとしています。 まず、以下のunixコマンドでバックアップできることを確認しました。 mysqldump -u *** -p*** abc_db > /file/dump/db_backup_`date +%Y%m%d-%H%M%S`.sql これをcrontabで実行するためにphpファイルにして以下のように記述しました。 <?php $output = shell_exec('mysqldump -u *** -p*** abc_db > /file/dump/db_backup_`date +%Y%m%d-%H%M%S`.sql'); echo "<pre>$output</pre>"; ?> このファイルを実行すると以下のメッセージが返されます /***/sql_backup.php: line 1: ?php: そのようなファイルやディレクトリはありません /***/sql_backup.php: line 2: syntax error near unexpected token `(' /***/sql_backup.php: line 2: `$output = shell_exec('mysqldump -u *** -p*** abc_db > /file/dump/db_backup_`date +%Y%m%d-%H%M%S`.sql');' phpでコマンドを実行するにはshell_execを使うとあり、試してみたのですが、こういう方法では使えないのでしょうか? 最終的にはcrontabを使ってmysqlのバックアップが取れれば良いので、他に方法があるようでしたら教えて頂ければ助かります。 宜しくお願いします。

    • 締切済み
    • PHP
  • crontab でスクリプトが動かない

    一応環境ですが、 CentOS5 PostgreSQL8 crontabでDBのバックアップを取ろうと思っていますがうまく動作しません。 以下のスクリプトファイルを作成し、crontabで毎日実行しようと考えています。 /home/hogehoge/Maintenance.sh/pg_dumpall.sh (内容)-------------------------------------------------------- #!/bin/sh cd /home/hogehoge/Maintenance.sh pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump chmod 600 pg_dumpall.dump -------------------------------------------------------- crontab (内容)-------------------------------------------------- 0 4 * * * /home/hogehoge/Maintenance.sh/pg_dumpall.sh -------------------------------------------------------- しかし、時間になってもpg_dumpall.dump ファイルが作成されません。 crontab自体は動作しています。(ファイル作成だけをしたらちゃんとできてました) 0-59/2 * * * * /bin/date > /home/sweets/Maintenance.sh/hoge pg_dumpall.sh の内容を1行ずつ実行しても正常にできます。 cd /home/hogehoge/Maintenance.sh pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump chmod 600 pg_dumpall.dump なにかほかにも設定しなくてはいけないことがあるのでしょうか?

  • Linux+PostgreSQLでの設定

    こんにちは。 Linux+PostgreSQLでpg_hba.confの設定がよく分からず困っています。 リモートからは使用せず、localhostのみの接続を許可したいのですが、 どのように設定すればいいのでしょうか? CentOS5+PostgreSQL8.1.9です。

  • PostgreSQLの差分バックアップに関して

    よろしくお願いいたします。 ■経緯 Linuxサーバ & PostgreSQL 8.4.9 において開発を行っております。 データベースを日時でバックアップをとる案件がございまして、 pg_dumpでは差分バックアップができないことが判りました。 ネット等でも検索したところ、 「 PostgreSQL 8.0 以降では、前回バックアップした内容からの差分バックアップ、 特定時間までの巻き戻しが可能です 」 との書き込みも見つけたのですが、具体的な方法を調べてみたのですが、 目的の情報に、いまだたどり着いておりません。 ■質問内容 当然、私どもの使用するデータの種別、内容、に寄るところではありますが PostgreSQLを差分バックアップを取る場合に、 一般的にどのようなバックアップツール?(WAL?pg_rman?)を使用して、 差分を抽出しているのか、参考に教えていただけますでしょうか。 また具体的なコマンドの使用方法等を解説しているページなどもありましたら よろしくお願いいたします。

  • Postgresqlで8GB超えのバックアップ

    こんにちは。 Postgresqlでpg_dumpで8GBを超えるとバックアップに失敗してしまいます。 不要なデータを削除しても8GBを超えているようでバックアップに失敗してしまいます。 どうにかバックアップを取る手段はありますでしょうか? すいませんが、知っている方、ご教授お願いします。 環境は、Windwos2003Server、Powergres6(PostgreSQL8.X系)です。 宜しくお願いします。

  • RedHat ES4でPostgreSQLを自動起動したい

    RedHatにPostgreSQL8.2.3をインストールしました。 インストール自体は他のディストリビューションでも何回も行っているので 特に問題なく終了しました。しかし自動起動がうまくいきません。 /etc/init.d/postgresqlを以下の内容で作成しました。 ----- ここから ----- #!/bin/sh # chkconfig: - 87 13 # description: PostgreSQL8.2 # processname: postmaster # pidfile: /var/run/postgresql.pid pidfile=/var/run/postgresql.pid . /etc/init.d/functions case "$1" in start) su - postgres -c "pg_ctl start" touch $pidfile ;; stop) su - postgres -c "pg_ctl stop -m fast" rm -f $pidfile ;; restart) su - postgres -c "pg_ctl stop -m fast" su - postgres -c "pg_ctl start" ;; *) echo "Usage: /etc/rc.d/init.d/postgresql {start|stop}" esac exit 0 ----- ここまで ----- このスクリプト自体はrootにて # /etc/init.d/postgresql start できちんとDBが起動する事は確認しています。これを以下のようにして 自動起動の設定を行いました。 # chmod 755 /etc/init.d/postgresql # chkconfig --add postgresql # chkconfig --level 35 postgresql on # chkconfig --level 06 postgresql off 問題はここからで、この状態で再起動を行うと、起動時にpostgresqlを 実行するところでとまってしまうのです。pidファイルなどゴミが無い事は 確認済みなのですが・・・その状態でもネットワークログインは出来るので プロセスを確認すると以下のようなプロセスが残った状態でとまっていました。 root 2765 0.0 0.0 5920 760 ? S 00:47 0:00 initlog -q -c /etc/rc5.d/S87postgresql start root 2766 0.0 0.0 6916 1336 ? S 00:47 0:00 /bin/sh /etc/rc5.d/S87postgresql start root 2769 0.0 0.0 6124 1276 ? S 00:47 0:00 su - postgres -c pg_ctl start この状態で # kill 2765 2766 2769 とすると起動がまた再開されるので、PostgreSQLの起動時にとまっている事は 明らかです。 いったい何が原因なのか、さっぱりわかりません。 どなたかヒントだけでもいただけたら幸いです。 よろしくお願いします。

  • Passwordを設定したPostgreSQLのバックアップなどができ

    Passwordを設定したPostgreSQLのバックアップなどができない。 PostgreSQLのバックアップを行おうとしているのですがバックアップSHELLを実行 するとパスワードを聞いてきます。 pg_dump -Udbuser -s DBANME > /DbBkup/dbbackup.out そこで実行ユーザのHOMEディレクトリに.pgpassを置き localhost:*:DBNAME:dbuser:dbpass と登録し、実行しところ、これでもパスワードを聞いてきます。 最終的にはcronで実行したいのですが、解決方法がわかりません。 お願いいたします。