DRBD+HeartbeatV1+MySQL安装配置实例(转...正在学习)

fm:http://snda.itprofly.com/showtopic-54.aspx

 

DRBD+HeartbeatV1+MySQL安装配置实例(在RHEL 5.3上测试OK)
                             
1.系统说明与架设结构
说明:此方案解决两台做DB sever的机器做成软raid,实现数据的安全备份,同时也实现在两台机器上数据的同步与mysql服务HA。
采用第三方软件DRDB和Heartbeat做MySQL高可用性集群方案。DRBD用来维护数据的同步和冗余,Heartbeat负责HA处理.

2.系统安装软件准备
2.1OS
Redhat ENTERPRISE Linux5.3
2.2软件包
DRBD-8.3.2.tar.gz(下载地址:http://oss.linbit.com/drbd/8.3/drbd-8.3.2.tar.gz)
libnet-1.1.2.1-1.1.i386.rpm(http://mirror.centos.org/centos-5/5.4/extras/i386/RPMS/libnet-1.1.2.1-2.rf.i386.rpm)
MySQL-client-community-5.1.41-0.rhel5.i386.Rpm(http://mirrors.sohu.com/mysql/MySQL-5.1/MySQL-client-community-5.1.41-0.rhel5.i386.rpm
MySQL-server-community-5.1.41-0.rhel5.i386.Rpm(http://mirrors.sohu.com/mysql/MySQL-5.1/MySQL-server-community-5.1.41-0.rhel5.i386.rpm
MySQL-shared-community-5.1.41-0.rhel5.i386.Rpm(http://mirrors.sohu.com/mysql/MySQL-5.1/MySQL-shared-community-5.1.41-0.rhel5.i386.rpm
2.3服务器安装配置
两台配置基本相同的Server,必须要求每台服务器有相同大小的一个分区或逻辑卷。服务器重要配置信息如下:节点1:主机名为:DB_primary, IP地址:192.168.31.173(用于网络通讯),分区为要离出一部分空间。(在本实例中,10G的硬盘,5G安装系统,装好系统后再fdisk 对留空间进行分区,在分区格式中选0,本例对将要做raid的/dev/sda3分了2G空间。(建议熟悉PV,VG,LV的概念及fdisk的分区处理)
[root@localhost ~]# fdisk –l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sda1  *          1          13      104391  83  Linux
/dev/sda2              14        650    5116702+  8e  Linux LVM
/dev/sda3            651        894    1959930    0  Empty
节点2:主机名为:DB_secondary, 192.168.31.180分区为/dev/sda3,系统安装须求与DB_primary一样。
安装完系统后,两台机器都做以下配置:
1)#vi /etc/hosts
添加
192.168.31.173  DB_primary
192.168.31.180  DB_secondary
2) 关掉seliunx及相关不须要起动的服务
# vi /etc/sysconfig/selinux
SELINUX=disabled
#ntsysv
只选network sshd syslog,其他都取消,然后都reboot,到些系统安装配置完成

3.DRBD安装和配置
3.1DRBD安装
1)从http://oss.linbit.com/drbd/下载了源码包drbd-8.3.2.tar.gz,存放到/root/software
2)开始安装,以root用户执行以下命令
#cd /root/software
#tar -zxvf drbd-8.3.2.tar.gz
#cd drbd-8.3.2
#make
#make install
#insmod drbd/drbd.ko
#lsmod |grep drbd
3.2DRBD配置
3.2.1配置文件修改(两台机)
#vi /etc/drbd.conf  使文件成为
global { usage-count yes; }
common { syncer { rate 10M; } }
resource r0 {
protocol C;
        startup {
}
        disk {
                on-io-error  detach;
        }
        net {
        }
on db_primary {
    device    /dev/drbd0;
    disk      /dev/sda3;
    address    192.168.31.173:7788;
    flexible-meta-disk  internal;
on db_secondary  {
    device    /dev/drbd0;
    disk      /dev/sda3;
    address  192.168.31.180:7788;
    meta-disk internal;
  }
}
3.2.2Primary node和secondary node设置
1) 在DB_primary创建matadata:
#drbdadm create-md r0
2) 启动drbd:
#/etc/init.d/drbd start
3) 在DB_secondary创建matadata:
#drbdadm create-md r0
4) 启动drbd:
#/etc/init.d/drbd start
3) 设置DB_primary为主节点:
#drbdadm -- --overwrite-data-of-peer primary r0
4) 在DB_primary新设备上面创建文件系统
#mkfs.ext3 /dev/drbd0
5) 将文件系统mount上:
#mkdir /drbddata
#mount /dev/drbd0 /drbddata
查看创建情况:
#cat /proc/drbd
3.3测试(重要要了解主和从之间的切换关系,是以后处理故障的基础)
1)准备数据。在DB_primary192.168.31.173创建数据
#cd  /drbddata
#mkdir test
#cd test
#echo 123 >1
2)将DB_primary上umount文件系统,然后执行drbdadm secondary all,改成secondary模式:
# umount /drbddata
# drbdadm secondary r0
3)在服务器DB_secondary192.168.31.180上执行drbdadm primary r0 改成primary模式,再mount文件系统:
#drbdadm primary r0
#mount /dev/drbd0 /drbddata
检查在/drbddata文件下的test文件和子文件123是否已经完全同步到DB_secondary ,如果OK,数据已经同步好了。
3.4配置MySQL for DRBD
3.4.1MySQL安装
在两台机器上均用超级用户root登录,执行以下操作:
#rpm -ivh rpm -ivh MySQL-client-community-5.1.41-0.rhel5.i386.rpm  MySQL-shared-community-5.1.41-0.rhel5.i386.rpm MySQL-server-community-5.1.41-0.rhel5.i386.rpm
#/etc/init.d/mysql start
#netstat -lpn|grep 3306
说明mysql安装成功

