最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Mysql高可用集群应用drbd heartbeat lvs keepalived mysql

来源:动视网 责编:小OO 时间:2025-09-24 11:03:10
文档

Mysql高可用集群应用drbd heartbeat lvs keepalived mysql

操作系统:CentOSrelease6.5kernel2.6.32-431.el6.x86_1,安装drbd安装依赖包:yum-yinstallgcckernel-develkernel-headersflex个人建议直接安装开发包:yum-ygroupinstalldevelopment最新版本是9.0,本人推荐用8.4.4版本下载地址:http://oss.linbit.com/drbd/http://oss.linbit.com/drbd/8.4/drbd-8.4.4.tar.gz解
推荐度:
导读操作系统:CentOSrelease6.5kernel2.6.32-431.el6.x86_1,安装drbd安装依赖包:yum-yinstallgcckernel-develkernel-headersflex个人建议直接安装开发包:yum-ygroupinstalldevelopment最新版本是9.0,本人推荐用8.4.4版本下载地址:http://oss.linbit.com/drbd/http://oss.linbit.com/drbd/8.4/drbd-8.4.4.tar.gz解
操作系统:CentOS release 6.5 kernel 2.6.32-431.el6.x86_

1,安装drbd

安装依赖包:yum -y install gcc kernel-devel kernel-headers flex

个人建议直接安装开发包:yum -y groupinstall development

最新版本是9.0,本人推荐用8.4.4版本下载地址:

http://oss.linbit.com/drbd/

http://oss.linbit.com/drbd/8.4/drbd-8.4.4.tar.gz

解压缩:tar zxvf drbd-8.4.4.tar.gz

cd drbd-8.4.4

./configure --prefix=/usr/local/drbd --with-km

make KDIR=/usr/src/kernels/2.6.32-431.3.1.el6.x86_/

make install

mkdir -p /usr/local/drbd/var/run/drbd

cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d

chkconfig --add drbd

chkconfig drbd on

【KDIR=中指定的系统内核源码路径,根据实际情况设置】

安装drbd模块

cd drbd

make clean

make KDIR=/usr/src/kernels/2.6.32-431.3.1.el6.x86_/

cp drbd.ko /lib/modules/`uname -r`/kernel/lib/

depmod

配置global_common.conf

vi /usr/local/drbd/etc/drbd.d/global_common.conf

========================================================================

global {

usage-count no;

# minor-count dialog-refresh disable-ip-verification

}

common {

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

}

options {

# cpu-mask on-no-data-accessible

}

disk {

# size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes

# disk-drain md-flushes resync-rate resync-after al-extents

# c-plan-ahead c-delay-target c-fill-target c-max-rate

# c-min-rate disk-timeout

}

net {

# protocol timeout max-epoch-size max-buffers unplug-watermark

# connect-int ping-int sndbuf-size rcvbuf-size ko-count

# allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri

# after-sb-1pri after-sb-2pri always-asbp rr-conflict

# ping-timeout data-integrity-alg tcp-cork on-congestion

# congestion-fill congestion-extents csums-alg verify-alg

# use-rle

protocol C;

}

}

===========================

=============================================

配置r0

vi /usr/local/drbd/etc/drbd.d/r0.res

========================================================================

resource r0 {

protocol C;

handlers {

# pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";

# pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";

# local-io-error "echo o > /proc/sysrq-trigger ; halt -f";

# fence-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";

# pri-lost "echo pri-lost. Have a look at the log files. | mail -s 'DRBD Alert' root";

# split-brain "/usr/lib/drbd/notify-split-brain.sh root";

# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";

}

net {

# timeout 60;

# connect-int 10;

# ping-int 10;

# max-buffers 2048;

# max-epoch-size 2048;

cram-hmac-alg "sha1";

shared-secret "MySQL-HA";# DRBD同步时使用的验证方式和密码信息。

}

disk {

on-io-error detach;

fencing resource-only;#使用dpod功能(drbd outdate-peer daemon)保证在数据不同步时不进行切换。

}

startup {

wfc-timeout 120;

degr-wfc-timeout 120;

}

device /dev/drbd0;

on node1 {

#每个主机的说明以on开头,后面是hostname(uname -n),在后面的{}中为这个主机的配置。

disk /dev/sdb1;#/dev/drbd0使用的磁盘分区是/dev/sdf1。

address 192.168.1.246:7788;#设置DRBD的监听端口,用于与另一台主机通信。

meta-disk internal;

}

on node2 {

disk /dev/sdb1;

#/dev/drbd0使用的磁盘分区是/dev/sdb1。

address 192.168.1.236:7788;#设置DRBD的监听端口,用于与另一台主机通信。

meta-disk internal; #drbd的元数据存放方式。

}

}

========================================================================

建立resource

modprobe drbd //载入 drbd 模块

lsmod | grep drbd //确认 drbd 模块是否载入

dd if=/dev/zero of=/dev/sdb1 bs=1M count=100 //把一些资料塞到 sda3 內 (否则 create-md 时会报错)

