MySQL  - 讨论区

标题:使用DRBD实现高可用的MySQL数据库

2013年12月10日 星期二 10:35

DRBD全称是Distributed Replicated Block Device,是一种在线磁盘复制解决方案,可以为MySQL等应用提供高可用的存储服务。

我在之前的一篇文章中认为:对于中小型数据库集群,使用DRBD实现主库的高可用,是最为简单且可靠的方案。本篇文章我们通过一个示例来介绍此方案的安装和配置过程。后续文章会继续介绍使用Heartbeat实现资源的自动Failover。

更多DRBD相关信息请参考官方文档:

http://www.drbd.org/users-guide-8.4/

一、环境信息:
两台服务器的IP地址:172.16.88.89,172.16.88.94
操作系统:CentOS 6.5 X86_64
数据磁盘:/dev/sda3

二、安装软件(两台服务器均需配置和安装):

DRBD相关软件需要配置如下安装源(/etc/yum.repos.d/elrepo.repo ):

[elrepo]
name=ELRepo.org Community Enterprise Linux Repository - el6
baseurl=http://repos.lax-noc.com/elrepo/elrepo/el6/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://elrepo.org/RPM-GPG-KEY-elrepo.org
protect=0

执行安装:
yum install -y drbd84-utils kmod-drbd84

三、配置DRBD磁盘(两台服务器均需配置和安装):

DRBD资源文件(/etc/drbd.d/mysql.res ):

resource mysql {
 options {
  on-no-data-accessible suspend-io;
 }
 net {
  cram-hmac-alg "sha1";
  shared-secret "this_is_secret";
  verify-alg sha1;
 }
 disk {
  disk-flushes no;
  disk-barrier no;
  md-flushes no;
  resync-rate 100M;
 }
 volume 1 {
  device minor 1;
  disk /dev/sda3;
  meta-disk internal;
 }
 on db-89 {
  address    172.16.88.89:7780;
 }
 on db-94 {
  address    172.16.88.94:7780;
 }
}

四、初始化DRBD磁盘(两台服务器均需配置和安装):

首先清除磁盘上的任何文件系统信息,否则DRBD会拒绝初始化。
dd if=/dev/zero of=/dev/sda3 bs=1M count=10

执行初始化:
drbdadm create-md mysql

启动drbd服务:
chkconfig drbd on
service drbd start

五、确定Primary、Secondary角色

我们将172.16.88.89设置为Primary角色,在此机器上执行:
drbdadm primary mysql --force

然后查看同步情况:
cat /proc/drbd


六、创建文件系统(只在Primary角色服务器配置和安装):

在资源配置文件中,我们设置了device minor 1,所以我们的DRBD磁盘设备为/dev/drbd1。

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

挂载文件系统:
mount -o noatime /dev/drbd1 /data/


七:安装MySQL软件(两台服务器均需配置和安装):

请参考我的文章:
http://www.zeuux.com/group/mysql/bbs/content/55133/
或者:
http://www.zeuux.com/group/mysql/bbs/content/55177/
或者:
http://www.zeuux.com/group/mysql/bbs/content/55181/

八、启动MySQL(只在Primary角色服务器执行):

执行:
service mysql start
然后确认MySQL可以正常启动并服务。


九、测试DRBD复制效果。

注意:此步骤必须等到DRBD同步完成后才可进行。

查看 /proc/drbd 文件,确认有如下信息:
Primary/Secondary ds:UpToDate/UpToDate C r-----

在Primary服务器执行:

service mysql stop
umount /data
drbd secondary mysql

在Secondary服务器执行:

drbd primary mysql
mount -o noatime /dev/drbd1 /data/
service mysql start

确认MySQL可以正常启动并服务。

2013年12月10日 星期二 10:38

好文章。BTW,孟叔,代码加亮啊。

2013年12月10日 星期二 10:40

夏老师,这个富文本编辑器稍微有点简陋,代码高亮只能一点一点插入,不能选中加亮,有点费劲。

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号