본문 바로가기
서버구축 (WEB,DB)

솔라리스10에서 PostgreSQL 를 설정 및 실행하는 방법

by 날으는물고기 2009. 2. 17.

솔라리스10에서 PostgreSQL 를 설정 및 실행하는 방법

출처 : http://blog.sdnkorea.com/

이 글은 솔라리스 시스템 관리자 및 데이타베이스 전문가가 솔라리스10에서 PostgreSQL 을 설정하고 운용하는 방법에 대해 다룹니다. 이 가이드는 PostgreSQL 을 솔라리스 서비스 관리 설비(SMF) 를 이용해서 설정하고 실행하는 방법을 다루고 솔라리스 존이라고 불리는 솔라리스 컨테이너 상에서 PostgreSQL 을 설정하는 방법을 설명합니다. 이후에 여러분들은 PostgreSQL 데이타베이스를 테스해할 수 있습니다.

이 가이드는 솔라리스10 6/06 이후 버전의 솔라리스를 사용하고 있다고 가정합니다. 솔라리스10 6/06 버전 부터 PostgreSQL 은 운영체제와 완벽하게 통합될 수 있고 솔라리스에 설치될 수 있습니다. 만약 이전 버전의 솔라리스10 (예를 들어 솔라리스 10 1/06 혹은 솔라리스10 3/05 버전 같은) 을 사용하고 있다면 PostgreSQL 은 시스템에 설치되어 있을 것입니다. 패키지를 찾는 방법과 인스톨하는 방법은 이 가이드의 후반에서 설명됩니다.

이 가이드는 모든 것을 설명하지는 않습니다. 그리고 여기서 다루는 모든 기술들에 대한 상세사항들도 다루지 않습니다. 그러나 이글의 마지막에서 제공하는 문서 링크들을 통해서 관리자가 좀 더 자세히 배울 수 있도록 하고 있습니다.

순서
  1. 솔라리스용 PostgreSQL: 개요
  2. PostgreSQL 을 처음 시작하기
  3. PostgreSQL 과 솔라리스 서비스 관리 설비 통합하기
  4. PostgreSQL 을 솔라리스 존에 설정하고 실행하기
  5. 솔라리스10 이전 버전에 PostgreSQL 설치하기
  6. 패키지 파일 위치
  7. 솔라리스용 PostgreSQL 패키지 설치하기
  8. 솔라리스 패치 설치하기
  9. 솔라리스 패키지 제거하기
  10. 요약
  11. 추가 정보

솔라리스용 PostgreSQL: 개요

PostgreSQL 는 매우 강력한 오픈 소스, 엔터프라이즈-클래스에 다양한 기능을 제공하는 관계형 데이타베이스 시스템입니다. 15년 이상 개발이 되고 있고 안정성, 데이타 무결성, 정확성 그리고 이식성 측면에서 검증된 아키텍쳐를 통해 그 명성을 얻고 있습니다. 또한 그림, 소리, 혹은 비디오 같은 대용량 바이너리 오브젝트의 저장을 지원합니다. 그리고 C/C++, 자바, Perl, Python, Ruby, Tcl, ODBC 를 위한 네이티브 프로그래밍 인터페이스를 가지고 있습니다.

PostgreSQL 은 다룰 수 있는 데이타의 양과 수용할 수 있는 동시 사용자 측면에서 매우 확장성이 좋습니다. 현재 실제 production 환경으로 4테라 바이트 이상의 데이타를 관리하고 있는 예가 있습니다.

오 픈 소스 소프트웨어 배치에 대한 요구 증가에 대응하기 위해 썬은 솔라리스 용 PostgreSQL (솔라리스용으로 최적화 한 PostgreSQL) 을 솔라리스10 6/06 버전에 통합시킴으로써 in the Solaris 10 6/06 엔터프라이즈 클래스의 고객에게 오픈 소스 표준을 기반으로 하는 새로운 기술을 제공합니다. 
 

PostgreSQL 을 처음 시작하기

