drbd实现mysql地热备_heartheartbeat+drbd+mysql主库热备

1 环境

主机名

网卡

磁盘

master

eth0 桥接模式 eth0(192.168.1.10) 自定义模式(VMnet2)(192.168.2.10)VIP 192.168.1.200/210

系统盘+20G外接磁盘

slave

eth0 桥接模式(192.168.1.20) eth1 自定义模式(VMnet2)(192.168.2.20)VIP 192.168.1.200/210

系统盘+20G外接磁盘

server3

eth0 桥接模式 (192.168.1.30)

系统盘

master

5e5ab107bccec7bcfc24ad2a0582927c.png

slave

2df27db23b84e92edff3751f327a47d4.png

server3

ff68c585caee16e4597da5d194a501bb.png

2 域名DNS

27e1b3ec70ab20f4e436ab3a84db5c56.png

3 时间同步

959e885db550e18757cbe82550e787c4.png

02f97304490034c0d236457e62bcab19.png

4 网卡配置

ab9727250165ab551ff5a1bb10e23f60.png

2fcd703539237e1a9e78f3b9f6e1d994.png

5 磁盘情况

ca68f5880da40ecb4bf7522a765b43ee.png

2e802cbe8b63d2dc300f1d5e8bd473b4.png

6 软件包位置

二 软件安装

1 drbd 简介

1 drbd 原理

drbd 是工作在文件系统之下,是基于块的迁移

drbd的迁移

文件系统------buffer-cache--------网卡传递到另一端------裸设备-----drbd写入磁盘

drbd 数据分为两部分,数据存储部分和元数据部分。

2 drbd 复制模式

协议A:本地写成功后就返回给客户端。

协议B:半同步的协议,本地写成功,发送到对端后立即返回,

协议C:发送到对端,并成功写入并进行缓存。

3 DRBD 的应用模式

1 单主模式,及主备模式,为典型的高可用性几圈方案

2 复主模式,需要采用共享cluster文件系统,如GFS和OCFS2

4 缺点

当一端在运行时另一端是不可见的

2 drbd 安装

两端配置基本相同

1 磁盘分区

/dev/sdb1 为数据区域

/dev/sdb2 为元数据区域

ab739f37227e992a12e0d15e5be9b624.png

7dc07e610f328787a9427f4fcd63ec35.png

2 格式化

元数据区域不能格式化

3be4b4ec17d078a018024baba5de5b70.png

f0f4598cffabbb2f8b82af37261d07e9.png

3 下载并解压安装drbd

A 解决依赖

8e812bdcfd57c67e7a39336b795ea7a8.png

b9160498769c4dc0c409c1f2e6c87ac9.png

yum -y install gcc kernel-devel kernel-headers flex

B 编译并安装

6ce8676dfeb119ac8e39019b996f961a.png

./configure --prefix=/usr/local/drbd.8.4.4 --with-km --with-heartbeat --sysconfdir=/etc/

58a8ef9d95a386decbeebece8f014036.png

make KDIR=/usr/src/kernels/2.6.32-431.el6.x86_64/

此处必须是自己uname -r 得到的内核,不一定是上面的内核

37562e03363f6ea276c4a3e69e1ec990.png

make install

检验

3c52af4ad22ba5d19907e53f2e9bef8b.png

4 加载模块到内核

e9329833ef85eb715785d115a6dd936c.png

slave 端加载

ecae85c6ec3414f645d86b61b0a8fb06.png

5 配置

f25647e31917a61ac95c87c60b86bc3c.png

041fb04c223ed63dc4f5b50b560a7ac4.png

slave 端相同

c8131d27732687eba53ece1f4748da65.png

a4d0c1718a0e4b1096c8c0ca54005301.png

相关解释

global {

usage-count no;

}

common{

syncer {

rate 100M; #同步占用的带宽

verify-alg crc32c; # 验证使用的算法

}

}

#Primary for drbd1

