keeplive+mysql+drbd高可用架构安装步骤
<p>drbd(distributedreplicatedblockdevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的开源软件,类似于raid1数据镜像,通常配合keepalived、heartbeat等ha软件来实现高可用性。<br>
drbd是一种块设备,可以被用于高可用(ha)之中.它类似于一个网络raid-1功能,当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中。<br>
本地(master)与远程主机(backup)的保证实时同步,如果本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用.在高可用(ha)中使用drbd功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据。</p>
<p>
<strong>一、实施环境</strong></p>
<p>
系统版本:centos 6.5<br>
drbd版本: drbd-8.3.15<br>
keepalived:keepalived-1.1.15<br>
master:192.168.10.128<br>
backup:192.168.10.130</p>
<p>
<strong>二、初始化配置</strong><br>
1) 在128、130两台服务器/etc/hosts里面都添加如下配置:<br>
192.168.149.128 node1<br>
192.168.149.130 node2<br>
2) 优化系统kernel参数,直接上sysctl.conf配置如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_183916">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">net.ipv4.ip_forward = 0</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">net.ipv4.conf.default.rp_filter = 1</code>
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">net.ipv4.conf.default.accept_source_route = 0</code>
</div>
<div class="line number4 index3 alt1">
<code class="plain plain">kernel.sysrq = 0</code>
</div>
<div class="line number5 index4 alt2">
<code class="plain plain">kernel.core_uses_pid = 1</code>
</div>
<div class="line number6 index5 alt1">
<code class="plain plain">net.ipv4.tcp_syncookies = 1</code>
</div>
<div class="line number7 index6 alt2">
<code class="plain plain">kernel.msgmnb = 65536</code>
</div>
<div class="line number8 index7 alt1">
<code class="plain plain">kernel.msgmax = 65536</code>
</div>
<div class="line number9 index8 alt2">
<code class="plain plain">kernel.shmmax = 68719476736</code>
</div>
<div class="line number10 index9 alt1">
<code class="plain plain">kernel.shmall = 4294967296</code>
</div>
<div class="line number11 index10 alt2">
<code class="plain plain">net.ipv4.tcp_max_tw_buckets = 10000</code>
</div>
<div class="line number12 index11 alt1">
<code class="plain plain">net.ipv4.tcp_sack = 1</code>
</div>
<div class="line number13 index12 alt2">
<code class="plain plain">net.ipv4.tcp_window_scaling = 1</code>
</div>
<div class="line number14 index13 alt1">
<code class="plain plain">net.ipv4.tcp_rmem = 4096 87380 4194304</code>
</div>
<div class="line number15 index14 alt2">
<code class="plain plain">net.ipv4.tcp_wmem = 4096 16384 4194304</code>
</div>
<div class="line number16 index15 alt1">
<code class="plain plain">net.core.wmem_default = 8388608</code>
</div>
<div class="line number17 index16 alt2">
<code class="plain plain">net.core.rmem_default = 8388608</code>
</div>
<div class="line number18 index17 alt1">
<code class="plain plain">net.core.rmem_max = 16777216</code>
</div>
<div class="line number19 index18 alt2">
<code class="plain plain">net.core.wmem_max = 16777216</code>
</div>
<div class="line number20 index19 alt1">
<code class="plain plain">net.core.netdev_max_backlog = 262144</code>
</div>
<div class="line number21 index20 alt2">
<code class="plain plain">net.core.somaxconn = 262144</code>
</div>
<div class="line number22 index21 alt1">
<code class="plain plain">net.ipv4.tcp_max_orphans = 3276800</code>
</div>
<div class="line number23 index22 alt2">
<code class="plain plain">net.ipv4.tcp_max_syn_backlog = 262144</code>
</div>
<div class="line number24 index23 alt1">
<code class="plain plain">net.ipv4.tcp_timestamps = 0</code>
</div>
<div class="line number25 index24 alt2">
<code class="plain plain">net.ipv4.tcp_synack_retries = 1</code>
</div>
<div class="line number26 index25 alt1">
<code class="plain plain">net.ipv4.tcp_syn_retries = 1</code>
</div>
<div class="line number27 index26 alt2">
<code class="plain plain">net.ipv4.tcp_tw_recycle = 1</code>
</div>
<div class="line number28 index27 alt1">
<code class="plain plain">net.ipv4.tcp_tw_reuse = 1</code>
</div>
<div class="line number29 index28 alt2">
<code class="plain plain">net.ipv4.tcp_mem = 94500000 915000000 927000000</code>
</div>
<div class="line number30 index29 alt1">
<code class="plain plain">net.ipv4.tcp_fin_timeout = 1</code>
</div>
<div class="line number31 index30 alt2">
<code class="plain plain">net.ipv4.tcp_keepalive_time = 30</code>
</div>
<div class="line number32 index31 alt1">
<code class="plain plain">net.ipv4.ip_local_port_range = 1024 65530</code>
</div>
<div class="line number33 index32 alt2">
<code class="plain plain">net.ipv4.icmp_echo_ignore_all = 1</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
3)两台服务器分别添加一块设备,用于drbd主设备存储,我这里为/dev/sdb 20g硬盘;<br>
执行如下命令:</p>
<p>
<code>mkfs.ext3 /dev/sdb ;dd if=/dev/zero of=/dev/sdb bs=1m count=1;sync</code></p>
<p>
<strong>三、drbd安装配置</strong></p>
<p>
yum方式安装:<br>
rpm -uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm<br>
yum -y install drbd83* kmod-drbd83 ; modprobe drbd<br>
源码安装方式:<br>
http://oss.linbit.com/drbd/8.4/drbd-8.4.4.tar.gz<br>
./configure --prefix=/usr/local/drbd --with-km<br>
make kdir=/usr/src/kernels/2.6.32-504.el6.x86_64/<br>
make install<br>
cp drbd/drbd.ko /lib/modules/`uname -r`/kernel/lib/<br>
yum方式和源码方式都需要执行:modprobe drbd 加载drbd模块。<br>
安装完成并加载drbd模块后,vi修改/etc/drbd.conf配置文件,内容如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_555608">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml plain">global {</code>
</div>
<div class="line number2 index1 alt1">
<code class="xml plain">usage-count yes;</code>
</div>
<div class="line number3 index2 alt2">
<code class="xml plain">}</code>
</div>
<div class="line number4 index3 alt1">
<code class="xml plain">common {</code>
</div>
<div class="line number5 index4 alt2">
<code class="xml plain">syncer { rate 100m; }</code>
</div>
<div class="line number6 index5 alt1">
<code class="xml plain">}</code>
</div>
<div class="line number7 index6 alt2">
<code class="xml plain">resource r0 {</code>
</div>
<div class="line number8 index7 alt1">
<code class="xml plain">protocol c;</code>
</div>
<div class="line number9 index8 alt2">
<code class="xml plain">startup {</code>
</div>
<div class="line number10 index9 alt1">
</div>
<div class="line number11 index10 alt2">
<code class="xml plain">}</code>
</div>
<div class="line number12 index11 alt1">
<code class="xml plain">disk {</code>
</div>
<div class="line number13 index12 alt2">
<code class="xml plain">on-io-error detach;</code>
</div>
<div class="line number14 index13 alt1">
<code class="xml plain">#size 1g;</code>
</div>
<div class="line number15 index14 alt2">
<code class="xml plain">}</code>
</div>
<div class="line number16 index15 alt1">
<code class="xml plain">net {</code>
</div>
<div class="line number17 index16 alt2">
<code class="xml plain">}</code>
</div>
<div class="line number18 index17 alt1">
<code class="xml plain">on node1 {</code>
</div>
<div class="line number19 index18 alt2">
<code class="xml plain">device /dev/drbd0;</code>
</div>
<div class="line number20 index19 alt1">
<code class="xml plain">disk /dev/sdb;</code>
</div>
<div class="line number21 index20 alt2">
<code class="xml plain">address 192.168.10.128:7898;</code>
</div>
<div class="line number22 index21 alt1">
<code class="xml plain">meta-disk internal;</code>
</div>
<div class="line number23 index22 alt2">
<code class="xml plain">}</code>
</div>
<div class="line number24 index23 alt1">
<code class="xml plain">on node2 {</code>
</div>
<div class="line number25 index24 alt2">
<code class="xml plain">device /dev/drbd0;</code>
</div>
<div class="line number26 index25 alt1">
<code class="xml plain">disk /dev/sdb;</code>
</div>
<div class="line number27 index26 alt2">
<code class="xml plain">address 192.168.10.130:7898;</code>
</div>
<div class="line number28 index27 alt1">
<code class="xml plain">meta-disk internal;</code>
</div>
<div class="line number29 index28 alt2">
<code class="xml plain">}</code>
</div>
<div class="line number30 index29 alt1">
<code class="xml plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
配置修改完毕后执行如下命令初始化:<br>
drbdadm create-md r0 ;/etc/init.d/drbd restart ;/etc/init.d/drbd status<br>
如下图:</p>
<p>
<img title="keeplive+mysql+drbd高可用架构安装步骤" alt="keeplive+mysql+drbd高可用架构安装步骤" src="https://zhuji.jb51.net/uploads/img/202305/0af7268a6e7b808e447f17af509a7e17.jpg"></p>
<p>
以上步骤,需要在两台服务器都执行,两台都配置完毕后,在node2从上面执行如下命令:/etc/init.d/drbd status 看到如下信息,表示目前两台都为从,我们需要设置node1为master,命令如下:</p>
<p>
drbdadm -- --overwrite-data-of-peer primary all<br>
mkfs.ext4 /dev/drbd0<br>
mkdir /app ;mount /dev/drbd0 /app</p>
<p>
自此,drbd配置完毕,我们可以往/app目录写入任何东西,当master出现宕机或者其他故障,手动切换到backup,数据没有任何丢失,相当于两台服务器做网络raid1。</p>
<p>
<strong>四、keepalived配置</strong></p>
<p>
wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz ; tar -xzvf keepalived-1.1.15.tar.gz ;cd keepalived-1.1.15 ; ./configure ; make ;make install<br>
dir=/usr/local/ ;cp $dir/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ ; cp $dir/etc/sysconfig/keepalived /etc/sysconfig/ ;<br>
mkdir -p /etc/keepalived ; cp $dir/sbin/keepalived /usr/sbin/<br>
两台服务器均安装keepalived,并进行配置,首先在node1(master)上配置,keepalived.conf内容如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_114419">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">! configuration file for keepalived</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">global_defs {</code>
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">router_id lvs_devel</code>
</div>
<div class="line number4 index3 alt1">
<code class="plain plain">}</code>
</div>
<div class="line number5 index4 alt2">
<code class="plain plain">vrrp_script check_mysql {</code>
</div>
<div class="line number6 index5 alt1">
<code class="plain plain">script "/data/sh/check_mysql.sh"</code>
</div>
<div class="line number7 index6 alt2">
<code class="plain plain">interval 5</code>
</div>
<div class="line number8 index7 alt1">
<code class="plain plain">}</code>
</div>
<div class="line number9 index8 alt2">
<code class="plain plain">vrrp_instance vi_1 {</code>
</div>
<div class="line number10 index9 alt1">
<code class="plain plain">state master</code>
</div>
<div class="line number11 index10 alt2">
<code class="plain plain">interface eth0</code>
</div>
<div class="line number12 index11 alt1">
<code class="plain plain">virtual_router_id 52</code>
</div>
<div class="line number13 index12 alt2">
<code class="plain plain">priority 100</code>
</div>
<div class="line number14 index13 alt1">
<code class="plain plain">advert_int 1</code>
</div>
<div class="line number15 index14 alt2">
<code class="plain plain">authentication {</code>
</div>
<div class="line number16 index15 alt1">
<code class="plain plain">auth_type pass</code>
</div>
<div class="line number17 index16 alt2">
<code class="plain plain">auth_pass 1111</code>
</div>
<div class="line number18 index17 alt1">
<code class="plain plain">}</code>
</div>
<div class="line number19 index18 alt2">
<code class="plain plain">virtual_ipaddress {</code>
</div>
<div class="line number20 index19 alt1">
<code class="plain plain">192.168.10.100</code>
</div>
<div class="line number21 index20 alt2">
<code class="plain plain">}</code>
</div>
<div class="line number22 index21 alt1">
<code class="plain plain">track_script {</code>
</div>
<div class="line number23 index22 alt2">
<code class="plain plain">check_mysql</code>
</div>
<div class="line number24 index23 alt1">
<code class="plain plain">}</code>
</div>
<div class="line number25 index24 alt2">
<code class="plain plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
然后创建check_mysql.sh检测脚本,内容如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_425282">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash preprocessor bold">#!/bin/sh</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">a=`</code><code class="bash functions">ps</code> <code class="bash plain">-c mysqld --no-header |</code><code class="bash functions">wc</code> <code class="bash plain">-l`</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash keyword">if</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">[ $a -</code><code class="bash keyword">eq</code> <code class="bash plain">0 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">/bin/umount</code> <code class="bash plain">/app/</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">drbdadm secondary r0</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">killall keepalived</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash keyword">fi</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash plain">添加node2(backup)上配置,keepalived.conf内容如下:</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash plain">! configuration </code><code class="bash functions">file</code> <code class="bash keyword">for</code> <code class="bash plain">keepalived</code>
</div>
<div class="line number11 index10 alt2">
<code class="bash plain">global_defs {</code>
</div>
<div class="line number12 index11 alt1">
<code class="bash plain">router_id lvs_devel</code>
</div>
<div class="line number13 index12 alt2">
<code class="bash plain">}</code>
</div>
<div class="line number14 index13 alt1">
<code class="bash plain">vrrp_sync_group </code><code class="bash functions">vi</code><code class="bash plain">{</code>
</div>
<div class="line number15 index14 alt2">
<code class="bash plain">group {</code>
</div>
<div class="line number16 index15 alt1">
<code class="bash plain">vi_1</code>
</div>
<div class="line number17 index16 alt2">
<code class="bash plain">}</code>
</div>
<div class="line number18 index17 alt1">
<code class="bash plain">notify_master </code><code class="bash plain">/data/sh/master</code><code class="bash plain">.sh</code>
</div>
<div class="line number19 index18 alt2">
<code class="bash plain">notify_backup </code><code class="bash plain">/data/sh/backup</code><code class="bash plain">.sh</code>
</div>
<div class="line number20 index19 alt1">
<code class="bash plain">}</code>
</div>
<div class="line number21 index20 alt2">
<code class="bash plain">vrrp_instance vi_1 {</code>
</div>
<div class="line number22 index21 alt1">
<code class="bash plain">state backup</code>
</div>
<div class="line number23 index22 alt2">
<code class="bash plain">interface eth0</code>
</div>
<div class="line number24 index23 alt1">
<code class="bash plain">virtual_router_id 52</code>
</div>
<div class="line number25 index24 alt2">
<code class="bash plain">priority 90</code>
</div>
<div class="line number26 index25 alt1">
<code class="bash plain">advert_int 1</code>
</div>
<div class="line number27 index26 alt2">
<code class="bash plain">authentication {</code>
</div>
<div class="line number28 index27 alt1">
<code class="bash plain">auth_type pass</code>
</div>
<div class="line number29 index28 alt2">
<code class="bash plain">auth_pass 1111</code>
</div>
<div class="line number30 index29 alt1">
<code class="bash plain">}</code>
</div>
<div class="line number31 index30 alt2">
<code class="bash plain">virtual_ipaddress {</code>
</div>
<div class="line number32 index31 alt1">
<code class="bash plain">192.168.10.100</code>
</div>
<div class="line number33 index32 alt2">
<code class="bash plain">}</code>
</div>
<div class="line number34 index33 alt1">
<code class="bash plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
创建master.sh检测脚本,内容如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_157499">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash preprocessor bold">#!/bin/bash</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">drbdadm primary r0</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">/bin/mount</code> <code class="bash plain">/dev/drbd0</code> <code class="bash plain">/app/</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/mysqld</code> <code class="bash plain">start</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
创建backup.sh检测脚本,内容如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_951291">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash preprocessor bold">#!/bin/bash</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/mysqld</code> <code class="bash plain">stop</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">/bin/umount</code> <code class="bash plain">/dev/drbd0</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">drbdadm secondary r0</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
发生脑裂恢复步骤如下:</p>
<p>
master执行命令:<br>
drbdadm secondary r0<br>
drbdadm -- --discard-my-data connect r0<br>
drbdadm -- --overwrite-data-of-peer primary all<br>
backup上执行命令:<br>
drbdadm secondary r0<br>
drbdadm connect r0</p>
<p>
原文链接:http://www.cnblogs.com/linxizhifeng/p/6993878.html</p>
頁:
[1]