Quantcast
Channel: MySQL Forums - NDB clusters
Viewing all articles
Browse latest Browse all 1562

MySql Cluster 7 installation and configuration in Solaris 10 w/zones (container). (no replies)

$
0
0
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

Viewing all articles
Browse latest Browse all 1562

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>