resource data{

protocol C; # drbd使用的协议

disk {

on-io-error detach; #出现IO错误的处理方式

}

on master {

device /dev/drbd0; #drbd的设备

disk /dev/sdb1; #对应的数据分区

address 192.168.1.10:7788; #地址是监听自己心跳的IP地址

meta-disk /dev/sdb2[0]; #元数据位置

}

on slave {

device /dev/drbd0;

disk /dev/sdb1;

address 192.168.1.20:7788;

meta-disk /dev/sdb2[0];

}

}

6 初始化数据

c805b7e29eb5bae67d4d804668b25b8a.png

ba8896c9fdc4cc0985476754873f8577.png

其中data是上述资源的名称。

7 创建文件夹

440ebb3b702863471957c167ea5d2bb7.png

66d3997b0d062b46d0ee28a3533c4d46.png

8 启动服务

4b6fc5f241d6adc2178a9901c64b849f.png

ae2dfbf73078d18221610c92af861d82.png

查看启动参数

48e4e86dbca9a64cc1597a7fad5de23d.png

b0cefe36653692a5f4457a1583c5587b.png

相关参数解释:

注意:只有主备两边的DRBD都启动起来才会生效

cs:链接状态

ro:角色信息,此时的状态为Secondary/Secondary,表示两台主机的状态都是备机状态

ds:磁盘状态,Inconsistent/Inconsistent显示的状态内容“不一致”,这是因为DRBD无法判断哪一方为主机,应以哪一方的磁盘数据作为标准

dw:磁盘写操作

dr: 磁盘读操作

ns: 网络发送

nr: 网络接受

如果主动端的NS和slave端的NR相同表示发送与接受同步 。

9 主动端宣告自己是primary

a492fd971667aeb176a1b3fb7334d3b1.png

查看同步情况

90a2b639bb9d86ba3188e8eeb1527d73.png

a01469b67ee24587cb8a23e2b487aa0a.png

10 创建挂载文件并测试

30d4b376fea2f6cf40267286df63f394.png

6c0049dc5c9feca93995c8442678455f.png

挂载同步测试

acf83e3516ad2a177f5fa55a2aaf478c.png

3314c4b8f2b77e554f4c5b34a6b584a8.png

从端测试

608660a9a2207ac553edbe8cad81cc9a.png

恢复

0b97608f2306f363a1c128bc4394b38d.png

3 heartbeat 简介

1 作用

通过heartbeat 可以进行故障转移并提供相关的服务

在故障转移期间也需要切换时间,常见的时间是5-20秒左右。但是能够确保业务一致性

heartbeat的高可用是服务器级别的,不是服务级别的。,服务的down机不会导致服务的切换。

2 Heartbeat 切换的常见条件

1 服务器down机

2 heartbeat 服务本身down机

3 心跳链接线down机

3 Heartbeat 消息类型

Heartbeat 高可用软件在工作过程中,一般来说,有三种消息类型,具体为:

1 心跳消息

越150字节,可能为单播,广播或组播,控制心跳频率及出现故障要等待多久进行故障转换

2 集群转换消息

Ip-request 和 ip-request-resp

当主服务器恢复在线状态后,通过ip-request消息请求备机释放主服务器失败时被服务器取得的资源,然后备份服务器关闭释放主服务器失败时取得的资源及服务。

被服务器释放主服务器失败时取得的资源服务后,就会通过ip-request-resp消息通知主服务器他不再拥有该服务器的资源及服务,主服务器收到来自被节点的ip-request-resp消息通知后,启动失败时释放的资源及服务,并开始提供正常的访问服务。

3 重传请求

rexmit-request 控制重传心跳请求。

以上心跳控制消息都使用功能的是UDP协议发送到/etc/ha.d/ha.cf 文件制定的任意接口,或指定的多播地址。

4 Ip地址接管和故障转移

Heartbeat 是通过IP地址接管和ARP广播进行故障转移

ARP 广播在主服务器故障时,备用节点接管资后,会立即强制更新所有客户端本地的ARP(及清除客户端本地缓存的失败服务器的VIP和MAC地址的解析记录),确保客户端和新的主服务器之间的对话

4 heartbeat 安装

1 安装heartbeat

907c28d61079179eaad9699e449f0209.png