솔라리스10 6/06 을 성공적으로 인스톨 하였다면(혹은 이전 버전의 솔라리스10 에서 PostgreSQL 패키지를 설치했다면) 데이타베이스를 시작시키기 전에 몇가지 수행해야할 단계들이 있습니다.

  1. PostgreSQL 을 관리할 솔라리스 유저와 그룹을 생성합니다. 만약 현존하고 있는 유저를 사용하려 한다면 단계 2번으로 넘어갑니다.
    주의: PostgreSQL 은 루트 유저로 실행될 수 없습니다.

    예를 들어 "porstgres" 라는 유저를 만들고 이 유저를 "postgres" 라는 그룹에 지정하려면 다음의 커맨드를 루트 권한으로 실행합니다. /export/home 디렉토리가 있는지 반드시 확인합니다:
    # groupadd postgres 
    # useradd -c 'PostgreSQL user' -d /export/home/postgres -g postgres -m -s
    /bin/bash postgres
  2. 다음 단계는 데이타베이스를 생성할 디렉토리를 결정하고 퍼미션이 올바르게 지정되어 있는지 확인하는 것입니다. 기본 장소는 /var/lib/pgsql/data 이지만 어느곳으로도 변경할 수 있습니다. 사실 production 환경에서는 용량과 증가속도 그리고 퍼포먼스와 가용성을 고려하여 고유의 파일 시스템 파티션에 위치시켜야 합니다.

    솔라리스 유저 "postgres" 를 기본 디렉토리와 함께 사용하기 위해 다음의 명령어를 통해 소유권과 퍼미션을 설정합니다:
    # chown postgres /var/lib/pgsql/data 
    # chmod 700 /var/lib/pgsql/data
  3. 이제 데이타베이스 클러스터를 생성할 준비가 되었습니다. "postgres" 혹은 여러분이 선택한 유저를 이용해 로그인 한 다음 initdb 커맨드를 실행합니다.

    /var/lib/pgsql/data 내에 데이타베이스 클러스터를 생성하기 위해 다음의 커맨드를 실행합니다:
    $ initdb -D /var/lib/pgsql/data
  4. PostgreSQL 는 이제 다음의 명령을 이용해서 시작 될 수 있습니다:
    $ pg_ctl -D /var/lib/pgsql/data -l postmaster.log start
  5. 이제 실행되고 있는 데이타베이스를 테스트할 수 있습니다.

    기본 포트에서 실행되고 있는 "postgres" 데이타베이스에 접속하기 위해 다음의 명령어를 실행합니다:
    $ psql postgres

데이타베이스를 설정하려면 단계 3번에서 사용했었던 데이타베이스 클러스터 디렉토리 내에 postgresql.conf 파일을 수정합니다. 솔라리스에서의 튜닝 팁은 http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp 을 참고하시기 바랍니다.

 

PostgreSQL 과 솔라리스 서비스 관리 설비 통합하기

솔라리스 서비스 관리 설비(SMF) 는 어플리케이션 서비스들을 관리자가 단일한 방법으로 관찰하고 관리할 수 있는 퍼스트-클래스 오브젝트 형태로 변환함으로써 표준화된 관리 메카니즘을 만들었습니다. 이렇게 함으로써 관리되고 있는 서비스들이 관리자의 실수로 종료 되었을때, 소프트웨어 프로그래밍 에러에 의해 종료되었을때, 하드웨어의 문제로 인해 멈췄을때, 자동으로 재시작 될 수 있습니다. SMF 는 사용하기 간단합니다. 개발자들은 간단한 서비스 manifest(XML 파일) 을 각 어플리케이션에 추가시켜 줌으로써 현존 하는 대부분의 어플리케이션을 SMF 의 장점을 이용하도록 변환 할 수 있고 SMF 커맨드를 통해서 서비스 설정을 임포트 하고 활성화 할 수 있습니다.

