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 有这么两个概念,数据库的可靠性和数据库的可用性,可靠性指的是数据可靠,而可用性指的是服务可用.但是不管是可靠性 ...
随机推荐
- ElasticSearch大批量数据入库
最近着手处理大批量数据的任务. 现状是这样的,一个数据采集程序承载大批量数据的存储和检索.后期可能需要对大批量数据进行统计. 数据分布情况 13个点定时生成采集结果到4个文件(小文件生成周期是5分钟) ...
- UESTC_排名表 2015 UESTC Training for Graph Theory<Problem I>
I - 排名表 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- JAVA大整数傻瓜入门
http://blog.csdn.net/skiffloveblue/article/details/7032290..先记着
- 简述tcp协议对http性能的影响及优化
当网站服务器并发连接达到一定程度时,你可能需要考虑服务器系统中tcp协议设置对http服务器的影响. tcp相关延时主要包括: 1.tcp连接时建立握手: 2.tcp慢启动拥塞控制: 3.数据聚集的N ...
- UVa1399.Ancient Cipher
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- nyoj 104 最大和 (二维最大字串和)
描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵. 例子: - - - - - - - 其最大子矩阵为: - - ...
- python字符集选择
# coding=utf8 或者 # -*- coding:utf-8 -*- 在python2 中默认是ASCII码的字符集,但可以引入其他的字符集 这个需要在头信息中引入: 而在python3中 ...
- apache访问控制设置
apache访问控制设置 (2009-03-17 11:24:36) 转载▼ 标签: it 杂谈 Order allow,deny 默认情况下禁止所有客户机访问 Order deny,all ...
- java菜鸟篇<一> 对JsonObject 和JsonArray知识点理解
今天遇到从前台拿值(json数组格式),从request里边取值,然后经过一系列的处理方式,在用request返回去 1.先把request里的值赋值给String string类型的变量 2.因为前 ...
- MFC让控件随窗口大小而改变
转载自http://blog.csdn.net/chw1989/article/details/7488711 大小和位置都改变(亲测可行) 1.首先为窗体类添加CRect m_rect,该成员变量用 ...