ページへ戻る

− Links

 印刷 

Gentoo Linuxな生活​/PostgreSQLのアップデートで悩む :: Nest Of Hawk

xpwiki:Gentoo Linuxな生活/PostgreSQLのアップデートで悩む

ページ内コンテンツ
  • DBのアップデートは、とても難しい。
  • 順を追って行きましょう。
    • データベース内のデータをバックアップする
    • アップデートパッケージのインストール
    • アクティブなPostgreSQLを切り替える
    • 新しいPostgreSQLにデータを突っ込む
    • PostgreSQLをコンフィギュレーションしておく
    • PostgreSQLを再起動/動作確認
    • 古いパッケージを消す
  • 終了!

DBのアップデートは、とても難しい。 anchor.png[1]

多分、重要なデータを管理するようなソフトウェアを作っている人達には常識なのですが、アップデートってとても困難なんですよね。特にやっかいなのは、旧システムで動いていたデータを、新システムに移行するとき。旧→新システム用にデータを変換しないといけないのですよ。GentooにおけるPostgreSQLの場合はどうやってやるのか、と。まとめておきまーす。

Page Top

順を追って行きましょう。 anchor.png[2]

Page Top

データベース内のデータをバックアップする anchor.png[3]

まずは、pg_dumpallコマンド使用して、SQL形式でダンプいたします。

# cd /var/lib/postgresql/8.4/data
# vi pg_hba.conf
local   all         all                               trust

この行を追加して、

# /etc/init.d/postgresql-8.4 restart

それから、pg_dumpallコマンドを使用して、SQL形式ダンプを作ります。

# su postgres
postgres@localhost ~ $pg_dumpall > pgsql.sql
Page Top

アップデートパッケージのインストール anchor.png[4]

# emerge --newuse -vuD world
Page Top

アクティブなPostgreSQLを切り替える anchor.png[5]

まず、動いているPostgreSQLを止め、eselectコマンドで切り替えます。

# /etc/init.d/postgresql-8.4 stop
# eselect postgresql list
Available postgresql installations
 8.4 <-* <-S           base-8.4.5 server-8.4.5
 9.0                        base-9.0.3 server-9.0.3

こんな感じね。これを切り替えましょー。

# eselect postgresql set-all 9.0
# eselect postgresql list
Available postgresql installations
 8.4                    base-8.4.5 server-8.4.5
 9.0 <-* <-S        base-9.0.3 server-9.0.3
# eselect postgresql update

はい。これで、アクティブなPostgreSQLのバージョンが、8.4から9.0に切り替わりました。次は新しいPostgreSQLにデータを突っ込みます。

Page Top

新しいPostgreSQLにデータを突っ込む anchor.png[6]

まずはデータベースの初期化。そして起動後psqlでやす。

# emerge --config =dev-db/postgresql-server-9.0.3
# /etc/init.d/postgresql-9.0 
# psql -f pgsql.sql template1
Page Top

PostgreSQLをコンフィギュレーションしておく anchor.png[7]

とりあえず、アクセス権限だけは必要かなーと。

# cd /var/lib/postgresql/9.0/data
# vi pg_hba.conf

アクセス権限は適宜に設定してやってね

Page Top

PostgreSQLを再起動/動作確認 anchor.png[8]

# /etc/init.d/postgresql-9.0 restart
# /etc/init.d/apache2 restart

私は、Davicalにしか使ってないので、apacheも再起動しないと有効にならないの。で、動作確認をしてみます。上手くデータが読み込めるかな~。

Page Top

古いパッケージを消す anchor.png[9]

# emerge --depclean
Page Top

終了! anchor.png[10]

いや~、なかなか大変ですね~。でも、これで手順が確立できましたよっ♪次からは安心かなっ♪


Last-modified: 2011-03-27 (日) 23:20:07 (JST) (4773d) by maruo