搭建基於Heartbeat v2+NFS的高可用MySQL集羣

1、實驗環境

HA1:192.168.1.17(RHEL5.8_32bit,web server)

HA2:192.168.1.18(RHEL5.8_32bit,web server)

NFS:192.168.1.19(RHEL5.8_32bit,nfs server)

VIP:192.168.1.20


2、搭建NFS服務器

<1> 建立LVM邏輯卷

# fdisk /dev/sda
n --> e --> n --> +8G --> t --> 5 --> 8e --> w
# partprobe /dev/sda
# pvcreate /dev/sda5
# vgcreate myvg /dev/sda5
# lvcreate -L 5G -n mydata myvg
# lvs
# mke2fs -j /dev/myvg/mydata
# mkdir /mydata
# vim /etc/fstab
/dev/myvg/mydata        /mydata                 ext3    defaults        0 0
# mount -a

<2> 創建MySQL賬戶

# groupadd -g 3306 mysql
# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql
# mkdir /mydata/data
# chown -R mysql.mysql /mydata/data

<3> 配置NFS服務

# vim /etc/exports
/mydata         192.168.1.17(no_root_squash,rw) 192.168.1.18(no_root_squash,rw)
# exportfs -arv


3、創建MySQL賬戶(各個節點)

各個節點和NFS上存在mysql賬號且id號必須保持一致

# groupadd -g 3306 mysql
# useradd -u 3306 -g 3306 -s /sbin/nologin -M mysql
# mkdir /mydata


4、掛載NFS目錄並測試是否可寫(各個節點)

# mount 192.168.1.19:/mydata /mydata
# ll /mydata
# usermod -s /bin/bash mysql
# su - mysql
$ cd /mydata/data
$ touch a
$ ls
$ rm a
$ exit
# usermod -s /sbin/nologin mysql
# umount /mydata


5、通用二進制安裝並配置MySQL服務(各個節點)

<1> 解壓包並修改目錄權限

# tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local
# ln -sv mysql-5.5.28-linux2.6-i686 mysql
# cd mysql
# chown -R root:mysql ./*

<2> 掛載NFS目錄並初始化MySQL

MySQL初始化時使用root賬號執行,NFS服務需配置no_root_squash,但是安全性缺乏保證,因此儘量配置指定各個節點地址共享

HA1:(其他節點上無需做初始化MySQL,即此步驟省略)

# mount 192.168.1.19:/mydata /mydata
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
# ll /mydata/data/

<3> 修改配置文件

# cp support-files/my-large.cnf /etc/my.cnf
# vim /etc/my.cnf
[mysqld]
datadir = /mydata/data
innodb_file_per_table = 1

<4> 添加啓動腳本(關閉自啓動)

# cp support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld off


6、掛載NFS目錄並測試MySQL服務是否正常(各個節點)

# mount 192.168.1.19:/mydata /mydata
# service mysqld start
# /usr/local/mysql/bin/mysql
mysql> create database mydb;
mysql> show databases;
mysql> show global variables like '%innodb%';
# service mysqld stop
# umount /mydata


7、啓動Heartbeat v2服務並使用crm配置資源

HA1:

# service heartbeat start
# ssh node2 'service heartbeat start'
# crm_mon(查看哪個主節點)
# hb_gui &

crm配置資源組:(資源啓動順序:vip, mysqlstore, mysqld)

234152470.png


232642512.png


232644570.png


8、使用mysql客戶端測試

<1> 主節點上配置遠程訪問的mysql賬號

# /usr/local/mysql/bin/mysql
mysql> grant all on *.* to root@'%' identified by 'redhat';
mysql> flush privileges;

<2> 客戶端登陸測試

# mysql -uroot -h192.168.1.20 -p
mysql> show databases;
mysql> use mydb;
mysql> create table test (id int unsigned not null auto_increment primary key,name char(20));

<3> 將主節點standby而後客戶端登陸測試

# mysql -uroot -h192.168.1.20 -p
mysql> show tables;
mysql> desc test;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章