DRBD+heartbeat+Mysql配置安装

本文介绍如何在两台服务器上部署MySQL、DRBD及Heartbeat集群,实现数据库高可用性和故障转移。包括环境配置、软件安装、参数调整、测试验证等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装环境准备
1. 配置/etc/hosts文件,在两台服务器的文件中,均在最后加入以下配置:
vmtxuzhengyunagiostest1 172.27.206.6
vmtxuzhengyunagiostest2 172.27.206.7
2. 关闭两台设备的安全配置
chkconfig iptables off
vi /etc/selinux/config
把SELINUX=enforcing改成disabled
3. 重启服务器以生效


4.安装GCC 
  yum -y install gcc gcc-c++ kernel-devel


5.安装flex
  yum  -y  install   kernel-devel  kernel kernel-headers   flex


6.安装 lrzsz 安装上传下载工具 ,执行rz命令进行文件上传,执行[sz 文件名]命令进行文件下载。
  yum -y install lrzsz


7.更新内核
  yum install kernel* 


划分同步硬盘块
1.fdisk -l 
//--------------
Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000ed56


   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        7833    62401536   8e  Linux LVM


Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000




Disk /dev/mapper/VolGroup-lv_root: 52.3 GB, 52344913920 bytes
255 heads, 63 sectors/track, 6363 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000




Disk /dev/mapper/VolGroup-lv_swap: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000




Disk /dev/mapper/VolGroup-lv_home: 5108 MB, 5108662272 bytes
255 heads, 63 sectors/track, 621 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
//-----------
2.查看是否有/dev/sdb,没有请挂载第二块硬盘,大小预计是10GB
由于安装操作系统的时候,预留了一部分磁盘空间没有分区,所以要在/dev/sdb上划分出/dev/sdb1
fdisk /dev/sdb
//-------------------------
The number of cylinders for this disk is set to 17844.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
First cylinder (3147-17844, default 3147):[直接回车]
Using default value 3147
Last cylinder or +size or +sizeM or +sizeK (3147-17844, default 17844):[直接回车]
Using default value 17844
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
//----------------------
再用fdisk -l命令查看一下,是否划分成功
//------------------------
Disk /dev/sdb: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x58198a30
Device Boot Start End Blocks Id System
/dev/sdb1 1 5221 41937651 83 Linux
//-------------------------------
3.重启系统,让划分生效


安装MySQL
1)yum 安装MYSQL
   yum install -y mysql-server mysql mysql-deve


2)测试是否完成安装
  rpm -qi mysql-server


3)启动mysql 服务  
   service mysqld start


4)设置成开机启动,这样就不用每次都去手动启动了
  chkconfig mysqld on 
5) 为root账号设置密码
 /usr/bin/mysqladmin -u root password '_Y-93iE2'
6)通过 mysql -u root -p 命令来登录我们的mysql数据库了


安装DRBD
1)rz上传本地DRBD安装包到/home
2)解压
   tar xzvf drbd-8.3.15.tar.gz
3)cd drbd-8.3.15
4)使用命令查看,此时的内核版本
  # uname -r
   2.6.32-642.11.1.el6.x86_64
5)./configure --prefix=/usr/local/drbd --with-km --with-heartbeat
6)make KDIR=/usr/src/kernels/2.6.32-642.15.1.el6.x86_64
7)make install
8)cd scripts
9)mkdir /usr/share/cluster
10)cp drbd.sh.rhcs /usr/share/cluster/drbd.sh
11)cp drbd.metadata.rhcs /usr/share/cluster/drbd.metadata
12)cp drbd /etc/init.d/
13)chkconfig --add drbd
14)chkconfig drbd on


配置DRBD
1) 配置文件修改 vi /usr/local/etc/drbd.conf
include "drbd.d/global_common.conf";
include "drbd.d/*.res";
2)保持默认即可 vi /usr/local/drbd/etc/drbd.d/global_common.conf
global {
        usage-count yes;
        # minor-count dialog-refresh disable-ip-verification
}


common {
        protocol C;


        handlers {
                # These are EXAMPLE handlers only.
                # They may have severe implications,
                # like hard resetting the node under certain circumstances.
                # Be careful when chosing your poison.


                # pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
                # pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
                # local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
                # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
                # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
                # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
                # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
                # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
        }


        startup {
                # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
        }


        disk {
                # on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes
                # no-disk-drain no-md-flushes max-bio-bvecs
        }


        net {
                # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers
                # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret
                # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork
        }
3)vi /usr/local/drbd/etc/drbd.d/r0.res
resource r0 {
on vmtxuzhengyunagiostest1 {
device /dev/drbd0;
disk /dev/sdb1;
address 172.27.206.6:7789;
meta-disk internal;
}
on vmtxuzhengyunagiostest2 {
device /dev/drbd0;
disk /dev/sdb1;
address 172.27.206.7:7789;
meta-disk internal;
}
}
2)生成新的modules.dep。
depmod
3)加载drbd的内核模块
 modprobe drbd