아래의 SMF 서비스 manifest 와 쉘 스크립트는 PostgreSQL 을 솔라리스 SMF 와 통합시키는데 필요 합니다.
주의: SMF 서비스 manifest 는 다음 솔라리스10 업데이트에 통합될 것입니다. 다음의 단계를 통해서 manifest 를 SMF 리파지토리에 임포트 합니다.

  1. 아래의 XML 코드를 "postgresql.xml" 이라는 파일 이름으로 /var/svc/manifest/application/database 에 저장합니다. 만약 디렉토리가 존재하지 않는다면 새로 생성해 줍니다.
    <?xml version="1.0"?>
    <!DOCTYPE service_bundle SYSTEM
    "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
    <!--
    Copyright 2006 Sun Microsystems, Inc. All rights reserved.
    Use is subject to license terms.

    CDDL HEADER START

    The contents of this file are subject to the terms of the
    Common Development and Distribution License (the "License").
    You may not use this file except in compliance with the License.

    You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    or http://www.opensolaris.org/os/licensing.
    See the License for the specific language governing permissions
    and limitations under the License.

    When distributing Covered Code, include this CDDL HEADER in each
    file and include the License file at usr/src/OPENSOLARIS.LICENSE.

    If applicable, add the following below this CDDL HEADER, with the
    fields enclosed by brackets "[]" replaced with your own identifying
    information: Portions Copyright [yyyy] [name of copyright owner]

    CDDL HEADER END

    ident "%Z%%M% %I% %E SMI"

    NOTE: This service manifest is not editable; its contents will
    be overwritten by package or patch
    operations, including operating system upgrade. Make customizations
    in a different file.
    -->

    <service_bundle type='manifest' name='postgresql'>

    <service
    name='application/database/postgresql'
    type='service'
    version='1'>

    <!--
    Wait for network interfaces to be initialized.
    -->
    <dependency
    name='network'
    grouping='require_all'
    restart_on='none'
    type='service'>
    <service_fmri value='svc:/milestone/network:default' />
    </dependency>

    <!--
    Wait for all local filesystems to be mounted.
    -->
    <dependency
    name='filesystem-local'
    grouping='require_all'
    restart_on='none'
    type='service'>
    <service_fmri value='svc:/system/filesystem/local:default' />
    </dependency>

    <exec_method
    type='method'
    name='start'
    exec='/lib/svc/method/postgresql start'
    timeout_seconds='300' />
    <exec_method
    type='method'
    name='stop'
    exec='/lib/svc/method/postgresql stop'
    timeout_seconds='300' />

    <exec_method
    type='method'
    name='refresh'
    exec='/lib/svc/method/postgresql refresh'
    timeout_seconds='60' />

    <!--
    We define two instances of PostgreSQL as examples.
    -->

    <instance name='default' enabled='false'>
    <method_context>
    <method_credential user='postgres' group='postgres' />
    </method_context>

    <!--
    Make sure the data configurable property points to the
    appropriate database directory.
    -->

    <property_group name='postgresql' type='application'>
    <propval name='data' type='astring'
    value='/var/lib/pgsql/data' />
    <propval name='log' type='astring'
    value='postmaster.log' />
    </property_group>

    </instance>

    <instance name='postgres' enabled='false'>

    <method_context>
    <method_credential user='postgres' group='postgres' />
    </method_context>
    <!--
    Make sure the data configurable property points to the
    appropriate database directory and port number in
    postgresql.conf is different than the first instance.
    -->
    <property_group name='postgresql' type='application'>
    <propval name='data' type='astring'
    value='/var/lib/pgsql/data2' />
    <propval name='log' type='astring'
    value='postmaster.log' />
    </property_group>
    </instance>

    <stability value='Evolving' />

    <template>
    <common_name>
    <loctext xml:lang='C'>
    PostgreSQL RDBMS
    </loctext>
    </common_name>
    <documentation>
    <manpage title='postgres' section='1M' />
    <doc_link name='postgresql.org'
    uri='http://postgresql.org' />
    </documentation>
    </template>

    </service>

    </service_bundle>

    manifest 의 기본 인스턴스는 데이타베이스 유저가 postgres 이고, 데이타베이스 클러스터 디렉토리는 /var/lib/pgsql/data 이며 postmaster 로그 파일은 postmaster.log 입니다. 만약 이전의 어떠한 것이라도 현 환경과 다르다면 위의 XML 을 해당 사항에 맞게 바꾸거나 manifest 파일이 임포트 된 다음 svccfg 커맨드를 이용해서 변경하시기 바랍니다. 아래의 예제를 살펴 봅시다.

  2. 다음의 쉘 스크립트를 "postgresql" 라는 이름으로 저장합니다.
    #!/sbin/sh 
    #
    # CDDL HEADER START
    #
    # The contents of this file are subject to the terms of the
    # Common Development and Distribution License (the "License").
    # You may not use this file except in compliance with the License.

    #
    # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    # or http://www.opensolaris.org/os/licensing.
    # See the License for the specific language governing permissions
    # and limitations under the License.
    #
    # When distributing Covered Code, include this CDDL HEADER in each
    # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
    # If applicable, add the following below this CDDL HEADER, with the
    # fields enclosed by brackets "[]" replaced with your own identifying
    # information: Portions Copyright [yyyy] [name of copyright owner]

    #
    # CDDL HEADER END

    # Copyright 2006 Sun Microsystems, Inc. All rights reserved.
    # Use is subject to license terms.
    #
    # ident "%Z%%M% %I% %E SMI"
    . /lib/svc/share/smf_include.sh

    # SMF_FMRI is the name of the target service. This allows multiple instances
    # to use the same script.

    getproparg()
    { val=`svcprop -p $1 $SMF_FMRI`
    [ -n "$val" ] && echo $val
    }

    PGBIN=/usr/bin
    PGDATA=`getproparg postgresql/data`
    PGLOG=`getproparg postgresql/log`

    if [ -z $SMF_FMRI ]; then
    echo "SMF framework variables are not initialized."
    exit $SMF_EXIT_ERR
    fi

    if [ -z $PGDATA ]; then

    echo "postgresql/data property not set"
    exit $SMF_EXIT_ERR_CONFIG
    fi

    if [ -z $PGLOG ]; then

    echo "postgresql/log property not set"
    exit $SMF_EXIT_ERR_CONFIG
    fi

    case "$1" in
    'start')
    $PGBIN/pg_ctl -D $PGDATA -l $PGDATA/$PGLOG start
    ;;

    'stop')
    $PGBIN/pg_ctl -D $PGDATA stop
    ;;

    'refresh')
    $PGBIN/pg_ctl -D $PGDATA reload
    ;;
    *)

    echo $"Usage: $0 {start|refresh}"
    exit 1
    ;;

    esac
    exit $SMF_EXIT_OK
  3. 쉘 스크립트를 /lib/svc/method 아래에 "postgresql" 이라는 이름으로 저장합니다.

  4. 퍼미션을 555로 변경하빈다. 파일을 이 디렉토리에 복사하기 위해서는 적절한 쓰기 권한을 가지고 있어야 합니다.

  5. SMF manifest 를 다음의 명령어를 이용해서 임포트 합니다:
    # cd /var/svc/manifest/application/database 
    # /usr/sbin/svccfg import postgresql.xml
  6. 초기에 두개의 서비스 인스턴스는 모두 비활성화 되어 있습니다. 다음의 커맨드를 이용해서 상태를 확인해 봅시다.
    주의: 각각 인스턴스의 전체 서비스 네임 혹은 fault management resource identifier (FMRI) 는 각각 svc:/application/database/postgresql:default 와 svc:/application/database/postgresql:postgres 입니다. 그러나 postgresql:default 와 postgresql:postgres 로 축약할 수 있습니다:
    # svcs postgresql
  7. 다음의 커맨드를 이용해서 기본 인스턴스의 서비스를 시작시킵니다:
    # /usr/sbin/svcadm enable postgresql:default
    이 지점부터 PostgreSQL 프로세스는 솔라리스 SMF 의 관리를 받습니다. 그리고 관리자는 상태를 svcadm 커맨드를 이용해서 변경할 수 있습니다. 만약 서비스가 어떠한 이유로 종료되었다면 SMF 재시작 데몬이 서비스를 재시작하려고 시도할 것입니다. 그리고 비활성화 되지 않았다면 재부팅 시에 서비스는 시작될 것입니다.

    postgresql.xml 의 설정가능한 프로퍼티들(user, data 혹은 log) 은 manifest 파일이 임포트 된 이후에도 변경이 가능합니다. 그렇게 하기 위해 여러분들은 (a) 서비스를 비활성화 시키고, (b) 프로퍼티 값을 변경하고 리프레시 하고, (c) 서비스를 재시작 합니다. 아래의 두개의 예제는 관리 유저와 데이타 디렉토리를 변경하는 것을 보여 줍니다.

    기본 인스턴스의 관리 유저를 "foo" 로 변경하기 위해 아래의 명령을 실행합니다:
    # svcadm disable postgresql:default 
    # svccfg -s postgresql:default setprop method_context/user = "foo"
    # svcadm refresh postgresql:default
    # svcadm enable postgresql:default
    기본 인스턴스의 데이타베이스 클러스터 디렉토리를 "/pgdata" 로 변경하기 위해 아래의 명령을 실행합니다:
    # svcadm disable postgresql:default 
    # svccfg -s postgresql:default setprop postgresql/data = "/pgdata"
    # svcadm refresh postgresql:default
    # svcadm enable postgresql:default
    SMF 에 대한 좀 더 자세한 정보는 smf(5) 멘페이지 혹은 온라인 문서 http://docs.sun.com/app/docs/doc/817-19 ··· a%3Dview 를 참고하시기 바랍니다.  
     

