0

デプロイサーバー(データベースサーバーではない)からデータベース移行を実行する前後に、本番データベースをバックアップしたいのですが、CentOS5マシンにPostgresql8.4サーバーがあります。データベースにアクセスするWebサイトは、MVC.Netアプリケーションを実行しているWindows 2008サーバー上にあり、ソースコードの変更をチェックアウトし、プロジェクトをコンパイルし、DBの変更を実行してから、IISに展開します。

毎日のバックアップ用にcrontabジョブバックアップを実行するようにDBサーバーを設定していますが、デプロイプロセス中にデプロイサーバーからバックアップを呼び出す方法も必要です。私が理解できることから、データベースにクライアント接続からそれ自体をバックアップするように指示する方法はありません。デプロイスクリプトの一部としてWebサーバーからpg_dumpを呼び出すと、Webサーバー上にバックアップが作成されます(望ましくありません)。COPYコマンドを見てきましたが、おそらく私が望むものが得られないでしょう。MS SQLServerを使用すると、データベースマシンにバックアップを配置するDB接続内からBACKUPコマンドを呼び出すことができます。

MySQLに関するこの投稿を見つけましたが、MySQLでサポートされている機能ではありません。Postgresは同じですか? MySQLデータベースのリモートバックアップ

これを達成するための最良の方法は何でしょうか?DBサーバーへのSSH接続を確立してからpg_dumpを呼び出す小さなアプリケーションを作成することを考えましたか?これは、SSH接続情報をサーバーに保存していることを意味しますが、可能であれば、実際には保存しません。

4

4 に答える 4

1

データベースユーザーpgbackupを作成し、すべてのデータベーステーブルに読み取り専用権限を割り当てます

シェルを使用pgbackupしてCentOSサーバーに新しいOSユーザーをセットアップします。/bin/bash

としてログインしpgbackup、パスフレーズなしでssh認証キーのペアを作成し、このユーザーが生成された秘密キーを使用してログインできるようにします。

su - pgbackup
ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ""
cp -a ~/.ssh/.id_rsa.pub ~/.ssh/authorized_keys

ファイルを作成します~pgbackup/.bash_profile

exec pg_dump databasename --file=`date +databasename-%F-%H-%M-%S-%N.sql`

Windowsでスクリプトを設定して、ssh主キーを使用して接続し、使用を承認します。データベースのバックアップを作成する以外に何もできないので、かなり安全です。

于 2012-08-02T16:28:58.440 に答える
0

これは、PostgreSQLモジュールのdblinkを使用してPL/pgSQL内からリモートデータベース接続を確立するトリガーを作成する場合に可能になると思います。

于 2012-08-01T21:21:39.007 に答える
0

pg_dump意味がわかりませんが、Windowsコンピュータから使用できると思います。

pg_dump --host=centos-server-name > backup.sql

そこにWindows版のPostgreSQLをインストールする必要があるので、pg_dump.exeインストールされますが、PostgreSQLサービスを開始したり、そこにテーブルスペースを作成したりする必要はありません。

于 2012-08-01T22:13:42.400 に答える
0

こんにちはマイクあなたは正しいです、

pg_dumpを使用すると、ローカルシステムにのみバックアップを保存できます。この例では、ベースバックアップを取るためのスクリプトをdbサーバー上に作成しました。データベースサーバーでスクリプトを実行する別のサーバーでexpectスクリプトを作成しました。

すべてのサーバーはLinuxサーバーであり、シェルスクリプトを使用してこれを実行しました。

于 2012-08-02T08:50:51.653 に答える