4)确认 drbd 模块是否载入
lsmod|grep drbd 
5)创建drbd元数据
drbdadm create-md r0
6)启动drbd
drbdadm up r0
7)选择其中一台服务器作为DRBD的primary节点,并格式化DRBD块设备(注意此步骤只需要在其中一台服务器上做)
drbdadm -- --overwrite-data-of-peer primary r0
mkfs.ext3 /dev/drbd0
8)查看DRBD同步状态
cat /proc/drbd
9)挂载目录
mkdir /data
mount /dev/drbd0 /data


配置MySQL


1. 修改配置文件
vi /etc/my.cnf
修改datadir = /data/mysql_data此处为MySQL存放数据文件的位置
2. 创建目录与授权,在primary上操作
mkdir /data/mysql_data
chown mysql: /data/mysql_data
3. 初始化数据库
/usr/bin/mysql_install_db --user=mysql --datadir=/data/mysql_data
4.启动数据库
service mysqld start


MySQL+DRBD切换测试


至此,MySQL与DRBD部署完毕,可进行手工主备切换测试
1. 在vmtxuzhengyunagiostest1上正在运行的数据库中创建一个数据库,如aaa
2. 停止vmtxuzhengyunagiostest1上的MySQL并且将DRBD切换成secondary
service mysqld stop
umount /dev/drbd0 /data
drbdadm secondary r0
3. 在vmtxuzhengyunagiostest2上开启MySQL服务,并且将DRBD切换成primary(切换前需要确认在vmtxuzhengyunagiostest2上有/data目录,没有的话手工创建)
drbdadm primary r0
mount /dev/drbd0 /data
service mysqld start
4. 确认是否切换成功
可以查看/proc/drbd确认,并且进入vmtxuzhengyunagiostest2上的MySQL查看是否存在数据库aaa


安装Heartbeat依赖项
1) 安装glib
 yum install bzip2-devel libxml2* yacc bison glib2-devel
3)rz上传本地libnet-1.1.2.1.tar.gz安装包到/home
4)tar xzvf libnet-1.1.2.1.tar.gz
5)cd libnet 
6)./configure
7)make
8)make install


安装Heartbeat
1)rz上传本地epel-release-latest-6.noarch.rpm安到/home
2)rpm -ivh epel-release-latest-6.noarch.rpm
3)yum -y install heartbeat-stonith heartbeat-pils heartbeat heartbeat-devel heartbeat-gui libnet


配置Heartbeat
1. 寻找主要包括三个配置文件,authkeys,ha.cf和haresources
rpm -q heartbeat -d 
2)vi authkeys
把以下两行前面的注释去掉,使用crc的认证方式
auth 1
1 crc


3) 配置ha.cf
vmtxuzhengyunagiostest1上


vi ha.cf
logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth2 172.27.206.7
auto_failback on
node   vmtxuzhengyunagiostest1
node   vmtxuzhengyunagiostest2
ping 172.27.206.255
respawn hacluster /usr/lib64/heartbeat/ipfail




vmtxuzhengyunagiostest2上


vi ha.cf


logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth2 172.27.206.6
auto_failback on
node    vmtxuzhengyunagiostest1
node    vmtxuzhengyunagiostest2
ping 172.27.206.255
respawn hacluster /usr/lib64/heartbeat/ipfail


4) 配置haresources
haresources用来设置master的主机名、虚拟IP、服务以及磁盘挂载等
vi haresources
在最后加入一行
vmtxuzhengyunagiostest1 IPaddr:: 172.27.206.5/24/eth1 drbddisk::r0 Filesystem::/dev/drbd0::/data mysql
两台服务器上的配置必须一致
cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/ha.cf
cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/authkeys
cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/haresources
cd /etc/ha.d
chmod 600 authkeys
5)启动Heartbeat
service heartbeat start


DRBD脑裂处理


在选定的非主节点上执行
drbdadm secondary r0
drbdadm -- --discard-my-data connect r0
主节点上执行
drbdadm connect r0


MySQL+DRBD+Heartbeat切换测试


1. 在vmtxuzhengyunagiostest1上停止heartbeat服务后,drbd与mysql切换至vmtxuzhengyunagiostest2
2. 在vmtxuzhengyunagiostest1上重新启动heartbeat服务后,drbd与mysql切换回vmtxuzhengyunagiostest1
3. 将vmtxuzhengyunagiostest1上的172.27.206.6 eth2网卡停止,则vmtxuzhengyunagiostest1无法ping通之前配置的172.27.206.255,drbd与mysql切换至vmtxuzhengyunagiostest2
4. 将vmtxuzhengyunagiostest1上的eth1网卡恢复,drbd与mysql切换回vmtxuzhengyunagiostest1
5. 将vmtxuzhengyunagiostest1服务器直接关机,drbd与mysql切换至vmtxuzhengyunagiostest2
6. 将vmtxuzhengyunagiostest1服务器重新开机,drbd与mysql切换回vmtxuzhengyunagiostest1
注意:切换过程中,可进行ping 172.27.206.5进行测试,或者连接mysql在每次切换完成后对数据库进行操作以此来观察切换效果。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值