Hi All,
I had some difficult in create a cluster of MySql in solaris 10 (zones).
Now that I put it to work, I am sharing this “how to”. (I hope that this can help someone)
######################################################################
#
# MySQL Cluster Instalation and Configuration
# (Using Solaris Container).
#
# Copyright (c) 2010 Renato Tegon Forti
#
# Distributed under the Boost Software License, Version 1.0.
#
# Renato Tegon Forti 09/11/2010 ddmmyy | Initial Release
#
######################################################################
# Overview
# --------------------------------------------------------------------
# This doc show a Aysso MySQL cluster 7.1 setup in this environment:
#
#
# MySql Server Managemen Nodes:
#
# MySqlManagement0 (192.168.0.140)
# MySqlManagement1 (192.168.0.141)
#
# MySql Server Access Nodes:
#
# MySqlServer0 (192.168.0.142)
# MySqlServer1 (192.168.0.143)
# MySqlServer2 (192.168.0.144)
#
# MySql Server Data Nodes:
#
# MySqlData0 (192.168.0.145)
# MySqlData1 (192.168.0.146)
# MySqlData2 (192.168.0.147)
# MySqlData3 (192.168.0.148)
# Step 01 (Configure Solaris Pool)
# --------------------------------------------------------------------
# MySql Server Managemen Nodes
poolcfg -c 'create pset pset-mysqlmanagement-0 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlmanagement-0';
poolcfg -c 'associate pool pool-mysqlmanagement-0 (pset pset-mysqlmanagement-0)';
pooladm -c;
poolcfg -c 'create pset pset-mysqlmanagement-1 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlmanagement-1';
poolcfg -c 'associate pool pool-mysqlmanagement-1 (pset pset-mysqlmanagement-1)';
pooladm -c;
# MySql Server Access Nodes
poolcfg -c 'create pset pset-mysqlserver-0 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlserver-0';
poolcfg -c 'associate pool pool-mysqlserver-0 (pset pset-mysqlserver-0)';
pooladm -c;
poolcfg -c 'create pset pset-mysqlserver-1 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlserver-1';
poolcfg -c 'associate pool pool-mysqlserver-1 (pset pset-mysqlserver-1)';
pooladm -c;
poolcfg -c 'create pset pset-mysqlserver-2 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlserver-2';
poolcfg -c 'associate pool pool-mysqlserver-2 (pset pset-mysqlserver-2)';
pooladm -c;
# MySql Server Data Nodes
poolcfg -c 'create pset pset-mysqldata-0 (uint pset.min=1; uint pset.max=2)';
poolcfg -c 'create pool pool-mysqldata-0';
poolcfg -c 'associate pool pool-mysqldata-0 (pset pset-mysqldata-0)';
pooladm -c;
poolcfg -c 'create pset pset-mysqldata-1 (uint pset.min=1; uint pset.max=2)';
poolcfg -c 'create pool pool-mysqldata-1';
poolcfg -c 'associate pool pool-mysqldata-1 (pset pset-mysqldata-1)';
pooladm -c;
poolcfg -c 'create pset pset-mysqldata-2 (uint pset.min=1; uint pset.max=2)';
poolcfg -c 'create pool pool-mysqldata-2';
poolcfg -c 'associate pool pool-mysqldata-2 (pset pset-mysqldata-2)';
pooladm -c;
poolcfg -c 'create pset pset-mysqldata-3 (uint pset.min=1; uint pset.max=2)';
poolcfg -c 'create pool pool-mysqldata-3';
poolcfg -c 'associate pool pool-mysqldata-3 (pset pset-mysqldata-3)';
pooladm -c;
pooladm -s # Now Save Pool
# Step 02 (Configure Solaris Nones)
# --------------------------------------------------------------------
# MySql Server Managemen Nodes
# ----------------------------------------------------
# ----------------------------------------------------
# Node zn-mysqlmanagement-0
# ----------------------------------------------------
zonecfg -z zn-mysqlmanagement-0
create
set zonepath=/zone_pool/zn-mysqlmanagement-0
set autoboot=true
add net
set address=192.168.0.140
set physical=e1000g0
end
set pool=pool-mysqlmanagement-0
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlmanagement-0/local
chmod 700 /zone_pool/zn-mysqlmanagement-0/
zonecfg -z zn-mysqlmanagement-0
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlmanagement-0/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlmanagement-0 install
zoneadm -z zn-mysqlmanagement-0 boot
zlogin -C zn-mysqlmanagement-0
# Node zn-mysqlmanagement-1
# ----------------------------------------------------
zonecfg -z zn-mysqlmanagement-1
create
set zonepath=/zone_pool/zn-mysqlmanagement-1
set autoboot=true
add net
set address=192.168.0.141
set physical=e1000g0
end
set pool=pool-mysqlmanagement-1
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlmanagement-1/local
chmod 700 /zone_pool/zn-mysqlmanagement-1/
zonecfg -z zn-mysqlmanagement-1
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlmanagement-1/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlmanagement-1 install
zoneadm -z zn-mysqlmanagement-1 boot
zlogin -C zn-mysqlmanagement-1
# MySql Server Nodes
# ----------------------------------------------------
# ----------------------------------------------------
# Node zn-mysqlserver-0
# ----------------------------------------------------
zonecfg -z zn-mysqlserver-0
create
set zonepath=/zone_pool/zn-mysqlserver-0
set autoboot=true
add net
set address=192.168.0.142
set physical=e1000g0
end
set pool=pool-mysqlserver-0
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlserver-0/local
chmod 700 /zone_pool/zn-mysqlserver-0/
zonecfg -z zn-mysqlserver-0
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlserver-0/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlserver-0 install
zoneadm -z zn-mysqlserver-0 boot
zlogin -C zn-mysqlserver-0
# Node zn-mysqlserver-1
# ----------------------------------------------------
zonecfg -z zn-mysqlserver-1
create
set zonepath=/zone_pool/zn-mysqlserver-1
set autoboot=true
add net
set address=192.168.0.143
set physical=e1000g0
end
set pool=pool-mysqlserver-1
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlserver-1/local
chmod 700 /zone_pool/zn-mysqlserver-1/
zonecfg -z zn-mysqlserver-1
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlserver-1/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlserver-1 install
zoneadm -z zn-mysqlserver-1 boot
zlogin -C zn-mysqlserver-1
# Node zn-mysqlserver-2
# ----------------------------------------------------
zonecfg -z zn-mysqlserver-2
create
set zonepath=/zone_pool/zn-mysqlserver-2
set autoboot=true
add net
set address=192.168.0.144
set physical=e1000g0
end
set pool=pool-mysqlserver-2
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlserver-2/local
chmod 700 /zone_pool/zn-mysqlserver-2/
zonecfg -z zn-mysqlserver-2
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlserver-2/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlserver-2 install
zoneadm -z zn-mysqlserver-2 boot
zlogin -C zn-mysqlserver-2
# MySql Server Data Nodes
# ----------------------------------------------------
# ----------------------------------------------------
# Node zn-mysqldata-0
# ----------------------------------------------------
zonecfg -z zn-mysqldata-0
create
set zonepath=/zone_pool/zn-mysqldata-0
set autoboot=true
add net
set address=192.168.0.145
set physical=e1000g0
end
set pool=pool-mysqldata-0
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqldata-0/local
chmod 700 /zone_pool/zn-mysqldata-0/
zonecfg -z zn-mysqldata-0
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqldata-0/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqldata-0 install
zoneadm -z zn-mysqldata-0 boot
zlogin -C zn-mysqldata-0
# Node zn-mysqldata-1
# ----------------------------------------------------
zonecfg -z zn-mysqldata-1
create
set zonepath=/zone_pool/zn-mysqldata-1
set autoboot=true
add net
set address=192.168.0.146
set physical=e1000g0
end
set pool=pool-mysqldata-1
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqldata-1/local
chmod 700 /zone_pool/zn-mysqldata-1/
zonecfg -z zn-mysqldata-1
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqldata-1/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqldata-1 install
zoneadm -z zn-mysqldata-1 boot
zlogin -C zn-mysqldata-1
# Node zn-mysqldata-2
# ----------------------------------------------------
zonecfg -z zn-mysqldata-2
create
set zonepath=/zone_pool/zn-mysqldata-2
set autoboot=true
add net
set address=192.168.0.147
set physical=e1000g0
end
set pool=pool-mysqldata-2
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqldata-2/local
chmod 700 /zone_pool/zn-mysqldata-2/
zonecfg -z zn-mysqldata-2
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqldata-2/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqldata-2 install
zoneadm -z zn-mysqldata-2 boot
zlogin -C zn-mysqldata-2
# Node zn-mysqldata-3
# ----------------------------------------------------
zonecfg -z zn-mysqldata-3
create
set zonepath=/zone_pool/zn-mysqldata-3
set autoboot=true
add net
set address=192.168.0.148
set physical=e1000g0
end
set pool=pool-mysqldata-3
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqldata-3/local
chmod 700 /zone_pool/zn-mysqldata-3/
zonecfg -z zn-mysqldata-3
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqldata-3/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqldata-3 install
zoneadm -z zn-mysqldata-3 boot
zlogin -C zn-mysqldata-3
# Step 03 (Setup basic configuration os zones)
# --------------------------------------------------------------------
# for each none configure ->
# Telnet
chmod +w /etc/default/login
vi /etc/default/login # comment console line
# DNS
vi /etc/nsswitch.conf # add "dns" | hosts files dns
vi /etc/resolv.conf # add "nameserver <ip1> newline nameserver <ip2>"
ping aysso.net # test conf
# Set shell
usermod -s /usr/bin/bash root
# Step 04 (Prepare MySql Instalation)
# --------------------------------------------------------------------
# Copy MySql install file to zones:
# mysqlmanagement-
mkdir /zone_pool/zn-mysqlmanagement-0/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlmanagement-0/root/temp_mysql/
mkdir /zone_pool/zn-mysqlmanagement-1/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlmanagement-1/root/temp_mysql/
# mysqlserver
mkdir /zone_pool/zn-mysqlserver-0/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlserver-0/root/temp_mysql/
mkdir /zone_pool/zn-mysqlserver-1/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlserver-1/root/temp_mysql/
mkdir /zone_pool/zn-mysqlserver-2/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlserver-2/root/temp_mysql/
# mysqldata
mkdir /zone_pool/zn-mysqldata-0/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqldata-0/root/temp_mysql/
mkdir /zone_pool/zn-mysqldata-1/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqldata-1/root/temp_mysql/
mkdir /zone_pool/zn-mysqldata-2/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqldata-2/root/temp_mysql/
mkdir /zone_pool/zn-mysqldata-3/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqldata-3/root/temp_mysql/
# Untar MySql (to all zones)
gunzip mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz | tar xvf -
tar xvf mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar
# Step 05 (MySql Basic Instalation)
# --------------------------------------------------------------------
# Files instalation
cd /
mkdir /usr/local/mysql
cp -r /temp_mysql/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit/* /usr/local/mysql/
rm -r temp_mysql/
# User and group setup
groupadd mysql
useradd -g mysql mysql
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql
# MySql Install
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql
M MySql Test
cd ./mysql-test ; perl mysql-test-run.pl
# Step 06 (Configure MySql Management)
# --------------------------------------------------------------------
mkdir /var/lib/mysql-cluster
cp /usr/local/mysql/support-files/config.small.ini /var/lib/mysql-cluster/config.ini
vi config.ini
# ----------- file -----------------------------------------
##########################################################
#
# Renato Tegon Forti 10/11/2010 ddmmyyyy | Initial Release
#
##########################################################
# MySql Server Managemen Nodes:
#
# MySqlManagement0 (192.168.0.140)
# MySqlManagement1 (192.168.0.141)
#
# MySql Server Access Nodes:
#
# MySqlServer0 (192.168.0.142)
# MySqlServer1 (192.168.0.143)
# MySqlServer2 (192.168.0.144)
#
# MySql Server Data Nodes:
#
# MySqlData0 (192.168.0.145)
# MySqlData1 (192.168.0.146)
# MySqlData2 (192.168.0.147)
# MySqlData3 (192.168.0.148)
# Mgm Nodes
# ---------------------------------------------------------
[MGM DEFAULT]
PortNumber: 1186
DataDir: /usr/local/mysql/data
# First (PRIMARY) mgm node
[NDB_MGMD]
Id: 1
HostName: 192.168.0.140
# Second (BACKUP) mgm node
[NDB_MGMD]
Id: 2
HostName: 192.168.0.141
# Storage nodes
# ---------------------------------------------------------
[NDBD DEFAULT]
NoOfReplicas: 2
DataDir: /usr/local/mysql/data
FileSystemPath: /usr/local/mysql/data
[NDBD]
Id: 3
HostName: 192.168.0.145
[NDBD]
Id: 4
HostName: 192.168.0.146
[NDBD]
Id: 5
HostName: 192.168.0.147
[NDBD]
Id: 6
HostName: 192.168.0.148
# SQL Nodes
# ---------------------------------------------------------
[mysqld]
Id: 7
HostName: 192.168.0.142
[mysqld]
Id: 8
HostName: 192.168.0.143
[mysqld]
Id: 9
HostName: 192.168.0.144
# This node will is used for ndb_backup and ndb_restore
[mysqld]
# ----------------------------------------------------------
# ----------- END file -------------------------------------
# Step 07 (Configure MySql other nodes)
# --------------------------------------------------------------------
# Now, on all other servers, you place the following in /etc/my.cnf:
vi /etc/my.cnf # or gedit /etc/my.cnf
# ----------- file -----------------------------------------
[mysqld]
ndbcluster
#connectstring: primary,secondary management nodes
ndb-connectstring=nodeid=X,192.168.0.140,192.168.0.141
[mysql_cluster]
ndb-connectstring=nodeid=X,192.168.0.140,192.168.0.141
# ----------------------------------------------------------
# ----------- END file -------------------------------------
# Notice the id=x in the second connectstring: Make sure you put the correct node ID (as specified in the configuration file) in here.
#
# for sample if my.cnf is of node [NDBD] nodeId: 5, the x will be 5
# for sample if my.cnf is of node [mysqld] nodeId: 8, the x will be 8
#
# [mysql_cluster]
# ndb-connectstring=nodeid=3,192.168.0.140,192.168.0.141
# Step 08 (Testing Cluster)
# --------------------------------------------------------------------
# Starting mgmd
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
./bin/ndb_mgm
# Starting MySql Server
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/mysqld_safe --user=mysql &
# Starting MySql Data
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndbd
# Useful Commands
# --------------------------------------------------------------------
# Solaris
init 6 # restart machine
poolstat # status
pooladm -x # remove
pooladm -e # ativa
pooladm -s # salva
zonename # show current zone name
######################################################################
# START CLUSTER
# --------------------------------------------------------------------
# --------------------------------------------------------------------
# Starting mgmd nodes
# --------------------------------------------------------------------
cd /usr/local/mysql
./bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
./bin/ndb_mgm
# You can start management server using the --initial option.
#
# ./bin/ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini
#
# In this case, the global configuration file is re-read,
# any existing cache files are deleted, and the management server
# creates a new configuration cache.
# --------------------------------------------------------------------
# Starting MySql Data nodes
# --------------------------------------------------------------------
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndbd
# You can statrt management server using the --initial option.
#
# ./bin/ndbd --initial
# --------------------------------------------------------------------
# Starting MySql Server nodes
# --------------------------------------------------------------------
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/mysqld_safe --user=mysql &
# You can statrt management server using the --initial option.
#
# ./bin/mysqld_safe --user=mysql --initial &
######################################################################
# BACKUP CLUSTER
# --------------------------------------------------------------------
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndb_mgm
ndb_mgm> START BACKUP WAIT COMPLETED
######################################################################
# RESTORE CLUSTER
# --------------------------------------------------------------------
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndb_mgm
ndb_mgm> enter single user mode <MYSQL SERVER NODEID>
# Then in any node recovery meta data: note: -m and c is management node ip
ndb_restore -m -n 6 -b 2 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-2 -c 192.168.0.140
# And finally for each data node recovery data: note -r
ndb_restore -r -n 6 -b 2 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-2 -c 192.168.0.140
# -n <is node number>
# -b <is backup id>
# -C <is managements node ip>
ndb_mgm> exit single user mode
I had some difficult in create a cluster of MySql in solaris 10 (zones).
Now that I put it to work, I am sharing this “how to”. (I hope that this can help someone)
######################################################################
#
# MySQL Cluster Instalation and Configuration
# (Using Solaris Container).
#
# Copyright (c) 2010 Renato Tegon Forti
#
# Distributed under the Boost Software License, Version 1.0.
#
# Renato Tegon Forti 09/11/2010 ddmmyy | Initial Release
#
######################################################################
# Overview
# --------------------------------------------------------------------
# This doc show a Aysso MySQL cluster 7.1 setup in this environment:
#
#
# MySql Server Managemen Nodes:
#
# MySqlManagement0 (192.168.0.140)
# MySqlManagement1 (192.168.0.141)
#
# MySql Server Access Nodes:
#
# MySqlServer0 (192.168.0.142)
# MySqlServer1 (192.168.0.143)
# MySqlServer2 (192.168.0.144)
#
# MySql Server Data Nodes:
#
# MySqlData0 (192.168.0.145)
# MySqlData1 (192.168.0.146)
# MySqlData2 (192.168.0.147)
# MySqlData3 (192.168.0.148)
# Step 01 (Configure Solaris Pool)
# --------------------------------------------------------------------
# MySql Server Managemen Nodes
poolcfg -c 'create pset pset-mysqlmanagement-0 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlmanagement-0';
poolcfg -c 'associate pool pool-mysqlmanagement-0 (pset pset-mysqlmanagement-0)';
pooladm -c;
poolcfg -c 'create pset pset-mysqlmanagement-1 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlmanagement-1';
poolcfg -c 'associate pool pool-mysqlmanagement-1 (pset pset-mysqlmanagement-1)';
pooladm -c;
# MySql Server Access Nodes
poolcfg -c 'create pset pset-mysqlserver-0 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlserver-0';
poolcfg -c 'associate pool pool-mysqlserver-0 (pset pset-mysqlserver-0)';
pooladm -c;
poolcfg -c 'create pset pset-mysqlserver-1 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlserver-1';
poolcfg -c 'associate pool pool-mysqlserver-1 (pset pset-mysqlserver-1)';
pooladm -c;
poolcfg -c 'create pset pset-mysqlserver-2 (uint pset.min=1; uint pset.max=1)';
poolcfg -c 'create pool pool-mysqlserver-2';
poolcfg -c 'associate pool pool-mysqlserver-2 (pset pset-mysqlserver-2)';
pooladm -c;
# MySql Server Data Nodes
poolcfg -c 'create pset pset-mysqldata-0 (uint pset.min=1; uint pset.max=2)';
poolcfg -c 'create pool pool-mysqldata-0';
poolcfg -c 'associate pool pool-mysqldata-0 (pset pset-mysqldata-0)';
pooladm -c;
poolcfg -c 'create pset pset-mysqldata-1 (uint pset.min=1; uint pset.max=2)';
poolcfg -c 'create pool pool-mysqldata-1';
poolcfg -c 'associate pool pool-mysqldata-1 (pset pset-mysqldata-1)';
pooladm -c;
poolcfg -c 'create pset pset-mysqldata-2 (uint pset.min=1; uint pset.max=2)';
poolcfg -c 'create pool pool-mysqldata-2';
poolcfg -c 'associate pool pool-mysqldata-2 (pset pset-mysqldata-2)';
pooladm -c;
poolcfg -c 'create pset pset-mysqldata-3 (uint pset.min=1; uint pset.max=2)';
poolcfg -c 'create pool pool-mysqldata-3';
poolcfg -c 'associate pool pool-mysqldata-3 (pset pset-mysqldata-3)';
pooladm -c;
pooladm -s # Now Save Pool
# Step 02 (Configure Solaris Nones)
# --------------------------------------------------------------------
# MySql Server Managemen Nodes
# ----------------------------------------------------
# ----------------------------------------------------
# Node zn-mysqlmanagement-0
# ----------------------------------------------------
zonecfg -z zn-mysqlmanagement-0
create
set zonepath=/zone_pool/zn-mysqlmanagement-0
set autoboot=true
add net
set address=192.168.0.140
set physical=e1000g0
end
set pool=pool-mysqlmanagement-0
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlmanagement-0/local
chmod 700 /zone_pool/zn-mysqlmanagement-0/
zonecfg -z zn-mysqlmanagement-0
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlmanagement-0/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlmanagement-0 install
zoneadm -z zn-mysqlmanagement-0 boot
zlogin -C zn-mysqlmanagement-0
# Node zn-mysqlmanagement-1
# ----------------------------------------------------
zonecfg -z zn-mysqlmanagement-1
create
set zonepath=/zone_pool/zn-mysqlmanagement-1
set autoboot=true
add net
set address=192.168.0.141
set physical=e1000g0
end
set pool=pool-mysqlmanagement-1
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlmanagement-1/local
chmod 700 /zone_pool/zn-mysqlmanagement-1/
zonecfg -z zn-mysqlmanagement-1
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlmanagement-1/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlmanagement-1 install
zoneadm -z zn-mysqlmanagement-1 boot
zlogin -C zn-mysqlmanagement-1
# MySql Server Nodes
# ----------------------------------------------------
# ----------------------------------------------------
# Node zn-mysqlserver-0
# ----------------------------------------------------
zonecfg -z zn-mysqlserver-0
create
set zonepath=/zone_pool/zn-mysqlserver-0
set autoboot=true
add net
set address=192.168.0.142
set physical=e1000g0
end
set pool=pool-mysqlserver-0
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlserver-0/local
chmod 700 /zone_pool/zn-mysqlserver-0/
zonecfg -z zn-mysqlserver-0
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlserver-0/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlserver-0 install
zoneadm -z zn-mysqlserver-0 boot
zlogin -C zn-mysqlserver-0
# Node zn-mysqlserver-1
# ----------------------------------------------------
zonecfg -z zn-mysqlserver-1
create
set zonepath=/zone_pool/zn-mysqlserver-1
set autoboot=true
add net
set address=192.168.0.143
set physical=e1000g0
end
set pool=pool-mysqlserver-1
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlserver-1/local
chmod 700 /zone_pool/zn-mysqlserver-1/
zonecfg -z zn-mysqlserver-1
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlserver-1/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlserver-1 install
zoneadm -z zn-mysqlserver-1 boot
zlogin -C zn-mysqlserver-1
# Node zn-mysqlserver-2
# ----------------------------------------------------
zonecfg -z zn-mysqlserver-2
create
set zonepath=/zone_pool/zn-mysqlserver-2
set autoboot=true
add net
set address=192.168.0.144
set physical=e1000g0
end
set pool=pool-mysqlserver-2
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqlserver-2/local
chmod 700 /zone_pool/zn-mysqlserver-2/
zonecfg -z zn-mysqlserver-2
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqlserver-2/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqlserver-2 install
zoneadm -z zn-mysqlserver-2 boot
zlogin -C zn-mysqlserver-2
# MySql Server Data Nodes
# ----------------------------------------------------
# ----------------------------------------------------
# Node zn-mysqldata-0
# ----------------------------------------------------
zonecfg -z zn-mysqldata-0
create
set zonepath=/zone_pool/zn-mysqldata-0
set autoboot=true
add net
set address=192.168.0.145
set physical=e1000g0
end
set pool=pool-mysqldata-0
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqldata-0/local
chmod 700 /zone_pool/zn-mysqldata-0/
zonecfg -z zn-mysqldata-0
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqldata-0/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqldata-0 install
zoneadm -z zn-mysqldata-0 boot
zlogin -C zn-mysqldata-0
# Node zn-mysqldata-1
# ----------------------------------------------------
zonecfg -z zn-mysqldata-1
create
set zonepath=/zone_pool/zn-mysqldata-1
set autoboot=true
add net
set address=192.168.0.146
set physical=e1000g0
end
set pool=pool-mysqldata-1
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqldata-1/local
chmod 700 /zone_pool/zn-mysqldata-1/
zonecfg -z zn-mysqldata-1
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqldata-1/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqldata-1 install
zoneadm -z zn-mysqldata-1 boot
zlogin -C zn-mysqldata-1
# Node zn-mysqldata-2
# ----------------------------------------------------
zonecfg -z zn-mysqldata-2
create
set zonepath=/zone_pool/zn-mysqldata-2
set autoboot=true
add net
set address=192.168.0.147
set physical=e1000g0
end
set pool=pool-mysqldata-2
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqldata-2/local
chmod 700 /zone_pool/zn-mysqldata-2/
zonecfg -z zn-mysqldata-2
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqldata-2/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqldata-2 install
zoneadm -z zn-mysqldata-2 boot
zlogin -C zn-mysqldata-2
# Node zn-mysqldata-3
# ----------------------------------------------------
zonecfg -z zn-mysqldata-3
create
set zonepath=/zone_pool/zn-mysqldata-3
set autoboot=true
add net
set address=192.168.0.148
set physical=e1000g0
end
set pool=pool-mysqldata-3
verify
commit
exit
# Create file system to hold MySQL
mkdir -p /zone_pool/zn-mysqldata-3/local
chmod 700 /zone_pool/zn-mysqldata-3/
zonecfg -z zn-mysqldata-3
add fs
set dir=/usr/local
set special=/zone_pool/zn-mysqldata-3/local
set type=lofs
set options=[rw,nodevices]
end
commit
exit
zoneadm list -icv
zoneadm -z zn-mysqldata-3 install
zoneadm -z zn-mysqldata-3 boot
zlogin -C zn-mysqldata-3
# Step 03 (Setup basic configuration os zones)
# --------------------------------------------------------------------
# for each none configure ->
# Telnet
chmod +w /etc/default/login
vi /etc/default/login # comment console line
# DNS
vi /etc/nsswitch.conf # add "dns" | hosts files dns
vi /etc/resolv.conf # add "nameserver <ip1> newline nameserver <ip2>"
ping aysso.net # test conf
# Set shell
usermod -s /usr/bin/bash root
# Step 04 (Prepare MySql Instalation)
# --------------------------------------------------------------------
# Copy MySql install file to zones:
# mysqlmanagement-
mkdir /zone_pool/zn-mysqlmanagement-0/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlmanagement-0/root/temp_mysql/
mkdir /zone_pool/zn-mysqlmanagement-1/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlmanagement-1/root/temp_mysql/
# mysqlserver
mkdir /zone_pool/zn-mysqlserver-0/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlserver-0/root/temp_mysql/
mkdir /zone_pool/zn-mysqlserver-1/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlserver-1/root/temp_mysql/
mkdir /zone_pool/zn-mysqlserver-2/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqlserver-2/root/temp_mysql/
# mysqldata
mkdir /zone_pool/zn-mysqldata-0/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqldata-0/root/temp_mysql/
mkdir /zone_pool/zn-mysqldata-1/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqldata-1/root/temp_mysql/
mkdir /zone_pool/zn-mysqldata-2/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqldata-2/root/temp_mysql/
mkdir /zone_pool/zn-mysqldata-3/root/temp_mysql/
cp /programs/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz /zone_pool/zn-mysqldata-3/root/temp_mysql/
# Untar MySql (to all zones)
gunzip mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar.gz | tar xvf -
tar xvf mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit.tar
# Step 05 (MySql Basic Instalation)
# --------------------------------------------------------------------
# Files instalation
cd /
mkdir /usr/local/mysql
cp -r /temp_mysql/mysql-cluster-gpl-7.1.8-solaris10-sparc-64bit/* /usr/local/mysql/
rm -r temp_mysql/
# User and group setup
groupadd mysql
useradd -g mysql mysql
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql
# MySql Install
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql
M MySql Test
cd ./mysql-test ; perl mysql-test-run.pl
# Step 06 (Configure MySql Management)
# --------------------------------------------------------------------
mkdir /var/lib/mysql-cluster
cp /usr/local/mysql/support-files/config.small.ini /var/lib/mysql-cluster/config.ini
vi config.ini
# ----------- file -----------------------------------------
##########################################################
#
# Renato Tegon Forti 10/11/2010 ddmmyyyy | Initial Release
#
##########################################################
# MySql Server Managemen Nodes:
#
# MySqlManagement0 (192.168.0.140)
# MySqlManagement1 (192.168.0.141)
#
# MySql Server Access Nodes:
#
# MySqlServer0 (192.168.0.142)
# MySqlServer1 (192.168.0.143)
# MySqlServer2 (192.168.0.144)
#
# MySql Server Data Nodes:
#
# MySqlData0 (192.168.0.145)
# MySqlData1 (192.168.0.146)
# MySqlData2 (192.168.0.147)
# MySqlData3 (192.168.0.148)
# Mgm Nodes
# ---------------------------------------------------------
[MGM DEFAULT]
PortNumber: 1186
DataDir: /usr/local/mysql/data
# First (PRIMARY) mgm node
[NDB_MGMD]
Id: 1
HostName: 192.168.0.140
# Second (BACKUP) mgm node
[NDB_MGMD]
Id: 2
HostName: 192.168.0.141
# Storage nodes
# ---------------------------------------------------------
[NDBD DEFAULT]
NoOfReplicas: 2
DataDir: /usr/local/mysql/data
FileSystemPath: /usr/local/mysql/data
[NDBD]
Id: 3
HostName: 192.168.0.145
[NDBD]
Id: 4
HostName: 192.168.0.146
[NDBD]
Id: 5
HostName: 192.168.0.147
[NDBD]
Id: 6
HostName: 192.168.0.148
# SQL Nodes
# ---------------------------------------------------------
[mysqld]
Id: 7
HostName: 192.168.0.142
[mysqld]
Id: 8
HostName: 192.168.0.143
[mysqld]
Id: 9
HostName: 192.168.0.144
# This node will is used for ndb_backup and ndb_restore
[mysqld]
# ----------------------------------------------------------
# ----------- END file -------------------------------------
# Step 07 (Configure MySql other nodes)
# --------------------------------------------------------------------
# Now, on all other servers, you place the following in /etc/my.cnf:
vi /etc/my.cnf # or gedit /etc/my.cnf
# ----------- file -----------------------------------------
[mysqld]
ndbcluster
#connectstring: primary,secondary management nodes
ndb-connectstring=nodeid=X,192.168.0.140,192.168.0.141
[mysql_cluster]
ndb-connectstring=nodeid=X,192.168.0.140,192.168.0.141
# ----------------------------------------------------------
# ----------- END file -------------------------------------
# Notice the id=x in the second connectstring: Make sure you put the correct node ID (as specified in the configuration file) in here.
#
# for sample if my.cnf is of node [NDBD] nodeId: 5, the x will be 5
# for sample if my.cnf is of node [mysqld] nodeId: 8, the x will be 8
#
# [mysql_cluster]
# ndb-connectstring=nodeid=3,192.168.0.140,192.168.0.141
# Step 08 (Testing Cluster)
# --------------------------------------------------------------------
# Starting mgmd
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
./bin/ndb_mgm
# Starting MySql Server
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/mysqld_safe --user=mysql &
# Starting MySql Data
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndbd
# Useful Commands
# --------------------------------------------------------------------
# Solaris
init 6 # restart machine
poolstat # status
pooladm -x # remove
pooladm -e # ativa
pooladm -s # salva
zonename # show current zone name
######################################################################
# START CLUSTER
# --------------------------------------------------------------------
# --------------------------------------------------------------------
# Starting mgmd nodes
# --------------------------------------------------------------------
cd /usr/local/mysql
./bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
./bin/ndb_mgm
# You can start management server using the --initial option.
#
# ./bin/ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini
#
# In this case, the global configuration file is re-read,
# any existing cache files are deleted, and the management server
# creates a new configuration cache.
# --------------------------------------------------------------------
# Starting MySql Data nodes
# --------------------------------------------------------------------
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndbd
# You can statrt management server using the --initial option.
#
# ./bin/ndbd --initial
# --------------------------------------------------------------------
# Starting MySql Server nodes
# --------------------------------------------------------------------
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/mysqld_safe --user=mysql &
# You can statrt management server using the --initial option.
#
# ./bin/mysqld_safe --user=mysql --initial &
######################################################################
# BACKUP CLUSTER
# --------------------------------------------------------------------
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndb_mgm
ndb_mgm> START BACKUP WAIT COMPLETED
######################################################################
# RESTORE CLUSTER
# --------------------------------------------------------------------
PATH=$PATH:/usr/local/mysql/bin;export PATH
cd /usr/local/mysql
./bin/ndb_mgm
ndb_mgm> enter single user mode <MYSQL SERVER NODEID>
# Then in any node recovery meta data: note: -m and c is management node ip
ndb_restore -m -n 6 -b 2 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-2 -c 192.168.0.140
# And finally for each data node recovery data: note -r
ndb_restore -r -n 6 -b 2 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-2 -c 192.168.0.140
# -n <is node number>
# -b <is backup id>
# -C <is managements node ip>
ndb_mgm> exit single user mode