PostgreSQL 을 솔라리스 존에 설정하고 실행하기

솔라리스 존은 솔라리스 컨테이너 기술의 일부분으로 운영체제를 가상화 하는데 사용 되고 어플리케이션을 실행을 위한 독립적이고 안전한 환경을 제공합니다. 존은 가상화된 운영체재 환경으로 하나의 솔라리스 운영 환경 내에서 생성 됩니다. 존을 생성하면 다른 시스템에 완전히 독립적인 어플리케이션 실행 환경을 만드는 것입니다. 이러한 독립성은 한 존에서 실행되고 있는 프로세스들이 다른 존에서 실행되고 있는 프로세스들을 모니터링 하거나 영향을 주지 못하도록 합니다. 프로세스가 슈퍼유저 권한으로 실행되더라도 다른 존에 어떠한 영향도 미칠 수 없습니다.

  • 글로벌존: 모든 솔라리스 시스템은 하나의 글로벌 존을 가지고 있습니다. 글로벌 존은 시스템 하드웨어에 의해 부팅 될 수 있는 완전히 동하는 솔라리스 설치본을 포함하고 있습니다.
  • 논-글로벌존: 가상화 기술로써 운영체제 환경을 가상화 해주고 프로세스들의 네임스페이스를 독립시켜 줍니다. 두가지의 논-글로벌 존 루트 파일 시스템 모델이 존재하는데 하나는 sparse 이고 다른 하나는 whole 입니다. sparse 루트 존 모델은 오브젝트 공유를 최적화 시켜 줍니다. whole 루트 존 모델은 최고의 설정가능성을 제공합니다.
    > Sparse 루트 존: sparse 루트 존 모델은 오브젝트의 공유를 최적화 합니다. 그러나 유연하지 못합니다. 예를 들어 다음의 디렉토리가 글로벌존과 함께 공유 되고 있습니다: /lib, /platform, /sbin, /usr. 결과적으로 이러한 디렉토리들은 오직 읽기 전용 모드 만이 가능할 것입니다.
    > Whole 루트 존: 이 모델은 최고의 유연성을 제공합니다. 모든 파일 시스템은 존마다 고유 합니다. 이 모델의 장점은 글로벌 존 관리자가 그들의 존 파일 시스템 레이아웃을 조정할 수 있는 기능을 제공합니다. 예를 들어 임시 패키지 혹은 써드-파티 패키지를 설치할 수 있다는 것을 의미 합니다.

    솔라리스 컨테이너 기술에 대한 좀 더 자세한 정보는 다음의 온라인 링크를 참조 하시기 바랍니다:
    http://docs.sun.com/app/docs/doc/817-1592.


