您的位置:首页 > 数据库 > MySQL

DRBD+heartbeat+Mysql配置安装

2017-03-04 00:15 483 查看
安装环境准备

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在每次切换完成后对数据库进行操作以此来观察切换效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: