カテゴリー
Linux

PostgreSQL のデータベースを別サーバへコピーする方法メモ♪

データベースを同じサーバの PostgreSQL へコピーするコマンド

-- データベースをコピー。db1(user1、password1) から db2(user2、password2)に
-- pg_dump -U user1 -W db1 | psql -U user2 -W db2 とすると
-- 「ERROR:  ロール"user1"のメンバでなければなりません」や
-- 「WARNING:  "public"の権限を取り上げられませんでした」の
-- メッセージが出るため、スーパーユーザーで実行することで回避
pg_dump -U postgres -W db1 | psql -U postgres -W db2

データベースを別のサーバの PostgreSQL へコピーするコマンド

データベースのコピーのコマンドの前に、次の内容のパスワードファイルを作成しておく必要があります。

  • コピー元サーバで、pg_dump を実行するユーザのホームディレクトリに .pgpass ファイルを作成する
  • コピー先サーバで、psql を実行するユーザのホームディレクトリに .pgpass ファイルを作成する
# hostname:port:database:username:password
localhost:5432:*:postgres:postgrespassword

実際の別サーバへのコピーは次のコマンドで行います。

-- 別サーバに PostgreSQL データベースをコピー。db1(user1、password1) から hostname サーバ(ユーザ名 hostuser)の db2(user2、password2)に
-- ただし、事前にパスワードファイルの設定が必要
pg_dump -U postgres db1 | ssh hostuser@hostname psql -U postgres db2
カテゴリー
Linux

PostgreSQL のデータベースをコピーする方法メモ♪

PostgreSQL データベースをコピー

-- データベースをコピー。db1(user1、password1) から db2(user2、password2)に。
pg_dump -U postgres -W db1 | psql -U postgres -W db2
  • psql のプロンプトや postgres ユーザでのコマンドではなく、シェルで実行する。
  • コピー先のデータベースは予め作っておくこと。
  • PostgreSQL のユーザは postgres を使用する。
  • パイプ(|)前後の2回分、パスワードの入力が求められる。

指定するユーザについてポイント

カテゴリー
Linux

【PostgreSQL】文字コードがテンプレートの ENCODING と異なるデータベースを作成するときは、TEMPLATE template0 を追加したらエラー回避できました♪

文字コードがテンプレートの ENCODING と異なるデータベースを作成するためにTEMPLATE template0 を追加する SQL の例

CREATE DATABASE testdb WITH OWNER testuser ENCODING 'UTF8' TEMPLATE template0;

よく使う SQL は、DB、ユーザ、ユーザにパスワードを設定する SQL でございまして、次はその例ですの♪

-- ユーザの作成(スーパーユーザ無効、DB作成無効、ユーザ作成無効、パスワード設定)。データベースの作成
-- デフォルト ENCODING と異なる文字コードでDB作成する場合は、TEMPLATE template0 を追加
CREATE USER testuser WITH NOSUPERUSER NOCREATEDB NOCREATEROLE PASSWORD 'testpassword';
CREATE DATABASE testdb WITH OWNER testuser ENCODING 'UTF8';

PostgreSQL  8.4で新しいデータベースを作成しようとしましたら、次のようなエラーとなってできませんでした><。

メッセージはうろ覚えですので間違っているかもしれませんが、大体次のようなメッセージでした。

カテゴリー
コンピューター

VirtualBox で LAMP + PostgreSQL + APC + XDebug + PHPUnit の開発環境構築手順♪

前提

  • CentOS 5.9 インストール済み
  • CUI で SSH 接続可能
  • CentOS に IP アドレス割り振り済み

つまり、VPS 契約した直後のような状態です。

インストールして最低限の設定をするパッケージ

  • Apache
  • PHP
    • APC
    • XDebug
    • PHPUnit
  • MySQL
  • PostgreSQL

LAMP + PostgreSQL → LAMPP!と思っていのですけれども、別の構成ですでにこのような名前がありました><。ぜんぶまとめて強引に略称にすれば、、、LAMPPPAX (らんぷぷぱっくす)でしょうか♪

それはともかく、開発環境ですので SQL サーバーとして MySQL に加え、PostgreSQL をインストールします。

はじめるまえに

わたくしは今回の手順を行う前に時刻同期やメモリ節約として次のことを行なっています。

それでは、はじめます。

1.Apache、MySQL、PHP、PostgreSQL、APC、XDebug、PHPUnit インストール

カテゴリー
Linux

【不満】PostgreSQL 最初の一歩!ユーザと DB 作成!確認!【CentOS 5.9】【実際ニュービー】

yum でインストール直後の PostgreSQL 最初の一歩として、

  • PostgreSQL スーパーユーザー postgres にパスワード設定
  • PostgreSQL 内のユーザ testuser 作成
  • PostgreSQL 用の Linux ユーザ testuser 作成
  • PostgreSQL 内のユーザ testuser 用のデータベース testdb 作成
  • データベース testdb、PostgreSQL ユーザ testuser、Linux ユーザ testuser の削除

をやってみようと思います。

カテゴリー
コンピューター

【試行錯誤】PostgreSQL 最新版インストールにすごく苦労しましたのでメモ!!!【virtualbox で LAPP 開発環境構築したい】

ポイント

  • 最新版のコマンドは postgresql ではなかった。postgresql-9.2 だった(2013年3月時点、PostgreSQL バージョン 9.2)
  • PostgreSQL 最新版を CentOS 5.9 に yum でインストールするにはリポジトリを導入する。2013年3月時点ではバージョン 9.2 だからかリポジトリは pgdg92 という名前だ。
  • yum でインストールするとき、パッケージ名は postgresql92-server としないと最新版がインストールされなかった(2013年3月時点、PostgreSQL バージョン 9.2)。postgresql ではなかった。
  • CentOS の postgres ユーザに変更してから psql コマンドで、PostgreSQL にログインできる。

1.【実際にやってみて】PostgreSQL インストール後にリポジトリを導入してもアップグレードできません><