솔라리스 존 설치하기
PostgreSQL 을 솔라리스 존에서 실행할때에는 몇가지 고려해야할 것들이 있습니다.
  • PostgreSQL 을 글로벌 존에 설치하고 각각 다른 PostgreSQL 인스턴스를 sparse 루트 존에 실행하는 것. PostgreSQL 바이너리는 모든 존에의해 공유 될 것이지만 데이타는 그렇지 않습니다. 이 방법은 동일한 바이너리를 바라보게 함으로써 PostgreSQL 의 업그레이드를 아주 간단하게 할 것입니다.
  • PostgreSQL 을 whole 루트 존에 설치함으로써 각각의 다른 존이 그들 고유의 바이너리를 가지게 할 수 있음. 이 접근법은 서로 다른 존에서 여러버전의 PostgreSQL 을 실행할 수 있습니다.
  • 1번 과 2번을 조합해서 사용하는 방법. PostgreSQL 을 글로벌 존에 설치하고 몇몇 sparse 존을 생성해서 공유 바이너리를 이용해서 PostgreSQL 의 몇몇 인스턴스를 실행하도록 하고 또한 몇몇 whole 루트 존을 생성함으로써 각각 고유의 PostgreSQL 을 실행할 수 있도록 하는 방법.

다음의 예제는 첫번째 접근법을 보여 줍니다. 즉 PostgreSQL 바이너리를 글로벌 존에 설치하고 sparse 존 을 이용해서 프로세스를 실행합니다.

솔라리스 존을 생성하기 전에 존이 어디에 위치할지 디렉토리를 결정합니다. 이 예제에서 존은 /export/zones/pg_zone 에 설치 될 것입니다. 이 디렉토리의 접근 권한을 오직 유저에게만 read, write, execute 퍼미션으로 지정하시기 바랍니다 (예) chmod 700 /export/zones/pg_zone).



존의 생성, 설치, 및 부팅

주의: 존 설정에 대한 더 상세한 정보와 단계별 안내는 솔라리스 컨테이너 HOWTO 가이드 sun.com/solaris/howtoguides 를 참고하시기 바랍니다.

  1. 새로운 존을 설정하고 정의하기 위해 다음의 커맨드를 이용합니다:
    global# zonecfg -z pg_zone
    이 커맨드는 새로운 존 설정을 시작하기 전에 "pg_zone: No such zone configured" 라는 메세지를 리턴할 것입니다. 이제 "zonecfg:email-zone>" 프롬프트를 통해 zonezfg 쉘에 있음을 확인 할 수 있습니다.

  2. 아래의 커맨드를 이용해서 존을 설정합니다:
    zonecfg:pg_zone> create 
    zonecfg:pg_zone> set zonepath=/export/zones/pg_zone
    zonecfg:pg_zone> set autoboot=true
    zonecfg:pg_zone> add net
    zonecfg:pg_zone:net> set address=10.6.222.74/24
    zonecfg:pg_zone:net> set physical=ipge0
    zonecfg:pg_zone:net> end
    zonecfg:pg_zone> verify
    zonecfg:pg_zone> commit
    zonecfg:pg_zone> exit
    주의: "address" 와 "physical" 을 인터페이스 카드의 IP 주소와 이름에 맞게 적절하게 변경합니다.

    이 시점에서 존 설정 파일이 /etc/zones/pg_zone.xml 에 생성됩니다.

  3. 다음의 커맨드를 이용해서 존을 설치 합니다:
    global# zoneadm -z pg_zone install

    몇 분 정도의 시간이 소요 될 것입니다.

  4. 설치가 완료되면 다음의 커맨드를 이용해서 설치된 존의 상태를 살펴 봅니다:
    global# zoneadm list -iv
  5. 존을 running 상태로 변환시킴으로써 존을 부팅 시킵니다. 존은 installed 상태 혹은 ready 상태에서 다음의 명령을 이용해서 부팅 가능합니다:
    global# zoneadm -z pg_zone boot
  6. 다음의 커맨드를 이용해서 존 콘솔에 로그온 합니다:
    global# zlogin -C pg_zone

    제일 처음 콘솔레 로그인 하면 몇가지 질문들에 대한 답변을 하게 됩니다.

