会社で動かしているほうのEC-CUBEのデータベースはPostgreSQL 8.1.11 を使っていました。
PostgreSQL 8.3 系がなかなか好評な感じでしたので、PostgreSQL をアップグレードしてみます。
とか、簡単に書いてますが。。とろけそうでした。
結論としては。。アップグレードは出来るけど EC-CUBEでは 8.2系も 8.3系 も
検索やコンテンツ管理などで白飛びしたりして使うには支障が出るため、断念(爆
textテキストのキャストの問題がなんかあるそうです。。
「like」を「=」に。。とか対策もあるみたいですが、
修正が増えそうなので、結局8.1系の現最終バージョン PostgreSQL 8.1.17 にしました。
まぁ、せっかく ダンプ リストア とか初めてやりましたので覚書。
一応、CentOS 5 にyum インストールしたPostgreSQL 8.1 を PostgreSQL 8.3 にyumでアップデート
適宜読み替え必要!
# /etc/rc.d/init.d/httpd stop
# rpm -q postgresql ← postgresqlパッケージインストールチェック
postgresql-8.1.11-1.el5_1.1
■ データベース一覧の表示
# psql -U postgres -l
■■ データベースtestdbをバックアップファイルdbbackupにバックアップ
# pg_dump -U postgres testdb > /tmp/dbbackup
■■ データベースをバックアップファイルdbbackupにバックアップ(個別↑のほうがイイから不要)
# pg_dumpall > /tmp/dbbackup
# /etc/init.d/postgresql stop
# yum remove postgresql ← postgresqlパッケージアンインストール
※アンインストールしようとするパッケージに依存しているパッケージがある場合、
それらも一緒にアンインストールされるので、アンインストール対象のパッケージを確認してy応答すること。
# wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-6.noarch.rpm
# rpm -ivh pgdg-centos-8.3-6.noarch.rpm
CentOS 標準の PostgreSQL パッケージと混在しないように、base と update の定義に除外設定を追記する。
vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
exclude=postgresql* ← 除外設定を追記[updates]
name=CentOS-$releasever – Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
exclude=postgresql* ← 除外設定を追記
# yum install postgresql ← postgresqlインストール
# yum install postgresql-server ← postgresql-serverインストール
# yum install postgresql-contrib ← postgresql-contribインストール
# yum install postgresql-tcl ← インストール。。要るのか?
# vi /var/lib/pgsql/data/postgresql.conf ← PostgreSQL設定ファイル編集
?設定内容不明
# /etc/rc.d/init.d/postgresql initdb –no-locale ← データベースを初期化??
(# initdb -D /var/lib/pgsql/data –encoding=utf-8 –no-locale ← データベースを初期化??)
※initdb初期化に失敗する場合は、データフォルダ消してみる。。
「rm -rf /var/lib/pgsql/data」 や 「rm -rf /usr/local/pgsql/data」
# /etc/init.d/postgresql start ← PostgreSQL起動
# chkconfig postgresql on ← PostgreSQL自動起動設定
# chkconfig –list postgresql ← PostgreSQL自動起動設定確認
■UNIX アカウント postgresユーザー パスワードの設定
# passwd postgres
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
■PostgreSQL 内で管理するスーパーユーザー postgres にパスワードを設定
# su – postgres
-bash-3.1$ psql template1
template1=# alter user postgres password ‘パスワード’;
ALTER ROLE
template1-# \q ← データベース template1 を抜けます。
-bash-3.1$ logout ← データベースを抜けます。
■どのネットワークにサービスを提供するか設定
# vi /var/lib/pgsql/data/pg_hba.conf
最終行 「#」でエスケープして下記書き加え
local all all md5
host all all 0.0.0.0 0.0.0.0 md5
無条件OK trust 。ユーザ認証をしたければ MD5など。
■ データベースtestdbの作成
# createdb -U postgres testdb ← データベースtestdbの作成
# createdb -U postgres -E EUC_JP testdb ← データベースtestdbをEUC_JPエンコードで作成
※エンコード UTF-8 と EUC_JP がらみでエラーの場合は 「initdb」やりなおし。「–no-locale」要
■ データベースtestdbの削除(参考)
# dropdb -U postgres testdb
■■ バックアップファイルdbbackupからデータベースtestdbを復元 リストア
# psql -U postgres -e testdb < /tmp/dbbackup
# /etc/init.d/postgresql start
# /etc/rc.d/init.d/httpd start