680e2491df51a92eeedab25e1f4c80c7.png

2 复制配置文件

7a065352fc7d7465385aaa67d8913f89.png

489780844035ad60703effc638bd1d60.png

3 配置

配置密钥并配置其权限为600,必须为600

32881103de4437dfb1222b3cd06ca039.png

aac216496f86a8fba67c8187de6e45c1.png

配置文件解析

Debugfile 调试日志存放位置

Logfile 日志存放位置

Logfacility local 在syslog 服务中配置通过locally 设备接受日志

Keepalive2 指定心跳间隔时间为2秒

Deadtime 30 指定若备用节点在30秒内没有接受达到主节点的心跳信号,则立即接管主节点的服务资源

Warntime 10 指定心跳延迟为10秒。当10秒内备份节点不能接受到主节点的心跳信号时,会向日志中写入一个警告日志,但此时不会切换服务

Initdead 120 指定在heartbeat 首次运行后,需要等待120秒才启动主服务器的资源,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的两倍,单机启动时会遇到VIP绑定很慢,为正常现象

Bcast eth1 指明心跳使用以太网广播方式在eth1接口上进行广播,如使用两个实际网络来传递心跳则 bcast eth0 eth1

Mcast eht2 225.0.0.1 694 1 0 设置广播通信使用的端口,694为默认使用的端口,一个是 TTL

Auto_failback on 用来定义当主节点恢复后,是否将服务自动切回

Node master 主节点主机名,

Node slave 备用节点主机名

Crm no 是否开启cluster resource manager (集群资源管理器)

a422663febab8690b2fa33af6394c6ad.png

复制到被动端

402a8e4e7ff9266642138a6c5f78e2b3.png

4 启动并查看

4765e6ffe84b7927cf1b7fd2b67d2aa8.png

f255868bb66f6964a311817ddece7ccf.png

a43bda4fa1a2d87f2556f4b6f6c60e00.png

103c85bc3b701fce2d9ab19b0c3206e6.png

5 结合DRBD

a042ce9a900b951e45c6797752893aa5.png

2b7ccbe9a38e84765d183cff58ce12f6.png

5cdf3088195e9c18bada71eb4ba895a0.png

54c5798568d1c9f0126114c652e451ac.png

7499443b002ad7ac73feb68f64cbb1bf.png

8ee63ffb296934318897bda531038713.png

fe6346815f7b53a20de22f3be8b407ea.png

c68c427c5f9112a402194b6550e7aed3.png

5 mysql安装

1 配置yum源

9bfc1a908b8439eda071885eda1a5857.png

59306464475360443ec145f3403ab056.png

2 安装mysql

2885271efcb32d67d814fa33bb8add03.png

18cd1a1f143ef1e25a1570c8627c6704.png

3 配置/data 权限

72bbb127828c871eda3196244f32470e.png

4e65a6eac78cd07c9bcee416e433b8fb.png

4 配置mysql配置文件

649dc8f6da197c51c77454cc6acb6d00.png

a2475429bba1f6a9115522efe7819a30.png

4bc7fa7ece1f6e75fb095a0182313d85.png

bdd75118ce14e3a7307f50292b41ba60.png

5 启动mysql

59a1b1f987bf780aa3a7643f56ba0e5e.png

bd5e2fef95e0da5431e38fe0042840d2.png

b78e1626123fe06f1c1fa2c0e0f2dd17.png

6 删除slave端mysql

68aa0289ad9596e9130fa6f9f0719494.png

7 配置切换

76b65cf3e072360a14cc59bd001fc462.png

cb13507b6e39ef39fb7c744c73017e8a.png

625c7b0994bfcd4b79f27a34f91e307c.png

044ac1d874c468af975121d4ead7dd9e.png

32b3140657292c0fbb76334b7eb41ae7.png

三 配置mysql热备和从库

1 配置mysql热备

1 复制相关配置

aa95420ecf1248b9986211b3fadb6770.png

83150cc75ff7fa72e53ef30ddfaac137.png

2 关闭mysql并重启服务heartbeat