이 시점에서 부터 새롭게 생성된 존이 사용 가능합니다. 이제 존에 PostgreSQL 설정을 진행할 수 있습니다.



솔라리스 존에서 PostgreSQL 실행하기
"PostgreSQL 을 처음 시작하기" 섹션의 지시를 순차적으로 따라하면서 PostgreSQL 을 설정하고 실행할 수 있습니다.


존에서 파일시스템 마운트하기
  1. 논-글로벌 존에서 파일 시스템을 마운트 하려면 다음의 항목을들 존 설정파일 (pg_zone.xml) 에 추가시켜야 합니다:
    global# zonecfg -z pg_zone 
    zonecfg:pg_zone> add fs
    zonecfg:pg_zone:fs> set type=ufs
    zonecfg:pg_zone:fs> set special=/dev/dsk/c1t1d0s0
    zonecfg:pg_zone:fs> set raw=/dev/rdsk/c1t1d0s0
    zonecfg:pg_zone:fs> set dir=/pg_log
    zonecfg:pg_zone:fs> end
    zonecfg:pg_zone> verify
    zonecfg:pg_zone> commit
    zonecfg:pg_zone> exit

"special", "raw", 그리고 "dir" 프로퍼티를 여러분의 환경에 맞게 수정합니다.

 
 
 

솔라리스10 이전 버전에 PostgreSQL 설치하기


패키지 얻어오기

패키지는 http://pgfoundry.org/projects/solarispackages/ 에서 다운로드 가능하고 앞으로는 PostgreSQL FTP 사이트와 미러 사이트 http://www.postgresql.org/ftp 를 통해 다운로드가 가능할 것입니다.


솔라리스용 PostgreSQL 패키지

아래의 테이블은 모든 패키지들과 각 패키지들의 용도를 나열했습니다. 각 패키지 내의 전체 파일 목록은 각 패키지내의 pkgmap 파일을 참고하시기 바랍니다.

패키지

설명

SUNWpostgr-libs

SUNWpostgr-libs 패키지는 PostgreSQL 클라이언트 프로그램 및 인터페이스를 위한 기본 공유 라이브러리들을 제공 합니다. 만약 다른 PostgreSQL 패키지 혹은 PostgreSQL 서버에 접근해야 하는 클라이언트를 사용한다면 반드시 이 패키지를 설치해야 합니다.

SUNWpostgr

원격 혹은 로컬의 PostgreSQL 서버의 데이타베이스를 다루고자 하면 여러분은 이 패키지가 필요 합니다. 또한 SUNWpostgr-server 패키지를 설치 할때도 필요 합니다..

SUNWpostgr-contrib

SUNWpostgr-contrib 패키지는 PostgreSQL 배보판 내에 포함되어 있는 contributed 패키지를 포함하고 있습니다.

SUNWpostgr-devel

SUNWpostgr-devel 패키지는 PostgreSQL 데이타베이스 관리 서버에 직접 접근 하거나 ecpg 가 포함된 C Postgres 전처리기를 가지고 있는 C 혹은 C++ 어플리케이션을 컴파일하는데 필요한 헤더 파일과 라이브러리 파일들을 포함하고 있습니다. PostgreSQL 서버와 통신하는 어플리케이션을 개발하려 한다면 이 패키지를 설치해야 합니다.

SUNWpostgr-docs

SUNWpostgr-docs 패키지는 문서들의 SGML 소스와 PDF 포맷의 문서, 그리고 추가 문서들을 포함하고 있습니다. PostgreSQL 문서 프로젝트에 기여하길 원하거나 문서를 출력하고자 한다면 이 패키지를 설치 하시기 바랍니다.

SUNWpostgr-server

SUNWpostgr-server 패키지는 PostgreSQL 서버를 생성하고 실행할 수 있는 프로그램들을 포함하고 있습니다. 여러분 고유의 PostgreSQL 데이타베이스를 생성하고 유지하길 원할때 혹은 PostgreSQL 서버를 가지고 있을때 SUNWpostgr-server 패키지를 설치해야 합니다. 또한 SUNWpostgr 패키지와 필수 요구 패키지들도 설치해야 합니다.

SUNWpostgr-server-data

SUNWpostgr-server-data 패키지는 기본 데이타 디렉토리를 생성하고 데모 데이타베이스를 포함하고 있습니다.

SUNWpostgr-tcl

