Sun Cluster Data Service for MySQL Guide for Solaris OS

ProcedureHow to Register and Configure Sun Cluster HA for MySQL as a Failover Service in an HA Container Configuration

This procedure assumes that you installed the data service packages during your initial Sun Cluster installation.

If you did not install the Sun Cluster HA for MySQL packages as part of your initial Sun Cluster installation, go to Installing the Sun Cluster HA for MySQL Packages.

  1. Log in to the zone on the node that hosts yourMySQLresource-group

  2. Become superuser or assume a role that provides solaris.cluster.verb RBAC authorization on the nodes zone in the cluster that host MySQL.

  3. Start the MySQL Server instance manually.


    # cd <MySQL Base directory>
    

    # ./bin/mysqld --defaults-file=<MySQL Database directory>/my.cnf \
    --basedir=<MySQL. Base directory>\
     --datadir=<MySQL Database directory>\
     --user=mysql\
     --pid-file=<MySQL Database directory>/mysqld.pid &
    
  4. Configure the admin password for the admin user.


    # <MySQL Databasedirectory>/bin/mysqladmin \
    -S /tmp/<Logical host>.sock password 'admin password'
    
  5. Add the admin user for accessing locally a MySQL instance with a MySQL Logicalhost ip name.


    Note –

    If you want to access the MySQL instance only through the socket (localhost), omit this step.


    When bootstrapping MySQL the command mysql_install_db creates two admin users, one belonging to localhost and one belonging to the node on which mysql_install_db was executed.

    Add an admin user for every physical node in the cluster that runs this MySQL instance.


    Note –

    If the node name and the hostname for the physical interface are different, use the hostname for the physical interface.


    The following is an example for a MySQL instance on Sun Cluster 3.2.


    # mysql -S /tmp/hahostix1.sock -uroot -p'admin-password'
    mysql> use mysql;
    mysql> GRANT ALL ON *.* TO 'root'@'zone1' IDENTIFIED BY 'rootpasswd';
    mysql> exit;

    Note –

    You have to manually add Grant_priv to the admin users. See the MySQL Administration documentation.


    The following is an example for a MySQL 4.x or 5.0.x on Sun Cluster 3.2.


    # mysql -S /tmp/hahostix1.sock -uroot -p'admin-password'
    mysql> use mysql;
    mysql> UPDATE user SET Grant_priv='Y' WHERE User'root' AND Host='zone';
    mysql> exit;

    Note –

    If you experience any problems here, refer to the MySQL administration documentation.


  6. Copy the MySQL configuration file to your home directory.


    # cp /opt/SUNWscmys/util/mysql_config /my-place
    
  7. Create a faultmonitor-user and a test-database for the MySQL instance.


    # cd my-place
    

    Edit the mysql_config file and follow the comments within that file:


    #
    # Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
    # Use is subject to license terms.
    #
    
    #ident   "@(#)mysql_config.ksh 1.3     06/03/08 SMI"
    
    # This file will be sourced in by mysql_register and the parameters
    # listed below will be used.
    #
    
    # Where is mysql installed (BASEDIR)
    MYSQL_BASE=
    
    # Mysql admin-user for localhost (Default is root)
    MYSQL_USER=
    
    # Password for mysql admin user
    MYSQL_PASSWD=
    
    # Configured logicalhost
    MYSQL_HOST=
    
    # Specify a username for a faultmonitor user
    FMUSER=
    
    # Pick a password for that faultmonitor user
    FMPASS=
    
    # Socket name for mysqld ( Should be /tmp/<logical-host>.sock )
    MYSQL_SOCK=
    
    # Specify the physical hostname for the physical NIC that this
    logical hostname
    
    # belongs to for every node in the cluster this Resource group can be
    located on.
    
    # IE: The logicalhost lh1 belongs to hme1 for physical-node phys-1 and
    
    # hme3 for physical-node phys-2. The hostname for hme1 is phys-1-hme0 and
    
    # for hme3 on phys-2 it is phys-2-hme3.
    
    # IE: MYSQL_NIC_HOSTNAME="phys-1-hme0 phys-2-hme3"
    
    MYSQL_NIC_HOSTNAME=
    
    
    # Where are your databases installed? (location of my.cnf)
    
    MYSQL_DATADIR=

    Note –

    The following is an example for a MySQL instance on Sun Cluster 3.2.



    MYSQL_BASE=/global/mysql
    MYSQL_USER=root
    MYSQL_PASSWD=root
    MYSQL_HOST=hahostix1
    FMUSER=fmuser
    FMPASS=fmuser
    MYSQL_SOCK=/tmp/hahostix1.sock
    MYSQL_NIC_HOSTNAME="zone1"
    MYSQL_DATADIR=/global/mysql-data
    

    After editing mysql_config, you must run the mysql_register script.


    # /opt/SUNWscmys/util//mysql_register -f my-place/mysql_config
    
  8. Stop the MySQL Server instance manually.


    # kill -TERM `cat <MySQL Database directry>/mysqld.pid
    
  9. Leave the zone and become superuser or assume a role that provides solaris.cluster.verb RBAC authorization on the nodes global zone in the cluster that host MySQL.

  10. Copy the MySQL configuration file to your home directory.


    # cp /opt/SUNWscmys/util/ha_mysql_config /my-place
    
  11. Create and register MySQL as a failover data service.


    # cd my-place
    

    Edit the ha_mysql_config file and follow the comments within that file, i.e.


    #
    # Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
    # Use is subject to license terms.
    #
    
    #ident   "@(#)ha_mysql_config.ksh 1.3     06/03/08 SMI"
    
    # This file will be sourced in by ha_mysql_register and the parameters
    # listed below will be used.
    #
    # These parameters can be customized in (key=value) form
    #
    #        RS - name of the resource for the application
    #        RG - name of the resource group containing RS
    #
    #        To have the mysql agent local zone aware, 4 Variables are needed:
    #      ZONE - the zone name where the Mysql Database should run in
    #             Optional
    #    ZONEBT - The resource name which controls the zone.
    #             Optional
    #   PROJECT - A project in the zone, that will be used for this service
    #             specify it if you have an su - in the start stop or probe,
    #             or to define the smf credentials. If the variable is not set,
    #             it will be translated as :default for the sm and default
    #             for the zsh component
    #             Optional
    #     ZUSER - A user in the the zone which is used for the smf method
    #             credentials. Yur smf servic e will run under this user
    #             Optional
    #
    # Mysql specific Variables
    #
    #   BASEDIR - name of the Mysql bin directory
    #   DATADIR - name of the Mysql Data directory
    # MYSQLUSER - name of the user Mysql should be started of
    #        LH - name of the Logical Hostname Sun Cluster resource
    # MYSQLHOST - name of the host in /etc/hosts
    #    FMUSER - name of the Mysql fault monitor user
    #    FMPASS - name of the Mysql fault monitor user password
    #    LOGDIR - name of the directory mysqld should store it's logfile.
    #    CHECK  - should HA-MySQL check MyISAM index files before start YES/NO.
    #    HAS_RS - name of the MySQL HAStoragePlus Sun Cluster resource
    #

    The following is an example for a MySQL instance.


    RS=mysql-res
    RG=mysql-rg
    BASEDIR=/global/mysql
    DATADIR=/global/mysql-data
    MYSQLUSER=mysql
    LH=hahostix1
    MYSQLHOST=hahostix1
    FMUSER=fmuser
    FMPASS=fmuser
    LOGDIR=/global/mysql-data/logs
    CHECK=YES 
    HAS_RS=mysql-has-res
    ZONE=zone1
    ZONE_BT=zone1-rs
    PROJECT=MySQL-project
    

    Register the MySQL resource.


    # /opt/SUNWscmys/util/ha_mysql_register -f my-place/ha_mysql_config
    
  12. Enable each MySQL resource.

    Repeat this step for each MySQL instance, if multiple instances were created.


    # clresource status
    # clresource enable MySQL-resource