4d627656621d3219fd4c1c26caa20a5a.png

288929bfdca28efc14c3b70bc346fbf1.png

d4ff0b4056906b4e14583fedadcc7db4.png

6663d919f1503d9c9b488d38ae77872f.png

3 关闭mater

18177ef6381fae81ac351fadd5a5957b.png

5a6f6168dc32abb3ef70fb48778a0400.png

4 恢复

7374ee62d7a0b2bec0c4611b4e2e5f8c.png

2 配置主从同步

1 配置server-id和二进制日志开启

3448989cfef11f8e16869772972f68e9.png

0cbee11f898433f156cac3e651b95d59.png

fd517f63d139e070949dc601766648ff.png

1f78c5a4f5cb844479d6c42701ffb97d.png

dbcf58ceb26d253ac08e5551dc166cf7.png

8e86edb2df1d469ff9c37b3916f5c899.png

fa9d4782d00cfcf338ebfa8d2b67c175.png

1887dcd37d38f1fccb3f9750f831849b.png

63ed058b7da601bea5c2217924ba812f.png

77f63f37cf430d7b2f93b59846d724e6.png

54930239338521ef8af983e52ff0a859.png

重启服务器

74d1bd6866b787b35b2b8ec0a7251906.png

2 配置数据库的导出和导入,保证同步之间的主从相同

1b58526f89b2ba6e02871aba15576845.png

97174e6ce778358c01041ba36dd87929.png

073fdec59d8d445a93f7f2ea00cab866.png

01a68dd3f7bdc70759fd9e860367671c.png

3 配置主从同步

677134c1d85bb4458033665e93ed6aa8.png

grant replication slave on . to [email protected]‘%‘ identified by ‘root123‘;

8359a2e2f6864c8b87c4ce5304d7b766.png

change master to master_host=‘192.168.1.200‘,master_user=‘root‘,master_password=‘root123‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=319;

此 192.168.1.200为heartbeat 的VIP,专用于数据链接

测试

32ddf5f4ebd9e59b80cc093bfe2891c7.png

fada5ba31edb45fce226d785a8fdc164.png

ab8be7b815a50f6543b59e57355b1b9e.png

bc8e292a4674cd898c24a403f2fec74d.png

原文:http://blog.51cto.com/11233559/2293869

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Re: MySQL 高可用工具 DRBD 实战部署详解 ========================================# DRBD 是什么(用三句话总结) 目的:类似于 rsync + inotify 数据目录(/data)变化时,实现数据同步 功能:类似于本地磁盘阵列 raid-1,保持磁盘或者分区的一致性,但最终的目的是(/data)数据目录的一致性。 原理:类似于MySQL的主从复制,一份写在磁盘中,一份写在二进制日志中;DRBD原理也是一份写在磁盘中,另一份通过DRBD软件,经过tcp/ip协议,基于block变化,传输到远程磁盘中做记录。 # DRBD 的功能 Distributed Replicated Block Divice(缩略:DRBD)(分布式复制块设) 基于高可用 HA 服务器之间的数据同步解决方案 基于块设在不同的高可用服务器之间同步和镜像数据的软件,通过它可以实现在网络中的两台服务器之间基于“块”(block)设级别的实时或异步镜像或同步复制(【原理】:类似MySQL主从复制) # DRBD 的目的 类似于DRBD ≈(rsync + inotify)的架构:单inotify基于文件系统‘上层’,当文件系统中有数据发生变化,就调用 rsync 服务,将文件系统中的文件同步到库。 但是DRBD是基于文件系统底层(主要区别),即 block 块级别的更‘底层’,而 inotify是在文件系统之上的实际物理文件(文件复制),因此DRBD效率更高(类似克隆方式 GHOST 克隆软件)! 相对而言:(rsync + inotify)工作原理(效率低...)... # DRBD 的应用 heartbeat + DRBD + nfs/mfs/gfs    下章演示... heartbeat + DRBD + mysql    本章演示... heartbeat + DRBD + oracle   甚至放弃 Oracle 原厂 RAC + DataGuard 等标配 HA方案        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值