3.4.2数据目录和my.cnf配置
DB_primary设置
第一步 关闭MySQL,清理InnoDB 文件,因为后面需要重新构建,然后移动数据目录到DRBD数据区域,并建立一个软链接。
#/sbin/service mysql stop
#rm -rf /var/lib/mysql/ib*
#mv -f /var/lib/mysql /drbddata/mysql_data
#ln -s /drbddata/mysql_data /var/lib/mysql
第二步 创建和配置my.cnf文件。
#cp /usr/share/mysql/my-huge.cnf /var/lib/mysql/my.cnf
第三步 增加一个root用户为所以有服务器可以连接的权限:
#mysql
Mysql>GRANT ALL PRIVILEGES ON *.* to root @’%’  IDENTIFIED BY '123';
上面这句是为业务服务添加的相关用户和密码
设置MySQL用户root的密码,以保证数据安全。
#/usr/bin/mysqladmin -u root password 'passwd'
然后关掉mysql在DB_primary的运行,转到DB_secondary
#/etc/init.d/mysql stop
将DB_primary上umount文件系统,然后执行drbdadm secondary all,改成secondary模式:
# umount /drbddata
# drbdadm secondary r0


DB_secondary设置
对于DB_secondary,只需要进行如下操作:
#/sbin/service mysql stop
#rm -rf /var/lib/mysql
#ln -s /drbddata/mysql_data /var/lib/mysql
3.3MySQL启动和关闭
3.3.1启动MySQL
#/etc/init.d/mysql start
此时须要密码,如果用刚才在DB_primary设置的密码可以登陆,说明mysql的运行OK,并且数据目录同步一致。
3.4.3测试
按照3.3的测试,把mysql转到DB_primary,如果能完成,说明对DRDB的工作情况已经了解。可以继续做下面的heartbert.
3.5Heartbeat软件和配置(两台机基本一样,注意细节地方有不同,已蓝色标记)
3.5.1Heartbeat安装
5.1.1安装libnet
#rpm -ivh libnet-1.1.2.1-1.1.i386.rpm
3.5.2安装heartbeat(直接用yum安装,在redhat上配置centos的yum源,如没有外网也可直接把相关的包下载下来rpm安装)
#wget http://sudone.com/download/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo
#rpm –import http://mirror.centos.org/centos-5/5.3/os/i386/RPM-GPG-KEY-CentOS-5
#yum install heartbeat*
3.5.3Heartbeat配置
3.5.3.1/etc/hc.d/authkeys配置
在/etc/hc.d/下增加文件authkeys,两台服务器内容配置一样,并且赋予600权限。
#cat > /etc/ha.d/authkeys
内容如下:
auth 1
1 crc
#chmod 600 /etc/ha.d/authkeys
3.5.3.2/etc/ha.d/ha.cf配置
在/etc/hc.d/下增加文件ha.cf,两台服务器内容配置一样,并且赋予600权限。
#vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 500ms
deadtime 10
warntime 5
initdead 30
udpport 694
bcast eth0
auto_failback off
node DB_primary
node DB_secondary
ping 192.168.31.200
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
deadping 5


