DRBD是一种块设备的实现,与 heartbeat
的搭配,被广泛用于linux下的高可用(HA)方案中,蚊子的这篇文章是建立在上一篇《 drbd+heartbeat(v1)+mysql搭建高可用数据库并保留原有硬盘数据
》之上的,对于上一篇中不足和潜在问题予以改正。如果有需要在线操作的请以这篇为准。
此篇文章还是介绍如何在已经 含有数据
的分区或硬盘上搭建 drbd
和 heartbeat
高可用的 mysql
服务。
在对含有数据的分区或硬盘建立drbd 高可用
的时候,请确认以下三件事。
1,所在分区或硬盘可以扩容,比如使用lvm
2,所在分区或硬盘上的文件系统支持shrinking
3,如果以上两条都不能满足,请使用外部metadata
蚊子这里使用的是第一种方法,具体请接着往下看
测试环境:
Vmware6.0
linux01 192.168.211.128 /dev/VG/data分区,存放数据库文件,320M
linux02 192.168.211.129 /dev/VG/data分区,存放数据库文件,320M
mysql数据路径/data/mysql
因为没有合适的mysql数据所以使用wordpress的数据,wordpress2.8.5
nginx version: nginx/0.8.20
PHP 5.2.11 (cli) (built: Oct 23 2009 21:01:40)
一,准备工作
linux01上完成的内容
1,heartbeat的安装
yum –y install heartbeat heartbeat-devel
2,drbd的安装
tar zxvf drbd-8.3.4.tar.gz
cd drbd-8.3.4
make all
make install
make install-tools
3,准备一个含有mysql数据的硬盘分区
蚊子这里没有现成的mysql数据,就使用wordpress的数据库内容了,mysql的版本不限,可以是二进制解压用的,也可以是源码编译的,蚊子这里是用的二进制的,操作如下
清空分区内容
[root@linux01 ~]# mkfs.ext3 /dev/VG/data
挂载分区
[root@linux01 ~]# mount /dev/VG/data /data/
初始化数据库
[root@linux01 mysql]# /usr/local/mysql/scripts/mysql_install_db –user=mysql –datadir=/data/mysql
Installing MySQL system tables…
091025 19:33:53 [Warning] option ‘thread_stack’: unsigned value 65536 adjusted to 131072
OK
Filling help tables…
091025 19:33:53 [Warning] option ‘thread_stack’: unsigned value 65536 adjusted to 131072
OK
在此处安装wordpress,将wordpress数据库安装到blog库中,如下
[root@linux01 mysql]# ll /data/mysql/
total 20572
drwx—— 2 mysql mysql 4096 Oct 27 17:26 blog
-rw-rw—- 1 mysql mysql 10485760 Oct 27 17:25 ibdata1
-rw-rw—- 1 mysql mysql 5242880 Oct 27 17:25 ib_logfile0
-rw-rw—- 1 mysql mysql 5242880 Oct 27 17:25 ib_logfile1
-rw-rw—- 1 mysql root 1247 Oct 27 17:25 linux01.err
-rw-rw—- 1 mysql mysql 5 Oct 27 17:25 linux01.pid
drwx—— 2 mysql root 4096 Oct 27 17:25 mysql
drwx—— 2 mysql root 4096 Oct 27 17:25 test
卸载/data分区
[root@linux01 ~]# umount /data/
4,备份分区前1M空间
[root@linux01 mysql]# dd if=/dev/VG/data of=/root/back bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.049084 seconds, 21.4 MB/s
5,计算metadata容量并扩展分区,计算近似值如下公式