DRBD磁盘
MySQL集群之五大常见的MySQL高可用方案(转)
MySQL集群之五⼤常见的MySQL⾼可⽤⽅案(转)1. 概述我们在考虑MySQL数据库的⾼可⽤的架构时,主要要考虑如下⼏⽅⾯:如果数据库发⽣了宕机或者意外中断等故障,能尽快恢复数据库的可⽤性,尽可能的减少停机时间,保证业务不会因为数据库的故障⽽中断。
⽤作备份、只读副本等功能的⾮主节点的数据应该和主节点的数据实时或者最终保持⼀致。
当业务发⽣数据库切换时,切换前后的数据库内容应当⼀致,不会因为数据缺失或者数据不⼀致⽽影响业务。
关于对⾼可⽤的分级在这⾥我们不做详细的讨论,这⾥只讨论常⽤⾼可⽤⽅案的优缺点以及⾼可⽤⽅案的选型。
2. ⾼可⽤⽅案2.1. 主从或主主半同步复制使⽤双节点数据库,搭建单向或者双向的半同步复制。
在5.7以后的版本中,由于lossless replication、logical多线程复制等⼀些列新特性的引⼊,使得MySQL原⽣半同步复制更加可靠。
常见架构如下:通常会和proxy、keepalived等第三⽅软件同时使⽤,即可以⽤来监控数据库的健康,⼜可以执⾏⼀系列管理命令。
如果主库发⽣故障,切换到备库后仍然可以继续使⽤数据库。
优点:1. 架构⽐较简单,使⽤原⽣半同步复制作为数据同步的依据;2. 双节点,没有主机宕机后的选主问题,直接切换即可;3. 双节点,需求资源少,部署简单;缺点:1. 完全依赖于半同步复制,如果半同步复制退化为异步复制,数据⼀致性⽆法得到保证;2. 需要额外考虑haproxy、keepalived的⾼可⽤机制。
2.2. 半同步复制优化半同步复制机制是可靠的。
如果半同步复制⼀直是⽣效的,那么便可以认为数据是⼀致的。
但是由于⽹络波动等⼀些客观原因,导致半同步复制发⽣超时⽽切换为异步复制,那么这时便不能保证数据的⼀致性。
所以尽可能的保证半同步复制,便可提⾼数据的⼀致性。
该⽅案同样使⽤双节点架构,但是在原有半同复制的基础上做了功能上的优化,使半同步复制的机制变得更加可靠。
DRBD数据同步安装步骤
DRBD数据库同步安装步骤(mysql)环境:redhat5.8,dellr620服务器(两台服务器(server_a、server_b)、双硬盘300G,4网口(此例中起用eth0,eth1做bond),自带光驱) 注:在dellr620上安装redhat5.4会有网卡无法正常使用问题,此处使用5.8版本以上则正常。
说明:以下每一步,如无特殊说明,均需要在server_a,server_b 上分别配置一.安装系统1、开机,ctl+r进入raid配置(开机会有提示,此例时为ctrl+R)(这里根据不同的服务器来配置)2、在raid配置界面里创建raid,模式为1,重启3、F11,进入启动项选择,选择DVD启动。
4、一路”下一步“,直到分区创建选项,选择自定义分区5、分区:/(根分区)150G,swap分区30G,剩余容量(约120G)不动,不进行分区,保留。
6、定制软件包:开发工具全选7.、完成,重启,选择关闭防火墙,selinux,重启二.网络配置1.Eth0配置DEVICE=eth2BOOTPROTO=noneONBOOT=yesETHTOOL_OPTS="speed1000duplexfullautonegon"MASTER=bond0SLAVE=yes2.Eth1配置DEVICE=eth1BOOTPROTO=noneONBOOT=yesETHTOOL_OPTS="speed1000duplexfullautonegon"MASTER=bond0SLAVE=yes3.Bond0配置DEVICE="bond0"ONBOOT="yes"IPADDR=172.23.200.175//server_b为172.23.200.176NETMASK=255.255.255.224GATEWAY=172.23.200.161USERCTL=noBONDING_OPTS="mode=1miimon=100"4.设置主机hosts(server_a、server_a都要修改)编辑/etc/hosts,增加下面2条记录172.23.200.175server_a172.23.200.176server_b5.修改HOST名称执行命令:hostnameserver_a,然后编辑改/etc/sysconfig/network,把HOSTNAME设置为server_a备服务器设置为server_b三.安装数据库新建目录,进入home目录创建ngod,mkdirngod1.复制MySQL安装文件到/home/ngod/mysqlrpm-ivhMySQL-server-5.5.25-1.rhel5.x86_64.rpmrpm-ivhMySQL-client-5.5.25-1.rhel5.x86_64.rpm 2.启动MySQL服务servicemysqlstart3.设置MySQL/usr/bin/mysql_secure_installation出现Entercurrentpasswordforroot(enterfornone):直接按回车键出现Setrootpassword?[Y/n]输入Y出现Newpassword:输入123456出现Re-enternewpassword:输入123456Removeanonymoususers?[Y/n]输入YDisallowrootloginremotely?[Y/n]输入YRemovetestdatabaseandaccesstoit?[Y/n]输入YReloadprivilegetablesnow?[Y/n]输入Y4.设置MySQL的编码编辑/etc/f文件,如果没有找到该文件,则把/usr/share/mysql/f移到/etc/f目录编辑f文件,在[client]下添加default-character-set=utf8在[mysqld]下添加character-set-server=utf8;lower_case_table_names=1;最后重启MySQL5.创建HBSS数据库用户用root用户登录数据库mysql-uroot-p然后输入root用户的密码输入下面的命令创建用户并授权CREATEUSER'hotel'@'%'IDENTIFIEDBY'您的数据库名称';GRANTALLprivilegesON您的数据库名称.*TO'您的数据库名称'@'%';FLUSHprivileges;6.创建HBSS数据库输入下面的命令创建数据库并导入数据createdatabasehoteldefaultcharactersetutf8;use您的数据库名称source/home/ngod/service/hotel_manager/bin/apache-tomcat-6 .0.16/webapps/adm/WEB-INF/classes/您的数据库文件.sqlsource/home/ngod/service/hotel_manager/bin/apache-tomcat-6.0.16/webap ps/adm/WEB-INF/classes/您的数据库文件.sql四.安装DRBD准备工作:创建/home/service/hotel,1.上传安装包文件drbd-heartbeat.tar到/home/service/hotel目录,然后进入/home/service/hotel对安装包文件进行解压:tar–xvfdrbd-heartbeat.tar2.安装进入到drbd-heartbeat目录,依次输入下面的命令(有些安装包系统内已集成,手动安装会提示冲突,最终对DRBD使用无影响。
DRBD安装手册
DRBD安装手册目录1概述 (3)2镜像要求 (3)3准备工作 (3)3.1编译 (3)3.2安装 (3)3.3创建硬件设备drbd (4)3.4DRBD 协议说明 (4)4配置drbd (4)4.1修改/etc/drbd.conf (4)4.2注意:两台机器drbd.conf完全一样 (7)5启动drbd (7)5.1在99服务器执行: (8)5.2在101服务器执行 (8)6设置权限 (8)7drbd测试 (9)7.1写入2个g大文件测试 (9)7.2写入50000个20k的小文件测试 (10)8几点注意的地方 (10)1概述DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。
其实现方式是通过网络来镜像整个设备。
您可以把它看作是一种网络RAID。
Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。
另一个主机再将数据存到自己的磁盘中。
源码下载/drbd/0.7/drbd-0.7.19.tar.gz核心参考文档:/drbd-howto.html2镜像要求实现vmware虚拟机192.168.10.99磁盘/dev/sdb1镜像到vmware虚拟机192.168.10.101磁盘/dev/sdb1。
主服务器为192.168.10.99 (dingwy-as4-vmware-nod1)简称为99;备份服务器为192.168.10.101(dingwy-as4-vmware-nod2) 简称为101;平常对数据读写都在99上实现,当99 down掉后可以启动101,实现数据的热备份。
真正的热切换需要才用HA 来实现。
3准备工作安装环境:Red Hat Enterprise Linux AS release 4,内核版本:2.6.9-55.ELsmpdrbd内核源码存在,可到/drbd/去载.下载源码注意:当前最新的drbd-8.0pre3,配置文件无法正常配置,出现一大堆错误,所以下载以前的稳定版本。
磁盘镜像双机热备介绍
磁盘镜像技术双机热备双机集群方案现状依照目前双机系统的工作原理和硬件组成,双机系统可分为共享磁盘阵列和纯软件双机两种方式,这两种方式都有各自的优缺点,以下是两种方式现状:1.无共享盘阵的双机集群方式纯软双机方式是一种不需要共享外置磁盘阵列的双机集群技术,通过双机软件提供的镜像引擎将数据进行实时复制,实现数据的同步。
若是一台效劳器显现异样,那么另一台效劳器将主动接管其工作,继续支持网络系统的运行,以保证系统能够不中断地运行。
这种不需共享磁盘阵列的方式又称双机镜像方式或扩展镜像(Mirroring Extension)方式,扩展镜像是指效劳器间通过软件的镜像引擎来实现数据的复制。
纯软件集群方式优势:不需要额外采购磁盘阵列,本钱比较廉价。
缺点:关于一些要求提供较高存储带宽,或是要求提供较大存储空间的应历时,性能就会显著下降,无法知足应用系统的需要;可用性相对较差,两效劳器之间的实时复制是一个比较脆弱的环节;一旦效劳器显现中断,恢复后还要进行比较复杂的数据同步恢复,那个时段处于无爱惜状态;没有事务机制,由于其复制是在文件和磁盘层进行的,复制是不是成功可不能阻碍数据库事务操作,因此有显现数据不完整的情形,那个存在相当的风险。
建议除非不得已,不要利用纯软件。
磁盘镜像的双机热备只支持主备模式,不支持并发模式。
2.基于盘阵的双机集群系统基于共享磁盘阵列模式的双机集群系统,通过在两台效劳器上运行高可用性软件(双机软件或集群软件)和共用磁盘阵列来实现。
它利用磁盘阵列作为两台效劳器的共用存储设备,通过双机软件对磁盘阵列进行治理,同时对受爱惜的效劳进行监控和治理。
任何一台效劳器运行一个应历时,应用数据存储在共享的数据空间内,每台效劳器的操作系统和应用程序文件存储在其各自的本地贮存空间上。
共享磁盘阵列集群方式优势:实现真正意义上的数据与系统分离,系统整体效率高,存储系统升级扩容方便。
缺点:存在单点数据故障,一旦磁盘阵列显现逻辑或物理故障,数据平安就得不到保障。
DRBD简要操作_wh
DRBD网络镜像磁盘操作手册版本:Kernel:2.6.18Drbd:8.2.6参考文献:国外论坛:/lists/drbd/users/拓扑:拓扑原理:左边的服务器为活跃DRBD,数据写入及访问都由它处理,同时将数据同步拷贝到右边服务器。
仅当左边的活跃DRBD宕机,才由右边的辅DRBD接替其所有工作,由于未加入HA功能,所有的切换操作需人为干预DRB同步模式:完全同步要确认同步成功,除了活跃节点上的写操作要更新到其本地磁盘上以外,同时还要将数据拷贝到备用节点的本地磁盘。
只有当2个节点都拥有了相同的写数据才算同步成功。
其优点是,无论哪个节点宕机,都不会丢失数据环境应用:=======================================Primary:IP: 192.168.1.243HOSTNAME:alice新的硬盘:/dev/sda1 1GDRBD驱动:/dev/drbd1 <--本地磁盘需要附加到该驱动上挂载目录:/mnt/drbd1 <--用于挂载DRBD驱动点,切忌不是挂载本地磁盘到该目录Secondary:IP:192.168.1.251HOSTNAME:bob新的硬盘:/dev/sda1 1GDRBD驱动:/dev/drbd1挂载目录:/mnt/drbd1每台服务器都要将自己的主机名和对方的主机名写入/etc/hosts文件192.168.1.243 alice192.168.1.251 bob=======================================全新部署前的基本准备工作:1.确保主DRBD服务器和辅DRBD服务器都有唯一的主机名。
主机名会在drbd.conf文件中用到2.每一个DRBD服务器都必需有一个唯一的IP地址3.将每一个DRBD服务器的主机名与IP地址写入/etc/hosts文件4.每一个DRBD服务器要准备至少一块空磁盘,容量最好要相同。
DRBD中文指南
tsync 就是预期的同步时间。D 是要同步的数据量,你不可能对它有任何的影响的(这个数据由你
的应用程序修改而将复制链接打破而产生的) ,R 是同步的速度,这个是可以配置的,通过对复 制的限制而控制网络的吞吐量和 I/O 子系统的。 DRBD 的同步效率可进一步提升对数据的消化,也就是校验。当使用校验同步时,不是强制执 行覆盖标记不同的块,而是同步他们之前所读取的块,在磁盘上计算出散列的内容。然后比较这 个来自对等节点的 hash 表,如果 hash 表匹配,则忽略重写该区块。这样就可以大大减少用于 解决在断开模式下文件系统重写相同内容的同步时间。 参阅“配置同步速率”和“配置基础校验同步”二节的关于同步配置方面的建议。
2.3 复制模式
DRBD 提供了三种不同的复制方式,允许三种度的复制: 协议 A:一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的 。在一个 节点发生故障时, 可能发生数据丢失, 因为被写入到远程节点上的数据可能仍在发送队列。 尽管, 在故障转移节点上的数据是一致的,但没有及时更新。这通常是用于地理上分开的节点。 协议 B:一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是 完成的。 数据丢失可能发生在参加的两个节点同时故障的情况下, 因为在飞行中的数据可能不会 被提交到磁盘。 协议 C:只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。没有任何数 据丢失,所以这是一个群集节点的流行模式,但 I/O 吞吐量依赖于网络带宽。 简言之: A 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。 B 收到接收确认就认为完成了写入操作。 C 收到写入确认就认为完成了写入操作。 就目前而言应用最多和应用最广泛的为协议 C。 备忘 两个因素影响你对复制模式的选择:保护和延迟。相比之下吞吐量很大决 定了对复制模式的选择。 参见“配置你的资源”一节,查看资源配置的复制模式的配置。
DRBD新手上路
DRBD新手上路2010-01-07 15:102.2. 安装可以直接下载rpm包,或者自己下载源码包进行编译,在这里,我采用自己编译源码的方式。
[root@ ~]# tar zxf drbd-8.2.5.tar.gz[root@ ~]# cd drbd-8.2.5[root@ drbd-8.2.5]# make[root@ drbd-8.2.5]# make all install同样地,在另一个主机上也是这么安装。
查看drbd模块是否已经加载到内核中了:[root@ drbd-8.2.5]# lsmod | grep drbddrbd 274312 4另外,2个主机都预留一个空白的分区:/dev/sdc1,不需要创建任何文件系统。
3. 配置编辑配置文件,2个主机上的内容一样。
[root@ drbd-8.2.5]# vi /etc/drbd.confglobal {}#设定同步速率common {syncer { rate 100M; }}#创建一个资源,名字叫”db”resource db {#使用协议C.表示收到远程主机的写入确认后,则认为写入完成protocol C;startup { wfc-timeout 0; degr-wfc-timeout 120; } disk { on-io-error detach; }syncer { rate 100M; }#设定一个节点,分别以各自的主机名命名on {#设定资源设备/dev/drbd0 指向实际的物理分区 /dev/sdc1device /dev/drbd0;disk /dev/sdc1;#设定监听地址以及端口address 10.168.115.250:7791;#设定元数据保存方式:可以用 internal(即保存在同一个物理分区下) #也可以保存在其他分区上meta-disk internal;}#设定另一个节点on {device /dev/drbd0;disk /dev/sdc1;address 10.168.115.251:7791;meta-disk internal;}}4. 启动4.1. 启动drbd准备启动之前,需要分别在2个主机上的 /dev/sdc1 分区上创建相应的元数据保存的数据块:[root@ ~]# drbdadm create-md db[root@ ~]# drbdadm create-md db[root@ ~]# drbdadm create-md db v08 Magic number not found v07 Magic number not found v07 Magic number not found v08 Magic number not found Writing meta data... initialising activity log NOT initialized bitmap New drbd meta data block sucessfully created. --== Creating metadata ==-- As with nodes we count the total number of devices mirrored by DRBD at at . The counter works completely anonymous. A random num ber gets created for this device, and that randomer number and the devices size will be sent. /cgi-bin/insert_usage.pl?nu=178968455 06599536970&ru=16979930778795935552&rs=288106882560 Enter 'no' to opt out, or just press [return] to continue: success在这里,按照提示信息直接按回车即可。
用DRBD和Heartbeat实现IBMMQ前置机双机热备
用DRBD和Heartbeat实现人行前置机双机热备1前提Linux下可以用开源软件DRBD和Heartbeat实现廉价的双机热备,这种方案不需要存储和光纤交换机,适合于共享存储不是特别大的场合,比较廉价。
人行的网银前置机就可以采用这种方式。
建议使用Suse Linux Enterprise Server 10、11或Suse Linux HA Extension版本,Suse企业版和HA扩展版中已经包含了DRBD和Heartbeat。
如果采用Open Suse或其他版本Linux,可能需要自行安装DRBD和Heartbeat,因为其中涉及很多软件包,安装比较麻烦。
(本文并不提供详细的安装说明)1.1 DRBDDRBD是一个磁盘镜像软件,类似于一个网络RAID-1功能。
当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上,以相同的形式记录在一个文件系统中。
本地(主节点)与远程主机(备节点)的数据可以保证实时同步。
当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。
DRBD包含一个用户程序和一个内核模块,在Linux内核2.6.33后已经含有了drbd的内核模块,不需要再安装drbd内核。
目前DRBD的最新版本是8.3.8.1。
1.2 HeartbeatHeartbeat是Linux下的HA软件,用来实现高可靠性集群服务。
目前Heartbeat最新版本是3.0。
1.3 示例系统下面用2台虚拟机上的的双机热备来说明DRBD和Heartbeat的配置和启动。
主机A(双网卡):操作系统:Open Suse Linux Server 11.1DRBD版本:8.2.7Heartbeat版本:2.1.3内核:Linux suse11 2.6.27.19-5-pae #1 SMP 2009-02-28 04:40:21 +0100 i686 i686 i386 GNU/Linux心跳IP:10.1.1.228(eth0)固定IP:192.168.253.101(eth1)浮动IP:192.168.253.205(eth1:0,由Heartbeat自动获得)主机名:suse11空磁盘分区:/dev/sda5备机B(双网卡)操作系统:Open Suse Linux Server 11.1DRBD版本:8.2.7Heartbeat版本:2.1.3内核:Linux ibps-mbfe 2.6.27.19-5-pae #1 SMP 2009-02-28 04:40:21 +0100 i686 i686 i386 GNU/Linux心跳IP:10.1.1.229(eth0)固定IP:192.168.253.202(eth1)浮动IP:192.168.253.205(eth1:0,由Heartbeat自动获得)主机名:ibps-mbfe空磁盘分区:/dev/sda5说明:浮动IP是对外公开的IP地址,主机挂掉,由备机自动获得此IP。
drbd更换磁盘以及同步数据测试报告
DRBD更换磁盘操作以及同步数据测试报告一.环境VMware® Workstation:7.1.0 build-261024CentOS :5.4 i686 i386 GNU/LinuxKernel :2.6.18-164.el5DRBD :8.2.5Server01:eth0 192.168.0.136 sdb 5GServer02:eth0 192.168.0.137 sdb 5GDRBD 镜像硬盘:5G二.需求假设Server02 上的sdb坏掉不可读写,现增加sdc 5G 用来取代sdb,并将主节点上的数据同步到sdc上面。
三.准备操作在server02上将sdc整块磁盘划分为空白分区,大小5G,不格式化然后对划分出来的空白逻辑分区sdc5 进行磁盘空间清零操作[root@server02 ~]# dd if=/dev/zero of=/dev/sdc5 bs=1M count=128将server01 和server02 上面的drbd配置文件修改为如下[root@server01 ~]# vim /etc/drbd.conf# 是否参加DRBD使用者统计.默认是yesglobal { usage-count yes;}# 设置主备节点同步时的网络速率最大值,单位是字节.common { syncer { rate 10M; } }# 一个DRBD设备(即:/dev/drbdX),叫做一个"资源".里面包含一个DRBD设备的主备节点的# 相关信息.#resource r0 {# 使用协议C.表示收到远程主机的写入确认后,则认为写入完成.protocol C;#设为双主模式#allow-two-primaries yes;#startup { wfc-timeout 0; degr-wfc-timeout 120; }disk { on-io-error detach; }syncer { rate 10M; }net {#protocol C;#设为双主模式#allow-two-primaries;#设置主备机之间通信使用的信息算法.cram-hmac-alg sha1;shared-secret "FooFunFactory";}# 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.on server01{# /dev/drbd1使用的磁盘分区是/dev/hdb1device /dev/drbd1;disk /dev/sdb5;#设置DRBD的监听端口,用于与另一台主机通信address 192.168.0.136:7898;#address 10.0.0.194:7898;#meta-disk /dev/xvdb5[0];meta-disk internal;#flexible-meta-disk internal;}on server02 {device /dev/drbd1;#disk /dev/sdb5;disk /dev/sdc5;address 192.168.0.137:7898;#address 10.0.0.195:7898;meta-disk internal;#meta-disk /dev/xvdb5[0];#flexible-meta-disk internal;}}四.更换磁盘操作只在server01上操作[root@server01 ~]# drbdadm detach r0[root@server01 ~]# drbdadm create-md r0md_offset 5362810880al_offset 5362778112bm_offset 5362614272Found ext3 filesystem which uses 5236928 kBcurrent configuration leaves usable 5236928 kB==> This might destroy existing data! <==Do you want to proceed?[need to type 'yes' to confirm] yesv07 Magic number not foundv07 Magic number not foundYou want me to create a v08 style flexible-size internal meta data block.There apears to be a v08 flexible-size internal meta data blockalready in place on /dev/sdb5 at byte offset 5362810880Do you really want to overwrite the existing v08 meta-data?[need to type 'yes' to confirm] yesWriting meta data...initialising activity logNOT initialized bitmapNew drbd meta data block sucessfully created.[root@server01 ~]# drbdadm attach r0[root@server01 ~]# cat /proc/drbdversion: 8.2.5 (api:88/proto:86-88)GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server01, 2011-12-02 10:00:191: cs:SyncTarget st:Primary/Secondary ds:Inconsistent/UpToDate C r---ns:0 nr:44928 dw:44928 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0[>....................] sync'ed: 1.0% (5070/5114)Mfinish: 0:07:39 speed: 11,232 (11,232) K/secresync: used:0/31 hits:2805 misses:3 starving:0 dirty:0 changed:3act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0.......................................................................................[root@server01 ~]# cat /proc/drbdversion: 8.2.5 (api:88/proto:86-88)GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server01, 2011-12-02 10:00:191: cs:SyncTarget st:Primary/Secondary ds:Inconsistent/UpToDate C r---ns:0 nr:4919136 dw:4919136 dr:0 al:0 bm:300 lo:0 pe:0 ua:0 ap:0[=================>..] sync'ed: 94.0% (310/5114)Mfinish: 0:01:12 speed: 4,064 (10,248) K/secresync: used:0/31 hits:307145 misses:301 starving:0 dirty:0 changed:301act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0看到下面的输出即同步完毕:[root@server01 ~]# cat /proc/drbdversion: 8.2.5 (api:88/proto:86-88)GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server01, 2011-12-02 10:00:191: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---ns:0 nr:5236928 dw:5236928 dr:0 al:0 bm:320 lo:0 pe:0 ua:0 ap:0resync: used:0/31 hits:326988 misses:320 starving:0 dirty:0 changed:320act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0操作截图:五.统计同步时server02上sdc的磁盘IO情况同步时的磁盘IO情况:[root@server02 ~]# iostatLinux 2.6.18-164.el5 (server02) 2011年12月13日avg-cpu: %user %nice %system %iowait %steal %idle0.22 0.54 7.40 2.43 0.00 89.40Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 7.80 141.90 41.86 785867 231828 sda1 0.07 0.29 0.00 1609 4 sda2 7.24 140.35 41.81 777274 231560 sda3 0.41 0.89 0.04 4937 240 sda4 0.00 0.00 0.00 8 0 sda5 0.06 0.29 0.00 1615 24 sdb 0.83 705.86 0.24 3909113 1310 sdb1 0.00 0.01 0.00 42 0 sdb5 0.81 705.66 0.24 3908007 1310 sdc 193.89 383.03 571.84 2121236 3166892 sdc1 0.00 0.00 0.00 20 0 sdc5 193.82 382.62 571.84 2118976 3166876 截图如下:六.统计同步数据时的网络IO情况:IPTraf测试截图以及Iftop测试截图从截图可以看到server01的33473和server02的59734临时端口在和彼此的7898端口进行频繁的收发数据包。
磁盘镜像drbd
高可用演示文档_磁盘镜像(drbd)1概念将主服务器上的指定磁盘文件在备份服务器指定位置做数据备份。
一般磁盘镜像机制是在双机热备基础上,实现将数据写入主服务器文件系统时,数据还将会被发送到网络中另一台备份主机上,保证主服务器与备份服务器的数据可以保证自动、实时同步。
当主服务器出现故障时,备份服务器自动启动,用户可以通过访问备份服务器上的数据,继续对外提供服务以保证服务的高效连续性。
当主服务器恢复后,会自动同步备份服务器上的数据,从而保证了数据的完整性和一致性。
2 drbd实际应用此方案采用drbd+heartbeat+nfs高可用部署演示实际应用中,如果主服务器宕机,造成的损失是不可估量的。
要保证主服务器不间断服务,就需要对服务器实现冗余。
本采用纯软件的方式提供了廉价的、可伸缩的高可用集群方案。
在下面的方案中,我们使用drbd+heartbeat+nfs,在本系统下创建一个高可用(HA)的文件服务器集群。
在方案中,通过DRBD保证了服务器数据的完整性和一致性。
DRBD类似于一个网络RAID-1功能。
当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上,以相同的形式记录在一个另文件系统中。
主节点与备节点的数据可以保证实时相互同步。
当本地主服务器出现故障时,备份服务器上还会保留有一份相同的数据,可以继续使用。
在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。
因为数据同时存在于本地主服务器和备份服务器上。
切换时,远程主机只要使用它上面的那份备份数据,就可以继续提供主服务器上相同的服务,并且client用户对主服务器的故障无感知。
3演示环境拓扑图:假设有两台机器server152:ip为192.168.5.152 和server151:ip为192.168.5.151。
两台机器上都创建了需要镜像的硬盘:/dev/sda3。
主服务器为192.168.5.152 简称为server152,备份服务器为192.168.5.151 简称为server151。
fs hds sds pid名词解释
fs hds sds pid名词解释FS:文件系统文件系统(File System)是指计算机系统中用于组织和管理文件及文件夹的一种方法。
它是操作系统中的一部分,负责管理存储介质上的文件和目录,提供了对文件的创建、读取、写入、删除等操作。
文件系统将文件存储在存储介质(比如硬盘、固态硬盘、光盘等)上,并提供了一个层次结构来组织这些文件。
它通常由文件和目录组成,其中文件用于存储实际的数据,而目录用于组织和管理这些文件。
文件系统还提供了对文件的访问控制,例如权限管理,以确保文件的安全性。
文件系统还负责数据的存储和恢复。
它将文件划分为若干个块或扇区,每个块都具有唯一的标识符。
文件系统通过维护一个元数据表来跟踪文件和块之间的映射关系,以便在需要读取或写入文件时能快速定位到对应的块。
常见的文件系统包括FAT(FAT32、exFAT等)、NTFS、EXT4等,不同的文件系统有不同的特点和适用场景。
例如,FAT32适用于存储小容量数据且需要与多个操作系统兼容的场景,而NTFS则适用于大容量数据和高性能要求的场景。
HDS:硬盘驱动器硬盘驱动器(Hard Disk Drive,简称HDD)是一种用于存储和读取数据的计算机存储设备。
它由一个或多个磁性盘片组成,盘片上涂有磁性物质,通过磁头读写数据。
HDD是计算机系统中主要的长期存储设备之一,可以存储大量的数据并实现数据的随机访问。
它通过旋转盘片和磁头的移动来读取和写入数据。
当计算机需要读取或写入数据时,磁头会定位到对应的磁道上,并通过改变磁性物质的磁场来记录或读取数据。
HDD的容量通常以GB(Gigabyte)或TB(Terabyte)为单位。
随着技术的发展,HDD的容量不断增大,同时价格也不断下降,使得大容量的存储成为可能。
HDD广泛应用于个人电脑、服务器、网络存储设备等领域。
然而,HDD也存在一些限制。
例如,由于机械结构的限制,HDD的读写速度相对较慢,且易受物理冲击和磁场干扰的影响。
DRBD工作原理及安装配置
DRBD工作原理及安装配置1.DRBD的工作原理DRBD是一种块设备,它相当于一个网络的RAID-1的功能,通过牺牲存储容量的方式提高其可靠性,可以被用于高可用(HA)中。
DRBD的实施是通过两个节点的网络同步实现的,当你将数据写入到本地的文件系统中时,通过网络将这部分数据同步到另外一个节点中,该节点会保存一份与主节点一模一样的数据,当主节点出现问题时该节点中保存的数据还可以继续使用。
目前,DRBD每次只允许一个节点进行读写访问,但是这种方式对于平常的故障切换来说已经足够用了,在以后的版本中可能会支持两个节点进行存储读写。
2.DRBD的复制模式DRBD的复制模式有以下三种:模式一:异步复制模式。
该模式是在本地磁盘写入完成后,再将数据包发送给备份节点,当数据包在发送队列中时,系统默认写入完成。
在这种模式下,如果节点发生故障,而远程的数据包仍在发送队列时,可能发生数据丢失。
模式二:内存同步复制模式。
一旦本地磁盘写入完成,并且数据包已经到达备份节点,在系统默认写入完成。
在这种模式下,如果两个节点同时出现故障时,会发生数据丢失,因为在内存中的数据可能还没有被写入到磁盘中。
模式三:同步复制模式。
该模式下,只有在本地和远程节点的磁盘都写入完成时,系统默认同步完成。
在这种模式下不会出现数据丢失,这是目前普遍使用的一种模式,但是该模式比较依赖于网络的带宽,影响网络流量。
3.安装配置●准备环境配置两台虚拟机,配置好IP地址(我配置的是192.168.20.107和192.168.20.108),关闭防火墙和selinux,配好yum源和epel仓库。
●在两台机器上各加一块新的硬盘通过fdisk –l命令查看所有磁盘和分区情况,在实验中可以看到新分配到的硬盘,本实验中分别在两台机器中添加了两块500G的磁盘。
●安装drbd通过yum install drdb* 命令安装drbd,如果无法yum安装可以通过手动安装,下载drbd和drbd-kmdl这两个rpm文件,切换到存放这两个文件的目录下,执行yum install drbd*。
drbd安装配置
DRBD安装配置说明(添加新硬盘)一安装前说明====================================================================== DRBD(Distributed Replicated Block Device),分布式复制块设备,是一种通过TCP/IP网络实现块设备数据实时镜像的方案。
利用这种方案,单一主节点模式(single primary mode)双机系统能够实时地将业务数据保存在主备节点的磁盘中,正常情况下两个节点的数据是一模一样的。
根据官方的说明文档,如果系统内核(linux)版本低于,在安装软件之前需要加载DRBD 模块,如果高于(或等于),则只安装客户端软件。
以下是官网发布的对应版本:此文档是基于每台主机有两块硬盘,硬盘1用于系统安装,硬盘2用于和另一台主机的硬盘进行数据互备。
二安装前环境设定======================================================================OS: Fedora 13 内核版本硬件环境:两台主机,分别有两块硬盘(用作数据备份的硬盘最好大小相同)主机名硬盘1 硬盘2www1 sda(15G) sdb(2G)www2 sda(15G) sdb(2G) (此文档中硬盘2将作为互备硬盘)主机名必须设定,因为DRBD靠主机名来识别主机和备份机,设定方法为:#vim /etc/hostshostname1同时要保证两台主机能够相互通信用来做DRBD的分区:/dev/sdb5挂载点:/opt三安装步骤======================================================================检查DRBD模块加载情况:#lsmod如下图所示,表示已经加载该模块四DRBD配置======================================================================-----------------------------------DRBD配置文件----------------------------------安装完成后,在/etc目录下会生成文件,即为drbd唯一需要配置的文件。
磁盘镜像技术 DRBD 原理简介
1、什么是DRBD?DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。
其实现方式是通过网络来镜像整个设备。
它允许用户在远程机器上建立一个本地块设备的实时镜像。
一般与心跳连接结合使用,也可以把它看作是一种网络RAID。
2、DRBD是如何工作的?Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。
另一个主机再将数据存到自己的磁盘中。
并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。
本地节点(主机)与远程节点(主机)的数据可以保证实时的同步,并保证IO的一致性。
所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。
(就像网络Raid1)DRBD是工作在系统内核空间,而不是用户空间,它直接复制的是二进制数据,这是它速度快的根本原因。
3、底层设备支持DRBD需要构建在底层设备之上,然后构建出一个块设备出来。
对于用户来说,一个DRBD 设备,就像是一块物理的磁盘,可以在上面创建文件系统。
DRBD所支持的底层设备有以下这些类:1、一个磁盘,或者是磁盘的某一个分区;2、一个soft raid 设备;3、一个LVM的逻辑卷;4、一个EVMS(Enterprise Volume Management System,企业卷管理系统)的卷;5、其他任何的块设备。
4、drbd与现在的HA集群的关系一个drbd系统由两个以上节点构成,与HA集群类似,也有主用节点和备用节点之分,在带有主要设备的节点上,应用程序和操作系统可以运行和访问drbd设备(/dev/nbX)。
在主节点写入的数据通过drbd设备存储到主节点的磁盘设备中,同时,这个数据也会自动发送到备用节点相应的drbd设备,最终写入备用节点的磁盘设备中,在备用节点上,drbd 只是将数据从drbd设备写入到备用节点的磁盘设备中。
大部分现行高可用性集群都会使用共享存储,而Drbd也可以作为一个共享存储设备,使用drbd不需要任何硬件的投资。
磁盘镜像技术drbd
DRBD磁盘镜像技术第一章:DRBD概念原理以及安装1.DRBD是由内核模块和相关脚本而构成,用以构建高可用的集群.其实现方式是通过网络来镜像整个设备(磁盘).它允许用户在远程机器上建立一个本地块设备的实时镜像,与心跳链接结合使用,也可看做一种网络RAID(比基于文件系统的同步高效)2.DRBD(实现块设备的同步)负责接收数据,把数据写到本地磁盘,然后发送到另一个主机.另一个主机将数据存到自己磁盘中.DRBD目前每次只允许一个节点进行写访问,(必须是primary状态才能对磁盘进行写操作),必须将另外一个磁盘设置secondry(两个节点状态:primary和secondry)3.DRBD一般会用在HA集群中,那么drbd和HA集群的关系;一个DRBD系统由两个以上的节点组成,有主备节点之分,drbd设备(将本地磁盘设备虚拟成drbd设备)。
在主节点写入的数据通过drbd设备存贮到主节点的磁盘设备,同时,这个数据也会自动发送到备用节点的相应drbd设备,最后写入备用节点的磁盘设备。
在备用节点上,drbd只是将数据从drbd设备写入到备用节点的磁盘设备中。
使用DRBD作为HA集群的一个共享存储设备,不需要任何硬件的投资,并且使用的是IP网络运行(iscsi网络存储)4.DRBD内部实现原理图:那么格式化是格式化drbd设备用户将数据写到drbd,通过tcp/ip网络传输到远程主机的drbd(传输的是drbd 块设备)5.DRBD协议:A数据一旦写入磁盘并发送到网络就认为完成写操作B只要接受到确认,就会认为完成写操作C收到写入(磁盘)确认,再同步(此协议能够保证数据完全写入)DRBD设备进程三个:drbd_work主进程drbd0_asender是primary上drbd0的数据发送过程drbd0_receiver是secondary上drbd0的数据接收进程6.DRBD的工作原理(drbd同步底层块设备)7.DRBD实现原理图:9.DRBD的安装官网下载(若要源码编译,可以解压后查看.spec文件直接用rpmbuild–bb*.spec构建rpm包)需要kernel-devel的支持哦#./configure--enable-spec--with-km带有spec的编译和内核支持,会生成spec文件1>准备工作对两台drbd同步主机进行解析以及hostname设置在/etc/hosts添加两台主机的解析192.168.2.88drbd2192.168.2.99drbd1分别在两台主机上添加虚拟磁盘设备(最好一样大,不然多余就浪费,创建成lvm)#fdisk-l#fdisk-cu/dev/vdb#pvcreate/dev/vdb1#vgcreate drbdvg/dev/vdb1#lvcreate-L1G-n drbdlv drbdvg2>drbd下载安装#tar zxf drbd-8.4.3.tar.gz//解压后,发现目录有.spec.in文件,即可以打包成rpm包格式#yum install rpm-build-y#./configure--enable-spec--with-km//在软件的以及目录编译(启用spec和增加kernel模块)注意:缺少的包相应解决啊#rpmbuild-bb drbd.spec构建drbd包#rpmbuild-bb drbd-km.spec构建drbd的kernel模块(yum install kernel-devel) #cd/root/rpmbuild/RPMS/x86_64/生成的rpm包位置#yum localinstall*.rpm-y本地drbd安装成功#scp*192.168.2.88:直接将rpm包拷贝到备份主机上!!(如果系统信息不一致,最好使用源码编译,会生成和系统内核匹配的drbd模块drbd-km会根据自己系统的相关信息编译出适合内核的模块)!!安装成功后,/sbin目录下有drbdadm drbdmeta drbdsetup命令以及drbd启动脚本10.注意事项1.mount drbd设备前,必须把设备设置为primary状态2.两个节点不能同时为primary3.处于secondary状态的服务器上不能进行写操作4.主备服务器同步的两个分区大小最好相同,这样不至于浪费磁盘空间,drbd磁盘镜像相当于raid1注意:drbd设备主机上的配置必须完全一致第二章:DRBD配置以及使用:1./etc/drbd.conf主配置文件真正的实际配置文件在/etc/drbd.d/两个文件gloab_comman.conf另外drbd的详细配置文件需要在*.res文件编辑,这个文件默认不存在vim/etc/drbd.d/drbd.res文件的配置必须注意(可能出现share没定义)resource share{定义资源的名称为share之后会用到meta-disk internal;源数据的存放方式device/dev/drbd1;共享出来的drbd块标识syncer{verify-alg sha1;使用的验证方式和密码方式rate200M;}net{allow-two-primaries;}可以两台主机同时挂载(不能使用写哦)on drbd1{定义drbd设备disk/dev/drbdvg/drbdlv;说明drbd设备/dev/drbd1使用的磁盘分区是/dev/sdb1address192.168.0.99:7789;设置drbd的监听端口,用来和端口通信}on drbd2{disk/dev/drbdvg/drbdlv;address192.168.0.88:7789;}}需要将主备drbd进行解析哦2.启动DRBD1>在两个节点执行启动启动只前在两台主机分区上创建供drbd记录信息的源数据库#drbdadm create-md share(资源名字)或者drbdadm create-md all2>在两个节点启动服务#/etc/init.d/drbd start3>在任意节点查看状态信息#cat/proc/drbd提示:cs表示连接状态ro:节点角色ds:磁盘状态信息ns:网络信息提示:Dw:磁盘写信息Dr:磁盘读信息第一次启动drbd都为secondary状态,需要手工设置为primary4>设置主节点#drbdsetup/dev/drbd1primary--force第一次设置主节点(否则不能格式化)或者#drbdadm–overwrite-data-of-peer primary all#drbdadm primary share(all)再次设置主机角色#cat/proc/drbd查看同步信息5>格式化文件系统#mkfs.ext4/dev/drbd1对primary状态节点进行格式化(格式化共享drbd1)#mount/dev/drbd1/mnt格式化的是drbd块设备#df-H查看挂载信息3.DRBD主备节点的切换1>停止drbd服务切换关闭主节点服务,此时挂载的drbd分区自动在主节点卸载了在备用节点设置主节点#drbdadm primary share(all)2>正常切换先执行umount卸载分区设置备节点#drbdadm secondary share(all)将备用节点设置主节点:#drbdadm primary share(all)备用节点执行monut操作(mount/dev/drbd1/mnt)注意:使用系统的版本不一致的时候,不能将生成的drbd*.rpm拷贝到另外一个节点上,因为不同版本的kernel版本不一致,如果使用一样的rpm安装可能出现不能识别到drbd module因此,可以将drbd.-8.4tar.gz源码编译,在不同的系统中生成自己的源码包,这个会根据kernel来自定义rpm包。
drbd安装配置
DRBD安装配置说明(添加新硬盘)一安装前说明====================================================================== DRBD(Distributed Replicated Block Device),分布式复制块设备,是一种通过TCP/IP 网络实现块设备数据实时镜像的方案。
利用这种方案,单一主节点模式(single primary mode)双机系统能够实时地将业务数据保存在主备节点的磁盘中,正常情况下两个节点的数据是一模一样的。
根据官方的说明文档,如果系统内核(linux)版本低于,在安装软件之前需要加载DRBD 模块,如果高于(或等于),则只安装客户端软件。
以下是官网发布的对应版本:此文档是基于每台主机有两块硬盘,硬盘1用于系统安装,硬盘2用于和另一台主机的硬盘进行数据互备。
二安装前环境设定======================================================================OS: Fedora 13 内核版本硬件环境:两台主机,分别有两块硬盘(用作数据备份的硬盘最好大小相同)主机名硬盘1 硬盘2www1 sda(15G) sdb(2G)www2 sda(15G) sdb(2G) (此文档中硬盘2将作为互备硬盘)主机名必须设定,因为DRBD靠主机名来识别主机和备份机,设定方法为:#vim /etc/hostshostname1同时要保证两台主机能够相互通信用来做DRBD的分区:/dev/sdb5挂载点:/opt三安装步骤======================================================================检查DRBD模块加载情况:#lsmod如下图所示,表示已经加载该模块四 DRBD配置====================================================================== -----------------------------------DRBD配置文件----------------------------------安装完成后,在/etc目录下会生成文件,即为drbd唯一需要配置的文件。
MySQL磁盘复制技术--DRBD:优缺点比较、注意事项以及最佳实践
J ust a DBA、Pythoner and Distributed Storage【Mind and Hand】 Running after AICPA 、 CICPA and ACCA 数据库技术交流群: 336882565M ySQL 磁盘复制技术--DRBD:优缺点比较、注意事项以及最佳实践分类: MySQL 架构 2013-05-31 11:08 277人阅读 评论(0) 收藏举报mysql drbdDRBD 是内核模块方式实现的块级别同步复制技术、这里的同步级别是可以调整的因为DRBD 是利用网卡进行块复制、如果、这里用 Infiniband 进行传输、便可以有效处理高并发这是种复制存储、说白点、更像是一台热备机器、与其说是存储的HA、倒不如说是保证数据安全工业环境更多用在 NFS 服务器、并结合 Linux-HA 项目、如 Packmaker、Heartbeat 等很多人谈 DRBD 脑裂而色变、用过就知道了、脑裂不是那么容易就发生的DRBD 注意不设置自动启动、重启时候手动启动、脑裂的情况发生非常的少工作中基本不重启 DRBD、更不会重启服务器了、基本上没遇到脑裂的问题㈠ 优缺点比较优点① 没有单点故障的风险暴露② 没有集群软件通病、如 脑裂缺点⑴ 浪费资源DRBD 的备机目前还不能提供读、所以浪费了资源大家都知道、生产环境下的 MySQL 服务器都是顶配的、这样在线上浪费一台机器、感觉很可惜的⑵ DRBD 无法代替备份DRBD 可能会造成坏数据、不管啥HA、数据备份一定要有、没备份、整个HA瘫痪掉、你也嗝屁了、闪人吧⑶ 故障转移无法做到秒级以内⑷ 对于MyISAM 表用处不大事实上、任何期望高可用的系统、MyISAM 都不会是个选择、因为MyISAM 的崩溃恢复后需要很多时间修复、并且、会丢失数据⑸ 增加写操作负担主要是InnoDB 设置为 innodb_flush_log_at_trx_commit=1导致许多小的写入和fsync()调用、那么、DRBD同步将会比较缓慢㈡ 注意事项① DRBD 和 Linux-HA 版本选择② DRBD 专门使用一块网卡③ 心跳网络与vip服务网络分离④ iptables针对心跳网络放开DRBD、Linux-HA 的端口、VIP可根据自己的应用开启对应端口⑤ 监控DRBD、Linux-HA 状态、最好做成脚本、自动检测、出问题报警⑥ 通常都有流量监控系统(mrtg,cacti等)、定期检查机器的负载、流量情况㈢ 最佳实践DRBD 只选择复制存放 binlog 的设备、如果、主动节点失效、可以在被动节点上开启一个日志服务器 然后、对失效主库的所有设备应用这些 binlog 、接下来 可以选择其中一个备库提升为主库、以代替失效的系统就这样了、over 、欲知详情、参见官网:By David lin2013-05-31Good Luck。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DRBD磁盘/分区同步实验报告
一、环境
Centos5.5 --------NODEB
REHAT5.3---------NODEA
二、Top
主节点nodeB 辅节点nodeA 三、配置
1)各节点上分别建立分区
Fdisk /dev/sdb
N
P
1
;;
w
2)修改hosts文件
3)修改drbd主配置文件
/etc/drbd.conf
#
# please have a a look at the example configuration file in
# /usr/share/doc/drbd83/drbd.conf #
global {
usage-count yes;
}
common {
protocol C;
syncer { rate 1024m;}
}
resource r0 {
on NodeA {
device /dev/drbd1;
disk /dev/sdb1;
address 172.168.0.184:7789;
meta-disk internal;
}
on NodeB {
device /dev/drbd1;
disk /dev/sdb1;
address 172.168.0.185:7789;
meta-disk internal;
}
}
#在线扩展drbd,先扩展lvm,再使用drbd的resize就行了。
#drbdadm primary r0
#vgextend vg_drbd /dev/sdd1
#lvextend -L +1010M /dev/vg_drbd/lv_drbd
#cat /proc/drbd
#drbdadm resize r0
#cat /proc/drbd
4)建立资源(主备上都要做)
Drbdadm create-md r0
Mkfs.xxx /dev/sdb1
Drbdadm attach r0
Drbdadm syncer r0
Drbdadm connect r0
5)初始化
Drbdadm -- --overwrite-data-of-peer primary r0 #主节点上完成
四、测试
1)NodeA更换磁盘,使用NodeB的数据恢复NodeA磁盘上的数据
直接更换即可
2)NodeB上磁盘更换,使NodeA上的数据恢复到NodeB
NodeA:
Drbdadm disconnect r0
Drbdadm primary r0
Drdbadm disconnect r0
NodeB:
建立分区
Drbdadm secondary r0
Drdbadm disconnect r0
Drbdadm -- --discard-my-data connect r0。