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 有这么两个概念,数据库的可靠性和数据库的可用性,可靠性指的是数据可靠,而可用性指的是服务可用.但是不管是可靠性 ...
随机推荐
- hadoop 1.2.1 安装步骤 伪分布式
最近在系统的学习hadoop 课程第一步是安装hadoop1.x,具体安装步骤如下: 一.系统安装 本文使用centos6.5安装,具体安装步骤省略 二.jdk安装 下载jdk1.7.0_51解压,在 ...
- oracle 12g sqlplus安装
一.下载oracle 12g sqlplus软件 linux 64位操作系统,oracle安装包地址 http://www.oracle.com/technetwork/topics/linuxx86 ...
- thinkphp 一些常用写法
多表查询:
- WPF页面切换及弹窗
WPF页面切换及弹窗 结构如图: 效果如图: 代码如下: xaml <Window x:Class="PageChange.MainWindow" xmlns="h ...
- pyqt字符串分离开,放入列表中
string1 = ''''' the stirng Has many line In THE fIle ''' list_of_string = string1.split() print list ...
- ASP.net ListItem Attributes 属性回传丢失的解决方案
该方法为网上整理 1. 新继承一个列表控件 新控件中重写两个方法: using System; using System.Collections.Generic; using System.Linq; ...
- SEXTANTE中调用任意C++控制台程序的简单例子
在sextante中单纯利用python或者调用sextante已有算法进行自定义开发,很多情况下速度不咋给力,同样的操作调用QGIS的C++插件比用sextante里的算法要快,有时候快的 还不止一 ...
- hdu 4923 Room and Moor (单调栈+思维)
题意: 给一个0和1组成的序列a,要构造一个相同长度的序列b.b要满足非严格单调,且 值为0到1的实数.最后使得 sum((ai-bi)^2)最小. 算法: 首先a序列開始的连续0和末尾的连续1是能 ...
- Error creating bean with name 'memcachedClient'...java.lang.OutOfMemoryError
1,Tomcat启动报错例如以下: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating ...
- Android 打造自己的个性化应用(二):应用程序内置资源实现换肤功能
通过应用程序内置资源实现换肤,典型的应用为QQ空间中换肤的实现. 应用场景为: 应用一般不大,且页面较少,风格相对简单,一般只用实现部分资源或者只用实现背景的更换. 此种换肤方式实现的思路: 1. 把 ...