RHEL5部署mysql高可用性集群

本文是参考了网上的一些资料,自己亲自实践的,经历了一次失败,重新安装了一次虚拟机rhel5,在找linbet的时候,很多老大们的链接都失效了,最后自己找到最新的链接(文章里有),感谢那些分享经验的朋友们!!

试验环境:

vmware 7.1.1

三台虚拟机:

操作系统           IP地址                                   部署应用              备注                  主机名

centos5          192.168.1.146/eth0               nfs服务端       

rhel5                192.168.1.144 /eth0              mysql              1.1.1.1  /eth1      rhel5A(主)

rhel5                192.168.1.145/eth0               mysql              1.1.1.2 /eth1       rhel5B (备)

一、nfs服务器搭建:

  

1.查询系统安装包 nfs-utils nfs-utils-lib portmap
[root@Centos ~]# rpm -qa | grep nfs
nfs-utils-lib-1.0.8-7.6.el5
nfs-utils-1.0.9-44.el5
[root@Centos ~]# rpm -qa | grep portmap
portmap-4.0-65.2.2.1
2.检查系统服务 
 

 

 

[root@Centos ~]# chkconfig nfs on
 
[root@Centos ~]# mkdir /nfsdata
[root@Centos ~]# mkdir /nfsdata/mysql_data
3.修改配置文件
[root@Centos ~]# vi /etc/exports
/nfsdata    192.168.1.0/24(rw,sync,no_root_squash)
[root@Centos ~]# exportfs -rv
[root@Centos ~]# service nfs start
4.检查输出
[root@Centos ~]# showmount -e 192.168.1.146
Export list for 192.168.1.146:
/nfsdata 192.168.1.0/24

二、安装mysql  (主备相同)

[root@rhel5A ~]# mkdir /data

[root@rhel5A ~]# mount -t nfs 192.168.1.146:/nfsdata /data

[root@rhel5A ~]# df –h
文件系统               容量   已用 可用 已用% 挂载点
/dev/sda3               18G 2.2G   15G 14% /
/dev/sda1              122M   11M 105M 10% /boot
tmpfs                  327M     0 327M   0% /dev/shm
192.168.1.146:/nfsdata
                       18G 3.6G   13G 22% /data
[root@rhel5A ~]# groupadd mysql
[root@rhel5A ~]# useradd -g mysql -s /sbin/nologin -M mysql
[root@rhel5A ~]# cd /tmp
[root@rhel5A tmp]# tar -zxvf mysql-5.1.49.tar.gz
[root@rhel5A tmp]# cd mysql-5.1.49/
[root@rhel5A mysql-5.1.49]# autoreconf --force --install
[root@rhel5A mysql-5.1.49]# libtoolize --automake --force
[root@rhel5A mysql-5.1.49]# automake --force --add-missing
[root@rhel5A mysql-5.1.49]# ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --with-charset=utf8 --with-extra-charsets=all --enable-assembler --enable-thread-safe-client –without-innodb
 
需要innodb的要加 --with-plugins=innobase innodb可以支持4G内存,但是copy my-innodb-heavy-4G.cnf
[root@rhel5A mysql-5.1.49]# make
[root@rhel5A mysql-5.1.49]# make install
[root@rhel5A mysql-5.1.49]# cp support-files/my-large.cnf /etc/my.cnf
[root@rhel5A mysql-5.1.49]# chown -R mysql.mysql /usr/local/mysql/
[root@rhel5A mysql-5.1.49]# vi /etc/my.cnf
更改:
skip-locking 为 skip-external-locking
log-error = /usr/local/mysql/var/rhel5A.err
[root@rhel5A mysql-5.1.49]# /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql_data --user=mysql --pid-file=/usr/local/mysql/tmp/mysql.pid
[root@rhel5A mysql-5.1.49]# cp support-files/mysql.server /etc/init.d/mysqld
[root@rhel5A mysql-5.1.49]# chmod 755 /etc/init.d/mysqld
[root@rhel5A mysql-5.1.49]# vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql_data
pid_file=/usr/local/mysql/tmp/mysql.pid
server_pid_file=/usr/local/mysql/tmp/rhel5A.pid
[root@rhel5A mysql-5.1.49]# mkdir /usr/local/mysql/var
[root@rhel5A mysql-5.1.49]# chown -R mysql.mysql /usr/local/mysql/
[root@rhel5A mysql-5.1.49]# service mysqld start
这样就可以把日志文件和pid文件分离到本机
[root@rhel5A mysql-5.1.49]# ln -s /usr/local/mysql/bin/mysql /usr/bin/
[root@rhel5A mysql-5.1.49]# ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/

