System Compleat.

'YZCerberos'에 해당되는 글 231건

  1. 누구...
  2. Postgresql Slony-I replication
  3. 한국민속촌. 2
  4. 남이섬.
  5. 디지털의 장점.

누구...

Stories
사용자 삽입 이미지

Bar



당신이 누구인지 더이상 궁금해하지 않겠습니다.

왜 나에게 접근했는지도 묻지 않겠습니다.

어차피 아귀가 맞지 않게 되어버린 것.

부담도, 너무 빠르다 생각하는 것도

약간의 호응이나마 없으면 하나도 안되었을 일.


앞뒤가 어긋나버린 미스테리만이 가득하게 행동했는지

그  큰 눈망울속의 슬픔도

이해할 수 없으리 만큼 이율배반 적이었던 그 몸짓도

어디론가 떠나고 싶어하지만 정작 떠나면 불안해 하며

서로 잘 모른다 하지만 정작 서로에 대한 이야기는 하지 않던

관심있다 하고  만나지는 않았던 당신에겐

무언가 생각과 어떠한 사정이 있었겠지만


그로인해 쓸데없이 조급해지고 복잡해져버린 나는

내안의 터져나올듯한 진실들로 이미 망가졌기에

혼란속에서 정리를 통한 질서를 원하였고


결국

원래 나와 같은 길을 걸을수 없었음이라 생각하며

당신의 경멸어린 눈빛 이끌어 낸 속에서

이제 고리를 놓습니다.



어차피 이런 생각 하는것도 나 혼자 일뿐,

보통 사람은 그정도의 관계면 사귀는거 아니냐고들 하지만

남들과 당신의 기준이 다르기에

안사귀고도, 안만나고도 같이 여행 다닐수 있다 생각하기에

계속 우린 아무것도 아니었다 말하기에

아직도 착각 속에 사는 나는

듣는이 없는 이별을 고합니다.



싫은 노래가 한곡 더 생겼습니다.

"수취인 불명"


누구인지도 모르는 사람을

언젠가는 다 알게 될거야 하는 판단의 오류에


대책없이 마음속에 너무 깊이 품었습니다.


이런 결말  원하지 않았지만

당신의 행동 속에서

언젠가 이렇게 될 거 같아 불안했었지만

또 이제 부정 할 수 없는 상황이니만큼.


우린 함께 떠나지 말았어야 해요.

아름 답고 행복한 기억으로 남을 가능성이 많았지만

그 이틀 밤이 나에게 안겨준 미래에 대한 환상이

이런 상황을 만들어 내었기에.


당신의 직장에서도

당신의 인생에서도

비참 하지만 난

손님이었을 뿐이니까.



이제 그 부담 지우세요.

희미했던 관심과 함께.


Postgresql Slony-I replication

Techs
Postgresql  Replication 구현 및 테스트

1. 테스트 서버

    RH9.
    
    AMD 3800+ , 2G RAM
    Pgsql Version   : 8.2.3
    Slony-I Version : 1.2.8
    
    slony-master, slony-slave 두대 모두 동일한 사양, 동일한 원판.
    
    slony-master -  192.168.3.50/16
    slony-slave  -  192.168.3.175/16
    

