ysql+heartbeat+DRBD+LVS实现mysql高可用
在企业应用中,mysql+heartbeat+DRBD+LVS是一套成熟的集群解决方案,通过heart+DRBD实现mysql的主 节点写操作的高可用性,而通过mysql+LVS实现数据库的主从复制和mysql的读操作的负载均衡。整个方案在读写方面进行了分离,融合了写操作的高 可用和读操作的负载均衡,是一个完美又廉价的企业应用解决方案
目前流行的高可用解决方案:
mysql的复制功能是通过建立复制关系和两台和多台机器环境中,一台机器出现故障切换到另一台机器上保证一定程度的可用性
mysql的复制功能加一些集群软件
mysql+heartbeat+DRBD的复制功能
共享存储+mysql的复制功能
DRBD:(分布式块设备复制)是linux内核的存储层中的一个分布式存储系统,可利用DRBD在两台linux服务器之间共享块设备、文件系统 和数据。当地数据写入本地主节点的文件系统时,这些数据会通过网络发送到另一台主节点上,本地主节点和远程主节点数据通过TCP/IP协议保持同步,主节 点故障时,远程节点保存着相同的数据,可以接替主节点继续提供数据。两个节点之间使用heartbeat来检测对方是否存活
同步过程
1:在node1上写操作被提交,通过内核传给DRBD模块
2:DRBD发送写操作到node2
3:在node2上的DRBD发送写操作给本地磁盘
4:在node2上的DRBD向node1发确认信息,确认接收到写操作并发送给本地次哦按
5:在node1上的DRBD发送写操作给本地磁盘
6:node1内核回应写操作完成
配置之前的准备
1.设置hostname及解析
1.[root@drbd1 ~]# vim /etc/hosts2.192.168.253.129drbd13.192.168.253.140drbd2部署mysql的高可用高扩展集群
1.[root@drbd1 ~]# mke2fs -j /dev/sda2.[root@drbd1 ~]# mkdir /database3.[root@drbd1 ~]# mount /dev/sda /database/4.[root@drbd1 ~]# mount -a5.[root@drbd1 ~]# mount6.[root@drbd1 ~]# df -h | grep /database7./dev/sda20G173M19G1%/databaseDRBD的部署
1.[root@drbd1 ~]# uname -a2.<a href="http://www.it165.net/os/oslin/"target="_blank"class="keylink">Linux</a> drbd12.6.32-220.el6.x86_64#1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>通过yum安装drbd服务
默认centos6.x中并没有提供DRBD的源,这时要么采用源码编译方法,要么使用第三方的YUM源。这里使用了http://elrepo.org/tiki/tiki-index.php提供的源
1.rpm-Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm2.[root@drbd1 yum.repos.d]# rpm -qa | grep elrepo-release3.elrepo-release-6-5.el6.elrepo.noarch实际上就是往yum.repos.d里面添加一个源配置elrepo.repo
使用yum list查看,进行安装
1.[root@drbd1 yum.repos.d]# yum list all | grep drbd2.drbd83-utils.x86_648.3.16-1.el6.elrepo elrepo3.drbd84-utils.x86_648.4.4-2.el6.elrepo elrepo4.kmod-drbd83.x86_648.3.16-1.el6.elrepo elrepo5.kmod-drbd84.x86_648.4.4-1.el6.elrepo elrepo6.[root@drbd1 ]# yum --enablerepo=elrepo install drbd83-utils kmod-drbd83检查DRBD是都安装成功,若安装完成,让内核加载DRBD模块
复制样例配置文件为即将使用的配置文件
1.vim/usr/share/doc/drbd83-utils-8.3.16/drbd.conf.example配置DRBD
1.[root@drbd1 etc]# vim /etc/drbd.conf2.# You can find an example in /usr/share/doc/drbd.../drbd.conf.example3.include"drbd.d/global_common.conf";4.include"drbd.d/*.res";配置 vim /etc/drbd.d/global_common.conf
01.vim/etc/drbd.d/global_common.conf02.global{03.usage-count no;04.# minor-count dialog-refresh disable-ip-verification05.}06.common {07.protocol C;08.handlers {09.pri-on-incon-degr"/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";10.pri-lost-after-sb"/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";11.local-io-error"/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";12.# fence-peer "/usr/lib/drbd/crm-fence-peer.sh";13.# split-brain "/usr/lib/drbd/notify-split-brain.sh root";14.# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";15.# before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";16.# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;17.}18.startup {19.#wfc-timeout 120;20.#degr-wfc-timeout 120;21.}22.disk {23.on-io-error detach;24.#fencing resource-only;25.}26.net {27.cram-hmac-alg"sha1";28.shared-secret"mydrbdlab";29.}30.syncer {31.rate1000M;32.}33.}配置/etc/drbd.d/web.res
01.[root@drbd2 etc]# vim /etc/drbd.d/web.res02.resource web {03.on drbd1 {04.device/dev/drbd0;05.disk/dev/sda;06.address192.168.253.129:7789;07.meta-disk internal;08.}09.on drbd2 {10.device/dev/drbd0;11.disk/dev/sda;12.address192.168.253.140:7789;13.meta-disk internal;14.}15.}启动DRBD
1.[root@drbd1 ~]# drbdadm create-md all2.Writing meta data...3.initializing activity log4.NOT initialized bitmap5.New drbd meta data block successfully created.启动DRBD时,可能出现以下错误
01.[root@drbd1 ~]# drbdadm create-md all02.md_offset2147483238403.al_offset2147479961604.bm_offset2147414425605.Found ext3 filesystem06.20971520kB data area apparently used07.20970844kB left usable by current configuration08.Device size would be truncated, which09.would corrupt dataandresultin10.'access beyond end of device'errors.11.You need to either12.*use external meta data (recommended)13.*shrink that filesystem first14.*zero out the device (destroy the filesystem)15.Operation refused.16.Command'drbdmeta 0 v08 /dev/sda internal create-md'terminated with exit code4017.drbdadm create-md web: exited with code40这事需要如下命令覆盖文件系统中的设备块信息
1.[root@drbd1 ~]# dd if=/dev/zero of=/dev/sda bs=1M count=1282.记录了128+0的读入3.记录了128+0的写出4.134217728字节(134MB)已复制,0.448662秒,299MB/秒再重新启动DRBD,可以通过dmesg命令查看DRBD的启动过程
ysql+heartbeat+DRBD+LVS实现mysql高可用的更多相关文章
- Lvs+Keepalived实现MySQL高可用
LVS+Keepalived+MySQL高可用配置 本文所有配置前提是已实现MySQL双主备份(MySQL双主) 安装前的准备: VIP:192.168.0.201 Keepalived: Keepa ...
- Heartbeat+DRBD+MySQL高可用方案
1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自 ...
- Heartbeat+DRBD+MySQL高可用方案【转】
转自Heartbeat+DRBD+MySQL高可用方案 - yayun - 博客园 http://www.cnblogs.com/gomysql/p/3674030.html 1.方案简介 本方案采用 ...
- (转)Heartbeat+DRBD+MySQL高可用方案
原文:http://www.cnblogs.com/gomysql/p/3674030.html 1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由D ...
- 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡
preface Mysql+drbd+heart能够实现Mysql的高可用了,master出现故障的时候能够快速切换.在现在的业务情况下,读操作多,写操作少的情况下,一台DB server明显扛不住, ...
- 1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建
preface 近来公司利润上升,购买了10几台服务器,趁此机会,把mysql的主从同步的架构进一步扩展,为了适应日益增长的流量.针对mysql架构的扩展,先是咨询前辈,后和同事探讨,准备采用Mysq ...
- MySQL 高可用:mysql+Lvs+Keepalived 负载均衡及故障转移
系统信息: mysql主库 mysql从库 VIP 192.168.1.150 mysql 主主同步都设置 auto-increment-offset,auto-increment-increment ...
- [转]MYSQL高可用方案探究(总结)
前言 http://blog.chinaunix.net/uid-20639775-id-3337432.htmlLvs+Keepalived+Mysql单点写入主主同步高可用方案 http://bl ...
- (转)MySQL高可用解决方案
MySQL高可用解决方案 原文:http://www.ywnds.com/?p=5565 有这么两个概念,数据库的可靠性和数据库的可用性,可靠性指的是数据可靠,而可用性指的是服务可用.但是不管是可靠性 ...
随机推荐
- bzoj1615 [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机
Description Farmer John新买的干草打包机的内部结构大概算世界上最混乱的了,它不象普通的机器一样有明确的内部传动装置,而是,N (2 <= N <= 1050)个齿轮互 ...
- POJ 1742 Coins(多重背包) DP
参考:http://www.hankcs.com/program/cpp/poj-1742-coins.html 题意:给你n种面值的硬币,面值为a1...an,数量分别为c1...cn,求问,在这些 ...
- nyoj 104 最大和 (二维最大字串和)
描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵. 例子: - - - - - - - 其最大子矩阵为: - - ...
- ubuntu 14.04 下试用Sublime Text 3
很多源代码都没有IDE支持的,尤其是开源的源代码.从github上下载的,很多也不用IDE.包括我自己公司的代码,基本都是脚本,也不用IDE.通常情况下,都是用notepad++.UE之类的文本编辑器 ...
- ssh公私钥登录方式设置
在Linux中ssh登录远程主机的时候能够进行公私钥的认证方式. ①环境说明:两台Linux主机,host1:192.168.5.1,host2:192.168.5.10. 如今在host1上面设置然 ...
- [Cycle.js] Hello World in Cycle.js
Now you should have a good idea what Cycle.run does, and what the DOM Driver is. In this lesson, we ...
- leetcode先刷_Unique Paths II
那么上述问题,假设这个矩阵堵塞障碍,不能在若干组合前面所用的方法,因为这么多的位置实际上是没有办法的事儿. 还有剩下的唯一合理的解决方案dp该.与最低要求,并且等,从右下角以前突起,对于位置(i, j ...
- SSO之CAS基础及应用视频教程(2)
CAS介绍 CAS = Central Authentication Service,中央认证服务.CAS 是 Yale 大学发起的一个开源项目,能够为 Web 应用系统或者非Web应用系统提供一种可 ...
- css-下拉菜单案例
<!DOCTYPE html>CSS4-布局2-display下拉菜单案例 <style>.xiala{width:200px;background:#ddd;}.xiala ...
- C# 文件操作(一)
1.说明: 写入文件内容,如果文件中有内容,则进行追加,目录是程序集下的目录 public static void WriteLog(string value) { try { //目录是程序集下的D ...