
1.环境说明:
2.test1:192.168.122.10 as5u3
3.test2:192.168.122.11 as5u3
4.V I P:192.168.122.12
5.
6.
7.第一部分:mysql的安装(主备机一样)
8.# tar -zxvf mysql-5.0.67.tar.gz
9.# cd mysql-5.0.67
10.# groupadd mysql
11.# useradd -g mysql -s /sbin/nologin -M mysql
12.# ./configure --prefix=/usr/local/mysql --with-charset=gbk --localstatedir=/var/data --with-extra-charset=all --enable-thread-safe-client
13.# make && make install
14.
15.# cp support-files/my-large.cnf /etc/my.cnf
16.# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
17.# chmod 755 /etc/rc.d/init.d/mysqld
18.加入服务队列:
19.# chkconfig --add mysqld
20.
21.# chown -R mysql.mysql /usr/local/mysql/
22.# /usr/local/mysql/bin/mysql_install_db --user=mysql(这一步可以先不用执行,放到drbd那一块执行)
23.# chown -R mysql.mysql /usr/local/mysql/var
24.
25.# /usr/local/mysql/bin/mysqld_safe --user=mysql &
26.
27.*************************************************************************
28.配置库文件搜索路径(有时间自己做吧)
29.# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
30.# ldconfig
31.添加/usr/local/mysql/bin到环境变量PATH中
32.#echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
33.#source /etc/profile
34.**************************************************************************
35.
36.######################################################################
37.
38.第二部分:DRBD的安装和设置(首先hosts做好主备解析,关闭iptables相关选项)
39.http://oss.linbit.com/drbd/
40.(1)安装DRBD(主从服务器安装相同)
41.# tar -zxvf drbd-8.3.0.tar.gz
42.# cd drbd-8.3.0
43.# make KDRI=/usr/src/redhat/
44.# make install
45.检查是否生成了相应的文件:/etc/drbd.conf ; /etc/init.d/drbd ; 以及./drbd/drbd.ko
46.加载安装drbd模块
47.# modprobe drbd
48.通过lsmod检查是否已经成功
49.#lsmod |grep drbd
50.如果有,则表示成功了
51.(2)更改drbd配置文件(主从服务器相同)
52.准备drbd要使用的分区,该分区最好是干净的分区,我在虚拟机中重新划分了一个分区/dev/sdb1作为drbd使用。
53.cat /etc/drbd.conf
54.global { usage-count yes; }
55.common { syncer { rate 100M; } }
56.
57.#下面这段是建新找的防止开机无限搜索
58.startup {
59.wfc-timeout 5;
60.degr-wfc-timeout 120;
61.outdated-wfc-timeout 10;
62.}
63.
.resource r0 {
65.protocol C;
66.net {
67.cram-hmac-alg sha1;
68.shared-secret "FooFunFactory";
69.}
70.on test1 {
71.device /dev/drbd1;
72.disk /dev/sdb1;
73.address 192.168.122.10:78;
74.meta-disk internal;
75.}
76.on test2 {
77.device /dev/drbd1;
78.disk /dev/sdb1;
79.address 192.168.122.11:78;
80.meta-disk internal;
81.}
82.}
83.
84.DRBD的启动在启动DRBD之前,你需要分别在两台主机的hdb1分区上,创建供DRBD记录信息的数据块.分别在两台主机上执行: (做前得先执行这个操作mkfs.ext3 /dev/sdb1或者dd if=/dev/zero bs=1M count=1 of=/dev/sdb1; sync 这个命令破坏原有文件系统,否则底下第一次执行主备同步会感觉到很慢)
85.[root@test1 local]#drbdadm create-md r0
86.[root@test2 local]#drbdadm create-md r0
87.“r0”是我们在drbd.conf里定义的资源名称. 现在我们可以启动DRBD了,分别在两台主机上执行:
88.[root@test1 local]#/etc/init.d/drbd start
.[root@test2 local]#/etc/init.d/drbd start
90.**********************To abort waiting enter 'yes' 数字……总在等对方响应?怎么回事?**************看看/etc/hosts iptables
91.========================================================
92.现在可以查看DRBD的状态,然后在test1主机上执行:
93.[root@test1 ~]# cat /proc/drbd
94.version: 8.0.0 (api:86/proto:86)SVN Revision: 2713 build by root@test7, 2008-06-27 14:07:14
95.1: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
96.ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
97.”/proc/drbd”中显示了drbd当前的状态.第一行的st表示两台主机的状态,都是”备机”状态.ds是磁盘状态,都是”不一致”状态. 这是由于,DRBD无法判断哪一方为主机,以哪一方的磁盘数据作为标准数据.所以,我们需要初始化 一个主机.在test1上执行:
98.
99.[root@test1 local]#drbdsetup /dev/drbd1 primary -o 或:/sbin/drbdadm primary r0
100./sbin/drbdadm secondary r0 (此命令为降级)
101.
102.[root@test1 ~]# cat /proc/drbd
103.version: 8.0.0 (api:86/proto:86)SVN Revision: 2713 build by root@test1, 2010-07-15 14:07:14
104.1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
105.ns:18528 nr:0 dw:0 dr:18528 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 [>...................] sync'ed: 0.3% (8170/81)M finish: 6:46:43 speed: 336 (324) K/sec resync: used:0/31 hits:1156 misses:2 starving:0 dirty:0 changed:2 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
106.
107.主备机状态分别是”主/备”,主机磁盘状态是”实时”,备机状态是”不一致”. 在第3行,可以看到数据正在同步中,即主机正在将磁盘上的数据,传递到备机上.现在的进度是0.3%.
108.
109.=================================================
110.稍等一会,在数据同步完后,再查看一下test1的DRBD状态:
111.[root@test1 ~]# cat /proc/drbd
112.version: 8.0.0 (api:86/proto:86)SVN Revision: 2713 build by root@test1, 2010-07-15 15:07:14
113.1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r--- ns:497928 nr:0 dw:0 dr:497928 al:0 bm:31 lo:0 pe:0 ua:0 ap:0 resync: used:0/31 hits:31091 misses:31 starving:0 dirty:0 changed:31 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
114.磁盘状态都是”实时”,表示数据同步完成了.
115.
116.
117.挂载文件系统,先停止mysql,安装一下数据文件
118.
119.# mount /dev/drbd1 /var/data
120.# /usr/local/mysql/bin/mysql_install_db --user=mysql
121.# chown -R mysql.mysql /var/data
122.
123.
124.
125.
126.drbdadm connect r0
127.
128.##############################################################
129.
130.第三部分:heartbeat的安装(主备机一样,唯独ha.cf里面的ucast那条信息)
131.libnet 下载:http://sourceforge.net/projects/libnet-dev/
132.两台机器都要安装双机软件libnet.tar.gz heartbeat-2.1.3.tar.gz
133.tar -zxvf libnet.tar.gz
134.cd libnet
135../configure
136.make && make install
137.
138.groupadd haclient
139.useradd -g haclient hacluster
140.tar -zxvf heartbeat-2.1.3.tar.gz
141.cd heartbeat-2.1.3
142../ConfigureMe configure
143.make && make install
144.
145.[root@test1 ha.d]# more ha.cf
146.debugfile /var/log/ha-debug
147.logfile /var/log/ha-log
148.logfacility local0
149.keepalive 2
150.deadtime 30
151.warntime 10
152.initdead 120
153.auto_failback on
154.node test1
155.node test2
156.udpport 694
157.#ucast eth0 192.168.122.11 (不存在心跳线,所以没必要)
158.ping_group group1 192.168.122.10 192.168.122.11 (ping对方和自己,如果都ping不通则自己挂了,释放自己的资源)
159.respawn hacluster /usr/lib/heartbeat/ipfail
160.apiauth ipfail gid=haclient uid=hacluster
161.hopfudge
162.
163.[root@test1 ha.d]# more authkeys
1.auth 3
165.#1 crc
166.#2 sha1 HI!
167.3 md5 Hello!
168.
169.cp /etc/init.d/mysqld /etc/ha.d/resources.d/
170.[root@test1 ha.d]# more haresources
171.test1 drbddisk Filesystem::/dev/drbd1::/var/data::ext3 mysqld 192.168.122.12
172.
173.umount /dev/drbd ; /usr/local/mysql/bin/mysqladmin shutdown
174.最后 /etc/init.d/heartbeat start
175.
176.
177.基本参见:http://hi.baidu.com/hx10/blog/item/7613a78b22bfa4729e2fb4ee.html
178.mysql部分参见:http://lin128.blog.51cto.com/407924/279411
179.drbd部分参见:http://blog.chinaunix.net/u2/66227/showart_1018701.html
180.
181.###############################################################
182.调试部分:
183.drbdadm -- --discard-my-data connect all (on node with "bad" data)
184.drbdadm connect all (on node with "good" data)