3.5.3.3/etc/ha.d/haresources配置
在/etc/hc.d/下增加文件ha.cf,两台服务器内容配置基本一样,不同之处在于Node_name用hostname代替。192.168.31.200为虚拟IP,即对外提供服务的IP。
#vi /etc/ha.d/haresources
db_primary内容如下:db_primary 192.168.31.200 drbddisk Filesystem::/dev/drbd0::/drbddata::ext3 mysql
db_secondary 内容如下:db_secondary 192.168.31.200 drbddisk Filesystem::/dev/drbd0::/drbddata::ext3 mysql
/etc/ha.d/haresources配置完毕之后,需要拷贝两个文件到系统目录,操作如下:
#cp -rf /etc/ha.d/resource.d/drbddisk /etc/init.d
#cp -rf /etc/ha.d/resource.d/Filesystem /etc/init.d
3.5.3.4启动Heartbeat
先在db_primary上启动,然后在db_secondary上启动
#/etc/init.d/heartbeat start
用ifconfig能看到eth0:0的IP地址192.168.31.200即说明服务器启动,然后在db_secondary启动heartbeat服务此时DB_primary和DB_secondary和同时运行,DB_primary对外提供服务,DB_secondary standby。
4.模拟测试及处理问题流程
4.1 db_primary宕机或网络中断
4.1.1db_primary宕机
db_primary宕机,此时db_secondary直接接管服务,网络无缝切换,服务转到db_secondary上成为primary,如果db_primary开机后系统正常工作,此时在db_primary上运行drbdadm secondary r0,并启动heartbeat服务,那么原来的db_primary成为secondary.
4.1.2db_primary网络中断
db_primary网络中断几秒后,此时db_secondary直接接管服务,网络无缝切换,服务转到db_secondary上成为primary,如果db_primary接上网线后正常,此时在db_primary上运行drbdadm secondary r0,并启动heartbeat服务,那么原来的db_primary成为secondary.
4.1.3以上两种情况出现后服务器的主从切换
以上两种情况出现后都会导致原来的db_primary成为secondary,在我们了解的heartbeat的工作原理后,很容易对它们做主从的切换。此时只须要在db_secondary关闭heartbeat服务,使服务无缝切换到db_primary上,然后再在db_secondary启动heartbeat服务,使db_secondary成为standby.
4.2 db_secondary宕机或网络中断
此种情况发生后,如果机器重启后系统正常,只须执行drbdadm secondary r0并启动heartbeat服务,使其成为standby.


4.3机器宕机系统无法正常启动
无论是哪一台机器出现这种问题,请不要随意重启另一台正常工作的服务器,请参照db_secondary进行配置,请注意细节地方,分清db_secondary和db_primary.

你可能感兴趣的:(mysql,工作,centos,网络,服务器,测试)