2. 설치

    1) Postgresql
    
        configure:
            configure --prefix=/home/postgresql --enable-debug --enable-integer-datetimes --enable-cassert --enable-thread-safety --with-tcl --with-perl --with-pam --with-ldap --with-openssl --with-python
        
        make:    
            gmake && gmake install
        
        DB initialize:
            su - postgres -c '/home/postgresql/bin/initdb -D /home/postgresql/data -E EUC_KR'
                
        postgresql.conf :
        
            listen_addresses = '*'
            port = 9999
            max_connections = 500
            work_mem = 16MB
            maintenance_work_mem = 32MB
            max_fsm_pages = 2048000
            max_fsm_relations = 80000
            
            log_line_prefix = '%t %p %x %i'
            
            
        pg_hba.conf :
            
            # IPv4 local connections:
            host    all         all         192.168.0.0/16       trust
            
        pgsql 구동
        
        
        pgbench 설치 :
        
            cd $PGSQL_SRCDIR/contrib/pgbench ; gmake && gmake install
        
        
    2) Slony-I
    
        configure :
        
            configure --prefix=/home/postgresql/slony --enable-debug --with-gnu-ld --with-pgconfigdir=/home/postgresql/bin --with-pgbindir=/home/postgresql/bin --with-pglibdir=/home/postgresql/lib --with-perltools=/home/postgresql/slony/tools --with-perlsharedir=/home/postgresql/lib
            
        make :
        
            gmake && gmake install
            
        
        create directories :
        
            cd /home/postgresql/slony
            mkdir logs archive scripts check
            
        check scripts copy :
        
            cp -a $SRCDIR/tools/*.sh  $PREFIXDIR/scripts
            

            
3. Replication 구현

    1) test DB 생성
        
        psql -h slony-master -U postgres -d template1 -p 9999
        db=#CREATE ROLE pgbench LOGIN;
        db=#CREATE DATABASE pgbench OWNER pgbench;
        
    2) test table 생성 ( slony-master )
    
        pgbench -i -s 1000 -U pgbench -d pgbench -p 9999
        
    3) slony-slave 에 table 및 기타 해당 DB 동기화
    
        psql -h slony-slave -U postgres -d template1 -p 9999
        db=#CREATE ROLE pgbench LOGIN;
        db=#CREATE DATABASE pgbench OWNER pgbench;
        db=# \q
        
        pg_dump -h slony-master -U postgres -d pgbench -p 9999 -s > schema_nodata.sql ( DDL 생성정보 dump )
        psql -h slony-slave -U postgres -d template1 -p 9999 < schema_nodata.sql
        
    4) slony-i  설정.
    
        set_pgbench_replicate.sh
        
        -----------------------------------------------------------------------------------------------------------                
            #!/bin/sh
            # Set up environment vars for slony: pg replication
            
            
            SLONIK=/home/postgresql/slony/bin/slonik
            
            
            $SLONIK <<_EOF_
            
            
                    # Replication의 이름 지정.  해당 DB에 _pgbench 와 같이 생성됨
                    
                    cluster name = pgbench;   
                    
                    # Replication Node 생성
                    node 1 admin conninfo = 'dbname=pgbench host=slony-master port=9999 user=postgres';
                    node 2 admin conninfo = 'dbname=pgbench host=slony-slave port=9999 user=postgres';
            
            
                    # Replication Init
                    init cluster ( id=1, comment = 'pgbench MASTER Node' );
            
                    # Uniq Constraint 또는 Primary key 가 없는 테이블에 키 지정.
                    # 해당 테이블에 _Slony-I_$CLUSTERNAME_rowID  bigint 컬럼 생성.
                    # primary key 가 없는 테이블을 replication 지정할때 반드시 작업해 주어야함.
                    
                    table add key ( node id = 1, fully qualified name = 'public.history' );
                    
            
                    # Replication 될 Set 및 table 설정.
            
                    create set ( id=1, origin=1, comment='tables in pgbench');
                    set add table ( set id=1, origin=1, id=1, fully qualified name = 'public.accounts', comment='account');
                    set add table ( set id=1, origin=1, id=2, fully qualified name = 'public.branches', comment='branches');
                    set add table ( set id=1, origin=1, id=3, fully qualified name = 'public.history', comment='history');
                    set add table ( set id=1, origin=1, id=4, fully qualified name = 'public.tellers', comment='tellers');
            
            
                    # Table set Ends here.
                    
                    # Create the second node ( SLAVE ) tell the 2 nodes how to connect to each other.
            
                    store node ( id=2, comment = 'pgbench SLAVE Node');
                    store path ( server = 1, client = 2, conninfo='dbname=pgbench host=slony-master port=9999 user=postgres');
                    store path ( server = 2, client = 1, conninfo='dbname=pgbench host=slony-slave port=9999 user=postgres');
                    store listen ( origin=1, provider = 1, receiver = 2);
                    store listen ( origin=2, provider = 2, receiver = 1);
            
            _EOF_        
        
        -----------------------------------------------------------------------------------------------------------                
        
    5) slonik setting 및 확인.
    
        sh set_pgbench_replicate.sh   
        
        # err 발생 유무 확인  에러가 발생하였다면
        psql -h slony-master -U postgres -d pgbench -p 9999 -c "DROP SCHEMA _$CLUSTERNAME CASCADE"
        로 스키마를 DROP 후 스크립트를 수정하여 다시 반복한다.
        
        err가 없었다면 master 및 slave DB 모두에 _$CLUSTERNAME 과 같은 스키마가 생성되었는지 확인한다.
        
        
    6) slon daemon 구동
        
        slony-master:
        /home/postgresql/slony/bin/slon pgbench "dbname=pgbench user=postgres host=slony-master port=9999" -a /home/postgresql/slony/archive -x /home/postgresql/slony/logs -d 2 2&>1 &
        
        slony-slaver:
        /home/postgresql/slony/bin/slon pgbench "dbname=pgbench user=postgres host=slony-slave port=9999" -a /home/postgresql/slony/archive -x /home/postgresql/slony/logs -d 2 2&>1 &
        
        /home/postgresql/slony/archive 에  slony 로 replication 된 sql 파일을 로그로 쌓는다.
        실제 서비스에서는 I/O 감소를 위해 hdc 또는 sdb 와 같은 백업 디스크로 경로를 바꿔 주어야 한다
        
        
        
    7) subscribe replication.
    
        start_pgbench_replication.sh 의 스크립트 제작.
        
        -----------------------------------------------------------------------------------------------------------                
            #!/bin/sh
            
            /home/postgresql/slony/bin/slonik <<_EOF_
            
                    cluster name = pgbench;
            
                    node 1 admin conninfo = 'dbname=pgbench host=slony-master port=9999 user=postgres';
                    node 2 admin conninfo = 'dbname=pgbench host=slony-slave port=9999 user=postgres';
            
                    subscribe set ( id = 1, provider = 1, receiver =2 , forward = no );
            
            _EOF_
        -----------------------------------------------------------------------------------------------------------                
        
    8)  vmstat 및 iptraf 등으로 각 테이블들이 master -> slave 로 sync 되고있는지 확인한다.
    
    
    
4. 관리

    /home/postgresql/slony/tools 에 보면 replication 관리에 필요한 스크립트들이 있다.
    
    .../slony/etc/slon_tools.conf 파일이 있는지 확인하고 없다면 slony의 소스 압축을 푼 디렉토리에서 찾아 해당 위치에 복사해 준다.
    
    
    slon_tools.conf 파일 수정.
    
        $CLUSTER_NAME = 'pgbench';
        $LOGDIR = '/home/postgresql/slony/logs/slony';
        $MASTERNODE = 1;
        
            add_node(node     => 1,
                      host     => 'slony-master',
                      dbname   => 'pgbench',
                      port     => 9999,
                      user     => 'postgres',
                      password => '');
        
    
        $SLONYSET 설정.
        
            "set_id" => 1,
            
            "table_id"    => 1,
            "sequence_id" => 1,
            
            # Primary key가 지정되어있는 테이블 리스트설정.
            "pkeyedtables" => [
                                   'TABLE1',
                                   'table2',
                                 ],
                                 
            # Primary key 는 없으나 Uniq not null 키를 가지고 있는 테이블 및 인덱스 지정.
            "keyedtables" => {
                                'table3' => 'index_on_table3',
                                'table4' => 'index_on_table4',
                            },
                            
                            
            # Primary Key 또는 uniq 키 모두 없는 테이블지정.
            # 지정하지 않고 키를 생성해도 된다.
            
            "serialtables" => ["table5"],
            
            # Replication 되어야할 sequence 지정
            
            "sequences" => ['sequence1',
                            'sequence2',
                           ],
                           
                           
                         
     
    사용 방법
    
        /home/postgresql/slony/tools 의 스크립트를 이용
        
        일부 스크립트는 직접 수행되는 것도 있고 slonik 용 스크립트를 생성해 주는 것도 있다.
        
        직접 수행되는것들로는
        
            slon_*
            
            
        slonik 용 스크립트 생성 툴은
        
            slonik_*  
            
        로 보면 된다.
        
        
        Usage는 잘 설명 되어있으나  --config-file 은 스크립트 수행시 넣어주지 않아도 된다.
        
            ex)  ./slonik_drop_node 1 > /home/postgresql/slony/scripts/drop_node1.slonik
            
                 /home/postgresql/slony/bin/slonik < /home/postgresql/slony/scripts/drop_node1.slonik
                
                
        
        replication 장애시.        
         ./slonik_failover 1 2 > /home/postgresql/slony/scripts/fail_over_masternode_to_2.slonik
        
         /home/postgresql/slony/bin/slonik < /home/postgresql/slony/scripts/fail_over_masternode_to_2.slonik
        
        
    
    
    

한국민속촌.

Hobbies
사용자 삽입 이미지

SaeMi.

한국 민속촌.


언젠가 부터 "아버지" 하고 부르며
마치 정말 자식처럼
꼭 지 필요할때만 찾아대는 사방팔방 쓸데없는 인맥 가득해 보이는
큰아들.

왜 어떤 계기로 내가 이 아이들의 아버지가 되었는지는 모르겠지만
어떤 이유에서건 필요해서 찾아 주는 사람이 있다는건 가끔
그렇구나 하고 느끼게 만들어 주지만

친한 친구만큼의 깊은 무게와 향이 묻어 나려면
아직도 한참은 더 있어야 하는가 보다.

그 전에 빨리 시집 가버렸으면 좋겠다.

남이섬.

Hobbies
사용자 삽입 이미지

막내 해정이.

글쓰고, 학교 다니고.  맘에 드는 남자친구 만나 즐겁게 살고있는

디지털의 장점.

Hobbies
사용자 삽입 이미지

이 시절
무슨 정신으로 살았는지

지금 기억을 떠올리려 용을 쓰다 보면
정작 떠오르는게 없다.


항상 술에 피부와 뇌가 젖어 있어
얼굴엔 각종 트러블이, 손은 심한 진동을  농담으로 쳐냈던 그때

난 아마 이때부터 살고있지 않았던게 아닐까.


정리 기간이라고 생각한다.