MySQL+DRBD+Keepalived

一.     环境描述

OS环境:CentOS 5.5 x86_64 (development环境)

DRBD版本:

drbd83-8.3.13-2.el5.centos.x86_64

kmod-drbd83-8.3.13-1.el5.centos.x86_64

MySQL版本:MySQL 5.5.28

Keepalived版本:keepalived-1.1.19-1.i386.rpm

drbd3:192.168.0.96

drbd4:192.168.0.97

drbd_vip:192.168.0.100

二.     DRBD部署

a)  定义主机名

# vim  /etc/hosts

192.168.0.96 drbd3

192.168.0.97 drbd4

b)  创建分区

在drbd3和drbd4上分别创建两个10G大小空间的分区,并不对分区进行文件系统格式化

c)   yum部署DRBD

yum -y install drbd83* kmod-drbd83

d)  配置DRBD

# vim /etc/drbd.conf

global{

usage-count no;                                #这个问你让不让官网统计

}

common {

syncer {rate 100M;}                         #传输速度

}

resource r0 {

protocol C;                                           #传输协议(下面进行协议说明)

startup {

}

disk {

on-io-error detach;

}

net {                                                       #处理脑裂方法(下面进行说明)

cram-hmac-alg "sha1"; #两台服务器通信间的算法

shared-secret "FooFunFactory";

#               after-sb-0pri disconnect;

#               after-sb-1pri disconnect;

#               after-sb-2pri disconnect;

after-sb-0pri discard-younger-primary;

after-sb-1pri discard-secondary;

after-sb-2pri call-pri-lost-after-sb;

rr-conflict disconnect;

}

syncer {

rate 100M;

al-extents 257;

}

on drbd3{                                             #这里一定要是hosts定义的名称

device  /dev/drbd0;                      #逻辑设备路径

disk    /dev/hda3;                         #真实设备路径

address  192.168.0.96:7789;

meta-disk  internal;

}

on drbd4{

device  /dev/drbd0;

disk    /dev/hda3;

address  192.168.0.97:7789;

meta-disk  internal;

}

}

在drbd3 上执行:

drbdadm create-md r0 (创建drbd记录信息的数据块,正常会有下面提示)

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.

在drbd4 上执行:drbdadm create-md r0

#/etc/init.d/drbd start 启动服务,2台机子都启动,这个启动有时候要你填YES

在drbd3上执行:drbdadm -- --overwrite-data-of-peer primary r0 设为主节点

mkfs.ext3 /dev/drbd0

mount /dev/drbd0  /data

测试:

在drbd3上:

cd /data/

touch test

umount /dev/drbd0

drbdadm secondary r0

在drbd4上执行:

drbdadm primary r0

mount /dev/drbd0 /data/

DRBD 协议说明:

A协议:数据一旦写入磁盘并发送到网络中就认为完成了写入操作

B协议:收到接收确认就认为完成了写入操作

C协议:收到写入确认就认为完成了写入操作

DRBD net处理脑裂说明:

DRBD设备的三个进程:

每个drbd设备都有三个进程:

1)  drbd0_worker是drbd0的主进程

2)  drbd0_asender是primary上的drbd0的数据发送进程

3)  drbd0_receiver是secondary上的drdb0的数据写入进程

DRBD几点注意的地方:

1)  mount drbd设备以前必须把设备切换到primary状态

2)  两个节点中,同一时间只能有一台处于primary状态,另一台是secondary状态

3)  处于secondary状态的节点不可以挂载

4)  主备最好使用大小一样的分区。

DRBD使用时建议使用Innodb存储引擎,同时打开binlog日志,设置innodb_flush_log_at_commit=1。MyISAM存储引擎在DRBD上容易造成数据丢失,及文件损坏。

DRBD脑裂后处理:

在drdb4上

drbdadm secondary r0

drbdadm — –discard-my-data connect r0

drbdadm connect r0

在drbd3上

drbdam disconnect r0

drbdadm connect r0

三.     MySQL部署

添加mysql用户:

useradd mysql –s /sbin/nologin

安装cmake工具:

wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz

tar zxfv cmake-2.8.7.tar.gz

cd cmake-2.8.7

./configure  && make && make install

安装MySQL

tar zxfv mysql-5.5.28.tar.gz

cd ../mysql-5.5.28

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/3306  -DWITH_INNOBASE_STORAGE_ENGINE=on -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/data/3306/my

sqld.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DSYSCONFDIR=/etc/mysql/3306 && make && make install

cd /usr/local/mysql/

chown -R mysql .

chgrp -R mysql .

scripts/mysql_install_db --user=mysql  --datadir=/data/3306

创建PID并授权

cp support-files/mysql.server /etc/init.d/mysqld

四.     Keepalived部署

部署keepalived:

rpm -ivh keepalived-1.1.19-1.i386.rpm

在drbd3上配置文件如下:

-----------------/etc/keepalived/keepalived.conf-----------------

! Configuration File for keepalived

global_defs {

router_id 192.168.0.96

}

vrrp_script chk_mysql {

script "/etc/keepalived/check_mysql.sh"

interval 5

weight  -10

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 52

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.0.100

}

