PostgreSQLのバージョンアップの方法 環境移行



ファイルやDBデータも含めたLinuxサーバの完全移行(Miracle Linux→TurboLinux 8 ServerにOSを変更し、環境を移行して欲しい)の依頼がありました。PostgreSQLのバージョンは、7.1.2→7.2.2-3に変わります。(rpmでのパッケージ管理をご希望なので、PostgreSQLの最新バージョンではありません。)
同じバージョンであれば、pgsqlのディレクトリごとコピーしてしまえば動くのですが、7.1→7.2のようにバージョンが変わる場合は、PostgreSQLの仕様が変わるため、単なるディレクトリのコピーでは、サービスを起動することができません。
そこで、以下のようにデータベースのバックアップをとり、バージョンアップしたデータベースにリストアする必要があります。これにより、新しいバージョンでも動くDBデータの形式になります。

●PostgreSQLのバージョンアップの方法
 1.postgresユーザーで、古いデータベースのバックアップをとる。
    #su - postgres
    $pg_dumpall -o > バックアップファイル名
 2.バージョンアップ後、initdbを行い、postgresユーザーで、データの組み込みを行う。
    $psql -e template1 < バックアップファイル名
   組み込み時のログをファイルに保存する場合は、
    $psql -e template1 < バックアップファイル名 > ログファイル名 2>&1

何も問題がなければいいのですが、ログを見てみると、以下のようなエラーがでていました。

 COPY "abcde" WITH OIDS FROM stdin;
 ERROR: copy: line 127, Invalid EUC_JP character sequence found (0x8252)
 lost synchronization with server, resetting connection

『abcde』というテーブルの127行目に、EUC_JPの範囲外の文字が入っているので、エラーが起こりましたということです。PostgreSQLは、バージョン7.2から、文字コードのチェックが厳しくなったので、エラーになったようです。新しく作成されたデータベースで、該当のテーブルをselect文で抽出してみると、中身は空っぽでした。いろいろな修正方法があると思いますが、1レコードしかないので、手動で値を修正し、新しいテーブルに組み込むことにしました。2005/1/21

参考:PostgreSQLでテーブルをファイルバックアップ&ファイルからテーブルの復元方法



■ホームページ・インターネット

■パソコン・サーバ

■スペシャルリンク

ビデオ→DVDダビング
ウイルス駆除 ファイル救出
絵手紙きよしのちいさな展覧会
千葉市貸事務所
精神病院磯ヶ谷病院
建築設計事務所千葉市
千葉ノーミ株式会社
自宅で酵素風呂
介護スキンケア百歳酵素
お琴・筝の楽譜、曲集
サンキコーポレーション
DVDコピーサービス 短納期 千葉
DVD 劣化 寿命 修復、千葉市
パソコン・ネットワーク設定 千葉市
アクセスアップのリンク
自宅で手打ちそば 蕎麦作り
ホームページ作成 千葉市
Web広告 バナー広告
データ 復旧 千葉市 ハードディスク
Linkstation データ復旧 千葉市
無料レンタルサーバ比較
生活に役立つ情報
最新ゲームやってみた
防犯カメラの取り付け工事 千葉
誘導灯・非常灯・非常用照明器具のバッテリー・交換電池 価格 通販購入
百人一首 決まり字 和歌意味
釣り 堤防 防波堤ちょい投げ

ホームページ制作
CGI・JavaScript・プログラム
アクセスアップ・自動リンク
相互リンク・SEO対策

Windows
Linux
セキュリティ

■サービス・お店・会社

■ショッピング

レストラン・飲食店
弁護士・司法書士・行政書士・会計士・税理士
病院
不動産・賃貸
会社

パソコン・家電
雑貨・衣料品
食品・飲料
美容・健康食品

■趣味・生活

写真・絵画
スポーツ
テレビ・アニメ・芸能・映画
美容・健康・ダイエット
習い事・お稽古・資格
防犯・防災


Powered by アイ・コンピュータサービス

お役立ち情報:次の話題
022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061