SUNWpostgr-tcl 패키지는 Pgtcl 클라이언트 라이브러리와 관련 문서들을 포함하고 있습니다.

SUNWpostgr-jdbc

SUNWpostgr-jdbc 패키지는 PostgreSQL 데이타베이스에 접근 하려는 자바 프로그램을 위한 .jar 파일들을 포함하고 있습니다.

SUNWpostgr-pl

SUNWpostgr-pl 패키지는 PL/Perl, PL/Python 프로시저 언어를 포함하고 있습니다. PL/Pgsql 은 서버 패키지의 코어중의 일부입니다.


표 1—솔라리스용 PostgreSQL 패키지

 
 
 

패키지 파일 위치

솔라리스와의 호환을 위해서 솔라리스용 PostgreSQL 패키지는 PostgreSQL 문서에 기술되있는 기본 위치와는 다르게 여러 곳에 설치됩니다. PostgreSQL 은 /usr/local/pgsql 에 실행파일, 소스 그리고 다양한 데이타가 들어 있는 서브디렉토리와 함께 설치 됩니다.

서로 다른 배포판은 권장 파일 위치가 각각 다릅니다. 특히 문서 디렉토리는 /usr/doc, /usr/doc/packages, /usr/share/doc, /usr/share/doc/packages, 혹은 이와 비슷한 경로가 될 수 있습니다. 솔라리스상의 위치는 아래와 같습니다:

패키지

위치

Executables

/usr/bin

Libraries

/usr/lib

Documentation

/usr/share/doc/pgsql-x.y.z
/usr/share/doc/pgsql-x.y.z/contrib

Contrib

/usr/share/pgsql/contrib

Data

/var/lib/pgsql/data

Backup Area

/var/lib/pgsql/backup

Templates

/usr/share/pgsql

Procedural Languages

/usr/lib/pgsql

Development Headers

/usr/include/pgsql

Other Shared Data

/usr/share/pgsql


Table 2—패키지 파일 위치

 
 
 

솔라리스용 PostgreSQL 패키지 설치하기

이 섹션은 오직 솔라리스10 3/05 혹은 솔라리스10 1/06 배포판에만 적용 됩니다.

단시간에 PostgreSQL 을 올리고 실행시키기 위해 패키지의 일부분만을 설치할 수 있습니다. 위의 표를 통해 좀 더 자세한 정보를 확인하시기 바랍니다. 몇가지 시나리오를 살펴 봅시다:

  • 오직 Postgres 서버를 실행하고자 한다면, SUNWpostgr-libs, SUNWpostgr, SUNWpostgr-server-data, SUNWpostgr-server 을 설치 합니다.
  • 오직 Postgres 클라이언트를 실행하고자 한다면,SUNWpostgr-libs, SUNWpostgr 를 설치 합니다.

만약 패키지가 다른 패키지에 의존하고 있다면 이러한 의존 패키지들을 먼저 설치해야 합니다. 인스톨시에 이러한 의존성에 대한 정보가 통보 됩니다.

솔라리스 패키지는 pkgadd 커맨드를 통해서 설치 됩니다. 이 커맨드는 소프트웨어 패키지의 배포 미디어 혹은 디렉토리에서 시스템으로 파일을 복사 합니다.

이 섹션에서는 기본적인 설치 설명을 제공함으로써 패키지를 설치하고 올바르게 설치 됐는지 확인 할 수 있도록 합니다.

  1. 패키지를 다운로드 하고 unzip 혹은 untar 합니다.

  2. 소프트웨어 패키지를 시스템에 추가 시킵니다:
    # pkgadd -d device-name [ pkg-abbrev...]

    device-name 은 패키지의 위치를 지정합니다. device-name 은 전체 디렉토리 경로 이름 혹은 테잎, 플로피 디스크 혹은 이동식 디스크가 될 수 있습니다.

    pkg-abbrev 은 추가시킬 하나 혹은 그 이상의 패키지 이름(공백으로 구분됨)입니다. 생략된다면 pkgadd 는 사용 가능한 모든 패키지를 설치 합니다.

    예를 들어 다음의 커맨드는 SUNWpostgr-libs 패키지를 현재 디렉토리로 부터 설치할 것입니다:

    # pkgadd -d . SUNWpostgr-libs

모든 필요 패키지들을 설치한 다음에는 상위에 "PostgreSQL 을 처음 시작하기" 섹션을 참고해서 데이타베이스를 실행하시기 바랍니다.

 
 
 

솔라리스 패치 설치하기

솔라리스10 3/05 혹은 1/06 에 PostgreSQL 을 설치하고 있다면 PL/Python 프로시저 언어를 사용하기 전에 Python 패치 12606-01 을 설치해야 합니다. Python 은 다음의 링크에서 다운로드 가능합니다: http://pgfoundry.org/projects/solarispackages.

