PostgreSQL
ludia install
-------------------
http://sourceforge.jp/projects/ludia/
ここから withdeps を取ってきました。
解凍した、INSTALLファイルに見やすく書いてあります。
- PosgreSQL : http://www.postgresql.org/
ludia-1.1.0
- Senna : http://qwik.jp/senna/FrontPageJ.html
- MeCab : http://mecab.sourceforge.jp/
MeCab をインストール
-------------------
MeCab0.96 が最新なのでそれを取ってくる。
http://sourceforge.net/project/showfiles.php?group_id=177856
$ ./configure --with-charset=utf8
$ make
$ su
# make install
辞書も最新に。
mecab-ipadic-2.7.0-20070610
$ ./configure --with-charset=utf8
$ make
$ su
# make install
Sennaのインストール
-------------------
$ ./configure
$ make
$ su
# make install
nfkcは時間がかかるのでと書いてありますがほんとに時間掛かります>。<;
とはいっても
celeron 400 MHz
mem 640M
で10分くらいなので大したことないです。(計ってないけどそんなもんですた。)
// インストール後に、 $SENNA_HOME ディレクトリを作成します。::
# mkdir /var/senna
// また、Sennaは $SENNA_HOME/log/senna.log というファイルにログを出力します。
// ログを取得したい場合は、ログフォルダを作成し、
// PostgreSQLサーバの実行ユーザが書き込みをできるように権限を設定してください。::
# mkdir /var/senna/log
# chown postgres:postgres /var/senna/log
Ludiaのインストール
-------------------
// アーカイブを展開し、以下の要領でビルドとインストールを行います。::
$ ./configure
$ make
$ su
# make install
// pg_configコマンド、senna-cfgコマンドのインストール先にPATHが設定されていない場合、
// 以下のようにそれぞれのpathをconfigureオプションで指定してください。::
$ ./configure --with-pg-config=/usr/local/pgsql/bin/pg_config \
--with-senna-cfg=/usr/local/bin/senna-cfg
---------------------
早速利用
設定をインストール
$ psql -f /usr/share/pgsql/pgsenna2.sql blackdb
# vi /var/lib/pgsql/data/postgresql.conf
#---------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#---------------------------------------------------------------------------
#custom_variable_classes = ''
# list of custom variable class names
custom_variable_classes = 'ludia'
ludia.max_n_sort_result = 10000
ludia.enable_seqscan = on
ludia.sen_index_flags = 31
ludia.max_n_index_cache = 16
ludia.initial_n_segments = 512
# /etc/rc.d/init.d/postgresql restart
postgresql サービスを停止中: [ OK ]
postgresql サービスを開始中: [ OK ]
CREATE INDEX index_title ON item_table USING fulltextb((title::text));
256168レコード
34,382.261 ミリ秒
でした。
検索してみます。
SELECT * FROM item_table WHERE title @@ 'てすと';
おぉ早い^-^。
322.017 ミリ秒
SELECT * FROM item_table WHERE title like '%てすと%';
1,450.610 ミリ秒
1/4くらいですね。とりあえず、満足です。
===========================================================================
セカンダリサーバにも 入れたのでデータを移してみる。
[A] のテーブルデータをダンプ
pg_dump bbtune -U postgres > /tmp/pg/bbtune
このデータをBへ入れる。一旦空にして。
[B]
dropdb bbtune
createdb bbtune
// まずは、ludiaを利用可能に
psql -f /usr/share/pgsql/pgsenna2.sql bbtune
次にデータを流し込む
/usr/bin/psql bbtune -U postgres < /tmp/pg/bbtune
OK!問題なく動きました!
pgpoolを通しても問題無さそうです。
2007-07-31 05:13:16
画像登録にOIDを利用していたので失敗しました。。。
oid は使わないほうが良さそうです。
http://pgpool.sraoss.jp/
pgpool-IIのチュートリアルを読むとそのまま使えます。
・同期レプリケーション
・ロードバランス負荷分散(SELECT)
が出来るのでとてもいいですね。
インストールは簡単です。
が一箇所エラーが出たので
チュートリアルにも書いてありますが、postgresql-develを入れると大丈夫です。
$ ./configure
configure: error: libpq is not installed or libpq is old
libpq.so.4.1とかはあるけど?
ヘッダファイルやlibpq.aがないとダメっぽい。
# yum install postgresql-devel
# yum update postgresql-*
make
make install
で問題なく
設定も簡単でした。
pgpool.conf
listen_addresses = '*'
port = 9111
replication_mode = true
load_balance_mode = true
backend_hostname0 = '192.168.234.198'
backend_port0 = 5432
backend_weight0 = 1
backend_hostname1 = '192.168.234.199'
backend_port1 = 5432
backend_weight1 = 1
変えたのはこれだけです。
postgresql を外部からつなげる様に設定するだけです。
// data/pg_hba.conf
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.234.0/24 trust
// data/postgresql.conf
listen_addresses = '*'
あとは、iptables で postgresql と pgpoolのポートを自分のネットワークでつなげるようにするだけ!
! 起動
# pgpool > /tmp/pg.log 2>&1
! 終了
# pgpool stop
問題ないです。
ひとまず、同期バックアップが出来るので落ちたとき安心?です。
-----A----- -----B-----
- httpd - (httpd)
- [A]pgpool -
↓ 同期・分散 ↓
- postgres - postgres
----------- -----------
こんな感じで[A]だけpgpoolが動いています。
まだhttp部分は分散されていないので、
httpdを[A]で動かした場合は、Bが落ちてもBのpostgresqlは無視するので大丈夫そうです。
[A]が落ちても大丈夫なように[B]でもpgpoolをすぐ動かせるようにしておきます。
[A]が落ちたら、[B]へhttpdとpgpoolを切り替えるだけでOKです。
データが同期しているというだけでも相当なことです。
次に、pound で httpdも分散してみたいと思います。
□問題あったのは・・・
OID と データ移行です。
元のデータをただコピーしても上手く行かないというか
OIDを使ってなければ特に問題ありませんが・・・
2007-07-26 08:00:15
pg_dumpでバックアップも出来るのですが、
まずは、定義を保存してみます。
# /usr/local/pgsql/bin/pg_dump -s -u drdb > drdb_dump
User name: user
Password:
-s はスキーマ (定義)だけ抽出
-u はユーザ認証する。
データも全部SQLで取るには
-d
データのみは
-a
これでテーブルやビューなど、すべて保存できるので
簡単に複製できます。
2007-06-23 02:46:16
png を入れなおそうと
http://www.libpng.org/pub/png/libpng.html
libpng の 1.2.18を入れてみて
gd の最新版を入れて
http://www.libgd.org/Main_Page
GD-2.0.35RC4 released
ビルドしなおして、
さらにPHPもリビルドと思いconfigure したけど
GDからlibpng が読めていないというエラーが出て止まる。
(表示されるエラーはmysqlでもconfig.logにgdのエラーが出ている。
これは?と思い。
libgd.so: undefined reference to `png_get_IHDR@PNG12_0'
のようなPNGLIBの関数が読めないようなエラーが出ていた。
mysqlのところで止まったのはたまたまだそこでエラーが反映?されたのだと思う。
http://zlib.net/
1.2.3
を更新してみて
ついでに
libpng 1.0.26に変えようと思い。
で gd 、phpとビルドに成功したけど
libpngは1.2を読んでるみたいだから zlibが良かったのか?よくわからない。
けど。
今回のコンフィグオプション
php-5.2.3]# ./configure --with-apxs2 --enable-force-cgi-redirect --enable-zend-multibyte --enable-mbstring --enable-mbstring --enable-mbsrt-enc-trans --enable-mbregex --enable-trans-sid --with-dbx=shared --enable-sqlite-utf8 --with-sqlite=shared --with-pgsql=/usr/local/pgsql --with-mysql=/usr/local/lib/mysql --enable-pdo=shared --with-pdo-sqlite=shared --with-pdo-mysql=shared --with-pdo-pgsql=shared --with-openssl=/usr --with-soap=yes --with-zlib --with-gd --with-jpeg-dir --with-freetype-dir --with-ttf --with-png-dir --with-curl --enable-calendar
2007-06-06 04:01:22
PDO_PGSQL DSN
PDO:: pgsqlLOBCreate
PDO:: pgsqlLOBOpen
PDO:: pgsqlLOBUnlink
PDOでそのまま使えるのかと思ったら、pgsql 特有のLOB関数を使わないといけなかった。。。
2007-05-26 03:44:15
わかりません。。。
パフォーマンスが落ちなければ問題ないとは思いますが。
◎部分としては、管理のしやすさです。
バックアップ、りかばリをデータと一括でできると。
今までは別でやってきましたが試しに一緒に入れてみます。
ただ、キャッシュ機能的な使い方をするので、その分HDD領域は倍使うと考えられます。
どうなるでしょうか?
オラクルの解説。
データベースに画像を格納するメリット
http://otndnld.oracle.co.jp/products/database/orac・・・
まぁオラクルを使わないので、どれほどのパフォーマンスかはあれですが。
利点としては、これ以外にないといったところでしょうか
2007-05-26 02:53:35
・クラス内のメンバーは、$this-> が付いていないとその関数ないの変数と判断されてしまう!
・PDOクラス、PDOStatment の errorInfo errorCode が取れない・・・
SQLが間違っていたんだけど、何が間違っているのか分からない。。。
Postgresql 用のDNS
pgsql:host=localhost port=5432 dbname=dash user=jun password=sure
こんな感じ。
MySQL
mysql:host=localhost,dbname=dash,
みたいな感じ。
違うので注意。
2007-05-16 18:48:05
Postgresqlのコマンド群で
/usr/local/pgsql/bin
postgresになっておく
# su postgres
ユーザを作成
# createuser junx
Shall the new role be a superuser? (y/n) y
psql を利用して、パスワードを設定。
$ ./psql
Welcome to psql 8.2.3, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgres=# alter user junx password \'xxxx\';
ALTER ROLE
postgres=# \q
2007-05-16 16:51:48