umount /dev/sdb1 //需要同步数据的设备

drbdadm create-md r0 //建立 drbd resource

drbdadm up r0

========================================================================

========================================================================

注:以上每一步骤,都需要在主备服务器上进行配置设置。

注:以下每一步骤,都需要在主服务器上进行配置设置。

========================================================================

========================================================================

设置Primary Node 在主服务器上执行我这里是node1

执行下面命令

drbdsetup /dev/drbd0 primary –o

或者执行下面命令也是可以的

drbdadm -- --overwrite-data-of-peer primary all

常用命

令:

设置为主服务器:drbdadm primary all

设置为备服务器:drbdadm secondary all

开始同步磁盘数据输入下面命令查看同步状态等待100%10G需要5分钟左右

我的是虚拟机时间根据磁盘大小和电脑性能决定。

查看同步状态:service drbd status

创建DRBD文件系统:mkfs.ext4 /dev/drbd0

========================================================================

========================================================================

注:以上每一步骤,都需要在主服务器上进行配置设置。

========================================================================

========================================================================

安装heartbeat

为了解决依赖关系和编译时候访问国外服务器问题建议采用yum安装

下载源:wget ftp://mirror.switch.ch/pool/1/mirror/scientificlinux/6rolling/x86_/os/Packages/epel-release-6-5.noarch.rpm

安装源:rpm -ivUh epel-release-6-5.noarch.rpm

安装Heartbet:yum --enablerepo=epel install heartbeat -y

安装mysql:

yum -y install mysql-server mysql-devel mysql mysql-bench mysql-test

启用mysql:/etc/init.d/mysqld start

关闭mysql:/etc/init.d/mysqld stop

关闭mysql后把数据文件放到drbd 分区上:cp -R /var/lib/mysql /data/mysql

修改/etc/my.cnf文件,在[mysqld]组增加如下配置:

datadir = /data/mysql

在heartbeat资源脚本目录建立mysql启动脚本的软连接:

ln -s /etc/init.d/mysqld /usr/local/ha/etc/ha.d/resource.d/mysqld

最后,重启MySQL服务即可

/etc/my.cnf

========================================================================

server-id = 1 #服务器ID。服务器之间不能有重复ID,一般master是1

log-bin=mysql-bin #打开mysql的binlog功能,后面的名字可以自己指定,如果不改名字的话,默认是以主机名字命名

binlog-do-db=socom #socom是需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可

binlog-ignore-db=mysql#不需要备份的数据库名称,如果需要忽略备份多个数据库,重复设置这个选项即可

========================================================================

设置Slave主机

编辑/etc/my.cnf文件,在[mysqld]中添加如下内容即可:

server-id = 2

log-bin=mysql-bin

binlog-do-db=socom

binlog-ignore-db=mysql

其他的Slave以此类推,保证server-id全局唯一即可。

在slave上执行如下命令:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.135',

-> MASTER_USER='repl_user',

-> MASTER_PASSWORD='repl_password',

-> MASTER_LOG_FILE='mysql-bin.000001',

-> MASTER_LOG_POS=98;

执行完之后执行:

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\\G

从输出可以看到:Slave_IO_Running和Slave_SQL_Running如果都为Yes时,表示配置成功。

【MASTER_LOG_FILE MASTER_LOG_POS两个数据从主服务器中来 登录mysql后 show master sta

tus】

配置heartbeat:

认证文件authkeys 权限设置为:chmod 600 authkeys

内容如下:

========================================================================

auth 1

1 crc

#2 sha1 HI!

#3 md5 Hello!

========================================================================

ha.cf主要配置文件

========================================================================

#debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility local0

keepalive 2

deadtime 30

warntime 10

initdead 120

#mcast eth1 225.0.0.1 694 1 0

ucast eth1 192.168.1.236

auto_failback on

node node1

node node2

#ping 192.168.1.1

#ping_group group1 192.168.1.10 192.168.1.10

#apiauth pingd gid=haclient uid=hacluster

#respawn hacluster /usr/local/ha/lib/heartbeat/pingd -m 100 -d 5s

#crm yes

#crm respawn

========================================================================

haresources文件内容如下

========================================================================

node1 drbddisk::r0 Filesystem::/dev/drbd0::/data mysqld IPaddr::192.168.1.135/24/eth1

========================================================================

【drbddisk和drbdupper从/usr/src/kernels/drbd-8.4.4/scripts/drbddisk这里复制】

【authkeys ha.cf haresources从/usr/share/doc/heartbeat-3.0.4这里复制】

文档

Mysql高可用集群应用drbd heartbeat lvs keepalived mysql

操作系统:CentOSrelease6.5kernel2.6.32-431.el6.x86_1,安装drbd安装依赖包:yum-yinstallgcckernel-develkernel-headersflex个人建议直接安装开发包:yum-ygroupinstalldevelopment最新版本是9.0,本人推荐用8.4.4版本下载地址:http://oss.linbit.com/drbd/http://oss.linbit.com/drbd/8.4/drbd-8.4.4.tar.gz解
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top