솔라리스에 기본적으로 제공되는 'patchadd' 그리고 'patchrm' 의 멘페이지를 참고하시기 바랍니다. 패치를 설치하려면 다음의 단계를 따릅니다:

  1. 패치를 다운로드 하고 unzip, untar 합니다.

  2. 패치를 시스템에 추가 시킵니다. 패치를 추가하기 위해서는 루트 권한이 있어야 합니다:
    # patchadd /var/tmp/121606-01

    위의 커맨드는 수분이 소요 됩니다. 그러므로 인내심을 가지고 기다리시기 바랍니다. 패치가 정상적으로 설치된 다음에는 PL/Python 을 사용할 수 있습니다.

    주의: 만약 pkgadd 혹은 patchrm 에 "wordlist too large" 같은 문제가 생긴다면 아래의 패치를 설치하시기 바랍니다:

    119254-02 (or newer) Install and Patch Utilities Patch
 
 
 

솔라리스 패키지 제거하기

솔라리스 패키지를 제거하기 전에 전체 데이타 베이스 덤프(그리고 파일 시스템 레벨의 백업) 을 할 것을 권장합니다. 왜냐하면 pkgrm 커맨드는 소프트웨어 제품 데이타베이스내의 정보를 업데이트 하기 때문에 패키지를 pkgrm 커맨드를 이용해서 제거할때 그리고 rm 커맨드를 이용할 떄에도 마찬가지로 이 작업은 매우 중요 합니다. 예를 들어 바이너리 실행 파일을 rm 을 이용해서 삭제할 수 있지만 pkgrm 을 이용해서 해당 바이너리 실행파일을 포함하고 있는 소프트웨어 패키지를 제거하는 것과는 조금 다릅니다. rm 커맨드를 이용해서 패키지 파일들을 삭제 하는 것은 소프트웨어 제품 데이타베이스를 훼손 시킬 수 있습니다.(정말로 특정 파일을 삭제하길 원한다면 소프트웨어 제품 데이타베이스를 올바르게 업데이트 하는 removef 커맨드를 사용하시기 바랍니다.)

  1. 시스템에 슈퍼유저 권한으로 로그인 합니다.

  2. 설치된 패키지를 제거 합니다:
    # pkgrm pkg-list ...
  3. pkg-list 는 하나 혹은 그 이상의 패키지(공백으로 구분됨) 입니다. 만약 생략된다면 제거 가능한 모든 패키지를 제거 합니다.

  4. 패키지가 정상적으로 삭제 되었는지 pkginfo 커맨드를 이용해 확인합니다:
    # pkginfo | egrep pkg-abbrev

    만약 pkg-abbrev 가 설치 되었다면 pkginfo 커맨드는 해당 패키지의 정보를 출력해 줄 것이고 그렇지 않다면 시스템 프롬프트를 리턴해 줄 것입니다.

    패키지를 삭제하기 전에는 모든 서버 프로세스들을 정지시켜야 합니다.

    주의: 만약 데이타베이스 클러스터를 /var/lib/pgsql/data 디렉토리에 생성했다면 새롭게 생성된 모든 파일과 디렉토리들은 pkgrm 으로 SUNWpostgr-server-data 패키지를 삭제하더라도 지워지지 않을 것입니다. 데이타베이스 컨텐츠를 지우길 원한다면 손으로 직접 지워야 합니다.

 
 
 

요약

솔라리스10에 썬의 유연한 지원과 함께 완벽히 통합된 PostgresSQL 은 엔터프라이즈 클래스의 오픈 소스 데이타베이스 입니다. 안정적이고 믿을 수 있는 솔라리스 운영체재와 함께 결합함으로써 고객들은 상용 목적의 데이타베이스로 PostgreSQL 을 사용할 수 있습니다. 고객들은 이제 세계적 수준의 일년 내내 제공되는 썬의 지원을 받을 수 있습니다.

 
 

추가 정보

이 가이드는 사용자들에게 PostgreSQL 데이타베이스를 솔라리스10에서 운용하는 기본적인 단계만을 제공하기 때문에 다양한 설정에 대한 정보와 솔라리스10에 대한 정보는 아래에 나열 되어 있습니다.

솔라리스10 메뉴얼과 참고 자료

Solaris 10 Overview

Solaris 10 FAQ

Solaris 10 Datasheets and Resources

Additional Solaris How to Guides

Predictive Self-Healing Feature Information

솔라리스용 PostgreSQL 참고 자료

PostgreSQL for Solaris Service & Support Offering

PostgreSQL for Solaris Web site

커뮤니티 자료

PostgreSQL Documentation

PostgreSQL for Solaris documentation

PostgreSQL Packages for Solaris


이 아티클의 영문 원본은 http://www.sun.com/software/solaris/howtoguides/postgresqlhowto.jsp 에서 볼수 있습니다.
728x90

댓글