Solaris 10 에서 mysql SMF 설정하기

Solaris 2008. 9. 23. 22:47 posted by CecilDeSK
반응형

솔라리스(Solaris)에서 번들제공된 mysql이 아닌 http://www.sunfreeware.com이나 직접 컴파일해서 설치하는 경우 SMF 작동시키기 위한 방법을 설명합니다.

이번경우는 Manifest 만 작성하여 세팅하는 방식으로 설명하며 원하실경우 예제를 조금 바꾸어 Methods로 나누어서 설정하셔도 무방합니다. 두가지가 크게 차이는 없고 하나로 만들기에 좀 버거운경우나 관리적차원(?) 보통 두개로 설정한다고 보는게 편할것 같긴합니다.

우선 세팅은 일반적인 mysql 설정 방법을 따릅니다.
크게다를건 없고 혹시 Manifest내용상의 경로와 서로틀리다면 Manifest상의 경로를 변경하시면 문제없을 겁니다.

우선
/var/svc/manifest/application/mysql.xml이라는 화일을 생성합니다.
(manifest 디렉토리상에 application 이나 network, site 디렉토리정도가 적당할것 같군요)
(위치와 이름은 크게 상관없습니다. 나중에 등록하실때 알맞게 바꿔주시면되니까요)


[sol:/]#vi /var/svc/manifest/application/mysql.xml

<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
    Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
    Use is subject to license terms.

    pragma ident    "@(#)server.xml 1.2 04/08/09 SMI"
-->

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

<service
    name='application/mysql'
    type='service'
    version='1'>

    <dependency
        name='filesystem'
        grouping='require_all'
        restart_on='none'
        type='service'>
        <service_fmri value='svc:/system/filesystem/local'/>
    </dependency>
        <dependency
                name='database_configuration'
                type='path'
                grouping='require_all'
                restart_on='refresh'>
                <service_fmri value='file://localhost/usr/local/mysql/my.cnf' />
        </dependency>


        <dependent
                name='mysql-runlevel'
                grouping='require_all'
                restart_on='none'>
                <service_fmri value='svc:/milestone/multi-user-server' />
        </dependent>

    <exec_method
        type='method'
        name='start'
        exec='/usr/local/mysql/share/mysql/mysql.server %m'
        timeout_seconds='10' />

    <exec_method
        type='method'
        name='stop'
        exec='/usr/local/mysql/share/mysql/mysql.server %m'
        timeout_seconds='5' />

    <exec_method
        type='method'
        name='restart'
        exec='/usr/local/mysql/share/mysql/mysql.server %m'
        timeout_seconds='5' />

        <property_group name='general' type='framework'>
                <!-- to start stop database -->
                <propval name='action_authorization' type='astring'
                        value='mysql.operator' />
                <propval name='value_authorization' type='astring'
                        value='mysql.administrator' />
        </property_group>

    <instance name='default' enabled='true' />

    <stability value='Unstable' />

    <template>
        <common_name>
            <loctext xml:lang='C'>
            MySQL Database Server
            </loctext>
        </common_name>
        <documentation>
            <manpage title='mysql' section='1'
                manpath='/usr/local/mysql/man' />
            <manpage title='mysqld' section='1'
                manpath='/usr/local/mysql/man' />
            <manpage title='mysqladmin' section='1'
                manpath='/usr/local/mysql/man' />
        </documentation>
    </template>
</service>

</service_bundle>
위와 같이 작성해주신후

Permission 수정 해주셔야겠죠?

[sol10:/]#chown root:sys /var/svc/manifest/applicaiton/mysql.xml
[sol10:/]#chmod 444 /var/svc/manifest/applicaiton/mysql.xml

Manifest 화일이 이상없나 체크를 해봅시다
[sol10:/]#xmllint /var/svc/manifest/applicaiton/mysql.xml


또 다른방법?

[sol10:/]#svccfg
svc:>
svc:> validate /var/svc/manifest/applicaiton/mysql.xml

간단하게 체크해보니 이상없다는군요 @,@;

Manifest 를 import 합시다
[sol10:/]# svccfg -v import /var/svc/manifest/applicaiton/mysql.xml

사용가능하게 enable 시켜줍니다.
[sol10:/]#svcadm -v enable application/mysql

만일 에러가 발생한다면 에러메세지 내용을 잘읽어보세요 일반적으로는 경로문제 일가능성이 좀 큽니다.
간단하게 잘 실행되었나 확인은?

[sol10:/]#svcs -x mysql
svc:/application/mysql:default (MySQL Database Server)
상태: online(2008년 9월 23일 화요일 오후 10시 02분 25초 이후)
참조: mysql(1)
참조: mysqld(1)
참조: mysqladmin(1)
참조: /var/svc/log/application-mysql:default.log
영향: 없음


사용된 mySQL Manifest file mysql.xml



P.S
예제 내용중 구성이 바뀔경우


manifest이하 디렉토리와 화일이름을 바꿀경우
13번째 라인
name='application/mysql' 을 name='network/mysqlxml' 표시이름이 network주제에 mysqlxml이라는 이름으로 표시된다.


my.cnf 화일의 위치가 다르다

/usr/local/mysql/my.cnf 로 설정이 되어있는데 /etc/my.cnf라면
정도로 변경해주면됩니다.

40라인 이하절에 보면
exec=exec='/usr/local/mysql/share/mysql/mysql.server %m' 이부분이 실행하는 화일입니다. methods화일과 서로 분리가 필요하신분은 이부분을 수정하시면됩니다.
도움이 필요한분은 일전에 포스팅한 아파치 부분 보시면될겁니다.

76라인 이하절은 없어도 무관합니다 ㅡ,ㅡ;

반응형