iakioの日記 RSSフィード

2010-08-18

日本PostgreSQLユーザ会 北海道支部 勉強会

00:46 | 日本PostgreSQLユーザ会 北海道支部 勉強会 - iakioの日記 を含むブックマーク はてなブックマーク - 日本PostgreSQLユーザ会 北海道支部 勉強会 - iakioの日記

日本PostgreSQLユーザ会 北海道支部 勉強会 : ATNDに参加してきました

俺の設計にみんながダメ出しをするテーブル設計勉強会

  • prefixやpostfix、複数形の命名は予約語除けになる
  • SQL予約語多すぎhttp://www.postgresql.org/docs/9.0/static/sql-keywords-appendix.html
  • 複雑なデータ構造はJSONXMLにシリアライズして格納してしまう
  • 多対多の中間テーブルの主キーはサロゲートキーを導入するか、複合キーとするか
    • サロゲートキーを導入するなら、2つのキーは複合一意にすべき
    • 主キーを複合キーとすると、usersの外部キーをON DELETE SET NULLとかできない
    • unique(key1, key2)は一方がNULLであれば他方が同じ値でも許容する
=# create table t1(i1 int, i2 int, primary key(i1, i2));
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1"
CREATE TABLE
=# insert into t1 values(1, NULL);
ERROR:  null value in column "i2" violates not-null constraint
=# create table t2(i1 int, i2 int, unique(i1, i2));
NOTICE:  CREATE TABLE / UNIQUE will create implicit index "t2_i1_i2_key" for table "t2"
CREATE TABLE
=# insert into t2 values(1, NULL);
INSERT 0 1
=# insert into t2 values(1, NULL);
INSERT 0 1
  • ATNDはユーザーを削除できないすばらしい仕様
  • 削除フラグェ、、、

PostgreSQL9.0でレプリケーションしてみたけど何か質問ある?

趣旨:あんま詳しい説明はできないけどこんぐらいで試してみることはできますよ

インストール

/usr/pgsql-9.0/bin にパスを通す

SR/HS設定の参考資料

ポイント

  • Streaming Replicationでは、slaveがmasterに接続してログを転送する(pg_hba.conf / recovery.confのprimary_conninfo)
masterでやること

1. postgresql.confを編集

logging_collector = off
log_line_prefix='db1 %t '
port=5401

archive_mode=on
archive_command='cp %p /home/hogehoge/archive/%f'
max_wal_senders=3
wal_level = hot_standby

2. pg_hba.confを編集

local   replication   all    trust

3. ベースバックアップを作成

  • select pg_start_backup('..');
  • cp -R db5401 db5402
  • select pg_stop_backup();
slaveでやること

1. recovery.conf を作成

restore_command='cp /home/jpug_ezo/archive/%f %p'
standby_mode='on'
primary_conninfo='port=5401'

2. postgresql.confを編集

hot_standby=on

3. postmaster.pidを削除

4. 起動

質疑等
  • 最初失敗したけど何やったの?
    • recovery.confを編集したけどslaveの$PGDATAの中に入れてませんでした
  • replicationというdbは作れないの?
    • pg_hba.conf内では"replication"とクオートすればOK
  • slaveでsetval()すると?
=# SELECT setval('r_i_seq', 1000);
ERROR:  cannot execute setval() in a read-only transaction
  • slaveでLOCKすると?
=# begin;
BEGIN
=# lock r;
ERROR:  cannot execute LOCK TABLE during recovery

gishi_yamaさんから感想いただきました。RETURNINGはモダンです

北海道教員採用試験合格対策請負人北海道教員採用試験合格対策請負人 2010/09/01 19:11 はじめまして。
通りすがりです。

面白い内容のブログですね。
更新楽しみです^^

ではでは。

WiwitWiwit 2013/04/03 23:58 No quetison this is the place to get this info, thanks y'all.

nqxjiunqxjiu 2013/04/07 20:48 BjIXm6 <a href="http://hoaxqqggeaya.com/">hoaxqqggeaya</a>

ehlsdcaaniehlsdcaani 2013/04/08 09:55 JINa4S , [url=http://loganjcemztk.com/]loganjcemztk[/url], [link=http://ctykrhzlrbyj.com/]ctykrhzlrbyj[/link], http://wghzfvkrakks.com/

ychwgqkgfcychwgqkgfc 2014/03/19 23:20 anmeiqptuhsftrm, <a href="http://www.fxkwmddkmc.com/">rtgdbrqqic</a> , [url=http://www.zboyralwnn.com/]gjafdryuig[/url], http://www.pcpxifkqhj.com/ rtgdbrqqic

ゲスト



トラックバック - http://postgresql.g.hatena.ne.jp/iakio/20100818