track_script {

chk_mysql

}

}

--------------------------------- check_mysql.sh ----------------------------------------

#!/bin/bash

A=`ps -C mysqld --no-header |wc -l`

if [ $A -eq 0 ];then

/bin/umount /data/

drbdadm secondary r0

killall keepalived

fi

------------------------------------------to_master.sh--------------------------------------------

#!/bin/bash

drbdadm primary r0

/bin/mount /dev/drbd0 /data/

/etc/init.d/mysqld start

在drbd4上配置文件如下:

-----------------/etc/keepalived/keepalived.conf-----------------

! Configuration File for keepalived

global_defs {

router_id 192.168.0.97

}

vrrp_sync_group VI{

group {

VI_1

}

notify_master /etc/keepalived/to_master.sh

notify_backup /etc/keepalived/to_backup.sh

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 52

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.0.100

}

}

------------------------------------------to_master.sh--------------------------------------------

#!/bin/bash

drbdadm primary r0

/bin/mount /dev/drbd0 /data/

/etc/init.d/mysqld start

------------------------------------------to_backup.sh-------------------------------------------

#!/bin/bash

/etc/init.d/mysqld stop

/bin/umount /dev/drbd0

drbdadm secondary r0

时间: 2024-10-31 17:51:32

MySQL+DRBD+Keepalived的相关文章

构建MySQL+DRBD+Keepalived高性能架构

前言* DRBD(DistributedReplicatedBlockDevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的开源软件,类似于RAID1数据镜像,通常配合keepalived.heartbeat等HA软件来实现高可用性.这里简单记录仅供参考. 一.实施环境 系统版本:CentOS 5.8 DRBD版本: drbd-8.3.15 Keepalived:keepalived-1.1.15 Master:192.168.149.128 Backup:192.168.149.1

DRBD+keepalived+LAMP+discuz

DRBD(Distributed Replicated Block Device)是一个基于块设备级别在远程服务器直接同步和镜像数据的开源软件,类似于RAID1数据镜像,通常配合keepalived.heartbeat等HA软件来实现高可用性. DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能,当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中. 本地(master)与远程主机(backup)的保证实时同步,如

IV 12 MySQL+drbd+heartbeat

一主多从是最常用的DB架构方案,该架构部署简单.维护方便,通过代理或程序的方式可实现rw splitting,且多个从库通过LVS或haproxy实现LB分担r的压力,排除了r的单点问题,但仅有一个主库这也是单点,若主出问题w将停止,最简单的方案人工介入,做监控,主一旦宕机,管理人员手动选择半同步的那个从改为主,让其它从与新的主同步,人工介入虽可行但高要求的场合并不适用 注: 正常情况下MySQL-M-active负责w,MySQL-M-inactive为不可见状态,MySQL slave负责r

MySql:利用keepalived构建高可用MySQL-HA

关于MySQL-HA,目前有多种解决方案,比如heartbeat.drbd.mmm.共享存储,但是它们各有优缺点.heartbeat.drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对于不会脚本语言的人来说,这无疑是一种脑裂问题:对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支:对于共享存储,个人觉得MySQL数据还是放在本地较为安全,存储设备毕竟存在单点隐患.使用MySQL双mast

Mysql+DRBD+Heartbeat 实现mysql高可用的双击热备(DRBD篇)

DRBD官方tar包下载地址:   http://oss.linbit.com/drbd/ 环境介绍: 系统版本:CentOS 6.4 (64位) 内核版本  2.6.32-358.el6.x86_64 软件版本:drbd-8.4.3.tar.gz 主:10.0.0.1   从:10.0.0.2 两台机器上的hosts都需要修改: [[email protected] ~]# vim /etc/hosts 10.0.0.1    node1 10.0.0.2    node2 两台服务器双网卡,

Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)

*************************************部署MYSQL******************************************* yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison* useradd mysql -d /usr/loc

mysql+DRBD+heartbeat

MySQL+DRBD+heartbeat                     概述: DRBD 一.DRBD简介 DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实现方式是通过网络来镜像整个设备.你可以把它看作是一种网络RAID.它允许用户在远程机器上建立一个本地块设备的实时镜像. 二.DRBD工作原理 (DRBD Primary)负责接收数据,把数据写到本地磁

MySQL的keepalived高可用监控脚本

MySQL的keepalived高可用监控脚本 MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占master的机制的,但是如果我们做了MySQL的keepalived的高可用的时候,就要考虑一种情况的发生,那就是如果机器网卡并没有断,二十由于MySQL服务的不稳定,或者人为的误操作,导致的服务关闭,会引起的结果就是,keepalive并不会切换,因为并不是主master的虚拟ip不存在,而是服务已经停止

Corosync+Pacemaker+MySQL+DRBD(二)

上接Corosync+Pacemaker+MySQL+DRBD(一)http://9124573.blog.51cto.com/9114573/1768076 ⑶布署corosync+pacemaker ◆安装软件包 pacemaker依赖corosync,安装pacemaker包会连带安装corosync包 yum -y install pacemaker [[email protected] ~]# yum -y install pacemaker;ssh [email protected]