三、安装heartbeat

主备基本安装相同,唯一不同的是ha.cf里面 ucast eth1 1.1.1.2 这里的IP指向对方IP

 

[root@rhel5A mysql-5.1.49]# cd /tmp
[root@rhel5A tmp]# wget http://packetfactory.openwall.net/libnet/dist/libnet.tar.gz
[root@rhel5A tmp]# tar -zxvf libnet.tar.tar
[root@rhel5A tmp]# cd libnet
[root@rhel5A libnet]# ./configure
[root@rhel5A libnet]# make && make install
[root@rhel5A libnet]# cd ..
[root@rhel5A tmp]# tar -zxvf heartbeat-2.1.3.tar.gz
[root@rhel5A tmp]# cd heartbeat-2.1.3
[root@rhel5A heartbeat-2.1.3]# groupadd haclient
[root@rhel5A heartbeat-2.1.3]# useradd -g haclient hacluster
[root@rhel5A heartbeat-2.1.3]# ./ConfigureMe configure
[root@rhel5A heartbeat-2.1.3]# make && make install
[root@rhel5A heartbeat-2.1.3]# cd /etc/ha.d/
[root@rhel5A ha.d]# vi ha.cf
debugfile /var/log/ha-debug
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 10
deadtime 60
warntime 20
initdead 60
udpport 694
auto_failback on
node rhel5A
node rhel5B
ucast eth1 1.1.1.2
ping_group group1 192.168.1.144 192.168.1.146
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
hopfudge
 
其中:
1.x的基本配置信息如下:
引用
# more /etc/ha.d/ha.cf
#发送keepalive包的间隔时间
keepalive 2
#定义节点的失效时间
deadtime 30
#定义heartbeat服务启动后,等待外围其他设备(如网卡启动等)的等待时间
initdead 30
#使用udp端口694 进行心跳监测
udpport 694
#定义心跳
bcast   eth0 eth1               # Linux
#定义是否使用auto_failback功能
auto_failback off
#定义集群的节点
node    hatest3
node    hatest4
#使用heartbeat提供的日志服务,若use_logd设置为yes后,下面的三个选项会失效
use_logd yes
#logfile /var/log/ha_log/ha-log.log
#logfacility local7
#debugfile /var/log/ha_log/ha-debug.log
#设定一个监控网关,用于判断心跳是否正常
ping 192.168.228.153
deadping 5
Ucast eth1 1.1.1.2 指的是连接心跳的网卡 eth1,对方IP 1.1.1.2
#指定和heartbeat一起启动、关闭的进程
respawn hacluster /usr/local/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
该配置文件是比较简单和清晰的,在不适用 crm yes的情况下,即为1.x style格式。
4、设定 haresources文件
这个是1.x使用的集群资源文件,每行一个组,第一列定义的是优先级服务器,也就是默认资源运行在该服务器上:
 
[root@rhel5A ha.d]# vi haresources
rhel5A IPaddr::192.168.1.200/24/eth0 Filesystem::192.168.1.146:/nfsdata::/data::nfs mysqld
这里有四个信息:第一个是优先服务器节点 rhel5A ;第二个是服务虚拟IP地址;第三个是文件系统;第四个是维护的服务脚本
 
这里heartbeat会自主维护文件系统和服务脚本,随heartbeat启动而启动
[root@rhel5A ha.d]# vi authkeys
auth 1
1 crc
这里使用第一种验证方式
[root@rhel5A ha.d]# chmod 600 authkeys
[root@rhel5A ha.d]# cp /etc/init.d/mysqld /etc/ha.d/resource.d/
[root@rhel5A ha.d]# vi /etc/hosts
1.1.1.1    rhel5A
1.1.1.2    rhel5B
[root@rhel5A ha.d]# umount /data/
[root@rhel5A ha.d]# chkconfig --add heartbeat
[root@rhel5A ha.d]# chkconfig heartbeat on
 
两台都要添加

四、测试

1.停掉两台服务器的mysql,卸载nfs

2.service heartbeat start启动两台heartbeat

3.ifconfig查看虚拟IP是否提起来,在主服务器上建立个数据库

4.断掉主服务器网线,测试备机是否启动服务

你可能感兴趣的:(mysql,数据库,HA,heartbeat,nfs)