真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MysqlDBA高級(jí)運(yùn)維學(xué)習(xí)之路-MySQL高可用工具drbd實(shí)戰(zhàn)-創(chuàng)新互聯(lián)

1.DRBD介紹

Distributed Replicated Block Device (DRBD)是基于塊設(shè)備在不同的高可用服務(wù)器對(duì)之間同步和鏡像數(shù)據(jù)的軟件,通過它可以實(shí)現(xiàn)在網(wǎng)絡(luò)中的兩臺(tái)服務(wù)器之間基于塊設(shè)備級(jí)別的實(shí)時(shí)或異步鏡像或同步復(fù)制,類似于rsync+inotify這樣的系統(tǒng)架構(gòu)項(xiàng)目軟件。只不過drbd是基于文件系統(tǒng)底層的,即block層級(jí)的同步;而rsync+inotify是在文件系統(tǒng)之上的實(shí)際物理文件同步。所以dbrd效率更高。
塊設(shè)備可以是磁盤分區(qū),LVM邏輯卷,或整塊磁盤。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)西雙版納免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

2.DRBD的工作原理

DRBD是linux的內(nèi)核的存儲(chǔ)層中的一個(gè)分布式存儲(chǔ)系統(tǒng),可以使用DRBD在兩臺(tái)Linux服務(wù)器之間共享塊設(shè)備、文件系統(tǒng)和數(shù)據(jù)。類似于一個(gè)網(wǎng)絡(luò)RAID-1的功能,在基于DBRD的高可用(HA)的兩臺(tái)服務(wù)器主機(jī)上,當(dāng)我們將數(shù)據(jù)寫入到本地磁盤系統(tǒng)時(shí),數(shù)據(jù)還會(huì)被實(shí)時(shí)的發(fā)送到網(wǎng)絡(luò)中的另一臺(tái)主機(jī)上并以相同的形式記錄在另一個(gè)磁盤系統(tǒng)中,使得本地(主節(jié)點(diǎn))與遠(yuǎn)程主機(jī)(備節(jié)點(diǎn))的數(shù)據(jù)保持實(shí)時(shí)數(shù)據(jù)同步。這時(shí),如果本地系統(tǒng)(主節(jié)點(diǎn))出現(xiàn)故障,那么遠(yuǎn)程主機(jī)(備節(jié)點(diǎn))上還會(huì)保留有一份和主節(jié)點(diǎn)相同的數(shù)據(jù)備份可以繼續(xù)使用,不但數(shù)據(jù)不會(huì)丟失,還會(huì)提升訪問數(shù)據(jù)的用戶的體驗(yàn)。更多詳細(xì)請(qǐng)查看dbrd官方網(wǎng)站http://www.dbrd.org/

drbd 工作原理圖如下圖所示:

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-MySQL高可用工具drbd實(shí)戰(zhàn)

3.DRBD的復(fù)制模式

協(xié)議A:

異步復(fù)制協(xié)議。一旦本地磁盤寫入已經(jīng)完成,數(shù)據(jù)包已在發(fā)送隊(duì)列中,則寫被認(rèn)為是完成的。在一個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),可能發(fā)生數(shù)據(jù)丟失,因?yàn)楸粚懭氲竭h(yuǎn)程節(jié)點(diǎn)上的數(shù)據(jù)可能仍在發(fā)送隊(duì)列。盡管在故障轉(zhuǎn)移節(jié)點(diǎn)上的數(shù)據(jù)是一致的,但沒有及時(shí)更新。

協(xié)議B:

內(nèi)存同步(半同步)復(fù)制協(xié)議。一旦本地磁盤寫入已完成且復(fù)制數(shù)據(jù)包達(dá)到了對(duì)等節(jié)點(diǎn)則認(rèn)為寫在主節(jié)點(diǎn)上被認(rèn)為是完成的。數(shù)據(jù)丟失可能發(fā)生在參加的兩個(gè)節(jié)點(diǎn)同時(shí)故障的情況下,因?yàn)樵趥鬏斨械臄?shù)據(jù)可能不會(huì)被提交到磁盤。

協(xié)議C:

同步復(fù)制協(xié)議。只有在本地和遠(yuǎn)程節(jié)點(diǎn)的磁盤已經(jīng)確認(rèn)了寫操作完成,寫才被認(rèn)為完成。沒有任何數(shù)據(jù)丟失,所以這是一個(gè)集群節(jié)點(diǎn)的流行模式,但I(xiàn)O吞吐量依賴于網(wǎng)絡(luò)帶寬。

一般使用協(xié)議C,但選擇C協(xié)議將影響流量,從而影響網(wǎng)絡(luò)時(shí)延。為了數(shù)據(jù)可靠性,我們?cè)谏a(chǎn)環(huán)境使用時(shí)須慎重選項(xiàng)使用哪一種協(xié)議。

4.DBRD的企業(yè)應(yīng)用場(chǎng)景

生產(chǎn)場(chǎng)景中drbd常用于基于高可用服務(wù)器之間的數(shù)據(jù)同步解決方案。

例如:heartbeat+drbd+nfs/mfs/gfs、heartbeat+drbd+mysql/oracle等。實(shí)際上drbd可以配合任意需要數(shù)據(jù)同步的所有服務(wù)的應(yīng)用場(chǎng)景。

5.常見的數(shù)據(jù)同步工具

(1)rsync(sersync,inotify,lsyncd)

(2)scp

(3)nc

(4)nfs(網(wǎng)絡(luò)文件系統(tǒng))

(5)union雙機(jī)同步

(6)csync2多機(jī)同步

(7)軟件的自身同步機(jī)制(mysql,oracle,mongdb,ttserver,redis..)文件放到數(shù)據(jù)庫(kù),同步到從庫(kù),再把文件拿出來。

(8)Drbd

6.部署Drbd服務(wù)需求描述

6.1 業(yè)務(wù)需求描述

業(yè)務(wù)需求可以結(jié)合前面配置的heartbeat來搭建dbrd服務(wù),hearbeat的安裝和部署我前面的文章已經(jīng)寫了。主服務(wù)器為heartrbeat-1-114,從服務(wù)器為heartbeat-1-115。

6.2 DRBD部署結(jié)構(gòu)圖

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-MySQL高可用工具drbd實(shí)戰(zhàn)

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-MySQL高可用工具drbd實(shí)戰(zhàn)

(1)Drbd服務(wù)通過直連線或以太網(wǎng)實(shí)時(shí)互相數(shù)據(jù)同步。

(2)兩臺(tái)存儲(chǔ)服務(wù)器互相備份,正常情況下兩端各提供一個(gè)主分區(qū)供NFS使用。

(3)存儲(chǔ)服務(wù)器之間,存儲(chǔ)服務(wù)和交換機(jī)之間都是雙千兆網(wǎng)卡綁定。

(4)應(yīng)用服務(wù)器通過NFS訪問存儲(chǔ)。

7.DRBD軟件安裝實(shí)驗(yàn)準(zhǔn)備

7.1 操作系統(tǒng):

CentOS-6.8-x86_64

7.2 DRBD服務(wù)主機(jī)資源準(zhǔn)備

主服務(wù)器A:

主機(jī)名:heartbeat-1-114

eth0網(wǎng)卡地址:192.168.136.114(管理IP)

eth2網(wǎng)卡地址:10.0.10.4/255.255.255.0 (心跳IP)

從服務(wù)器B:

主機(jī)名:heartbeat-1-115

eth0網(wǎng)卡地址:192.168.136.115(管理IP)

eth2網(wǎng)卡地址:10.0.10.5/255.255.255.0(心跳IP)

虛擬VIP:

虛擬VIP在主服務(wù)器heartbeat-1-114上,VIP:192.168.136.116

需要修改主機(jī)名,關(guān)閉防火墻和selinux這些準(zhǔn)備工作和heartbeat一樣,我前面的安裝heartbeat的文章有講,這里就不講了。就用安裝heartbeat的那兩臺(tái)機(jī)器,主服務(wù)器heartbeat-1-114、從服務(wù)器heartbeat-1-115。

7.3 創(chuàng)建可用分區(qū)

Drbd是基于分區(qū)的,沒有可用的分區(qū)肯定不行。我們先把heartbeat-1-114和heartbeat-1-1115兩個(gè)虛擬機(jī)關(guān)機(jī),然后在主節(jié)點(diǎn)heartbeat-1-114上添加一塊1G的硬盤,在從節(jié)點(diǎn)heartbeat-1-115上添加一塊2G的硬盤。添加硬盤就不演示了,然后啟動(dòng)兩臺(tái)機(jī)器。

7.4 對(duì)/dev/sdb進(jìn)行分區(qū)

(1)對(duì)主節(jié)點(diǎn)/dev/sdb進(jìn)行分區(qū)

[root@heartbeat-1-114 html]# fdisk -l|grep "/dev/sdb"
Disk /dev/sdb: 1073 MB, 1073741824 bytes
[root@heartbeat-1-114 html]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
 switch off the mode (command 'c') and change display units to
 sectors (command 'u').

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bb201

   Device Boot  Start End  Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +768M

Command (m for help): N
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (100-130, default 100): 
Using default value 100
Last cylinder, +cylinders or +size{K,M,G} (100-130, default 130): 
Using default value 130

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bb201

   Device Boot  Start End  Blocks   Id  System
/dev/sdb1   1  99  795186   83  Linux
/dev/sdb2 100 130  249007+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@heartbeat-1-114 html]# partprobe   
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdb (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Error: Invalid partition table - recursive partition on /dev/sr0.
[root@heartbeat-1-114 html]# fdisk -l|grep "/dev/sdb"
Disk /dev/sdb: 1073 MB, 1073741824 bytes
/dev/sdb1   1  99  795186   83  Linux
/dev/sdb2 100 130  249007+  83  Linux

(2)對(duì)備節(jié)點(diǎn)/dev/sdb進(jìn)行分區(qū)

[root@heartbeat-1-115 etc]# fdisk -l|grep "/dev/sdb"
Disk /dev/sdb: 2147 MB, 2147483648 bytes
[root@heartbeat-1-115 etc]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
 switch off the mode (command 'c') and change display units to
 sectors (command 'u').

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003d93c

   Device Boot  Start End  Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261): +1536M

Command (m for help): n  
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (198-261, default 198): 
Using default value 198
Last cylinder, +cylinders or +size{K,M,G} (198-261, default 261): 
Using default value 261

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@heartbeat-1-115 etc]# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdb (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Error: Invalid partition table - recursive partition on /dev/sr0.
[root@heartbeat-1-115 etc]# fdisk -l|grep "/dev/sdb"
Disk /dev/sdb: 2147 MB, 2147483648 bytes
/dev/sdb1   1 197 1582371   83  Linux
/dev/sdb2 198 261  514080   83  Linux

因此,我們需要做的就是對(duì)/dev/sdb進(jìn)行分區(qū),需要分區(qū)的具體內(nèi)容見下圖:

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-MySQL高可用工具drbd實(shí)戰(zhàn)

提示:

1.這里的meta data分區(qū)一定不能格式化建立文件系統(tǒng)。

2.分好的分區(qū)現(xiàn)在不能直接掛在(mount)。

3.生產(chǎn)環(huán)境DRBD meta data分區(qū)一般可設(shè)為1-2G。這里的/dev/sdb2分區(qū)的預(yù)期大小1G應(yīng)該是主節(jié)點(diǎn)和備節(jié)點(diǎn)的sdb2分區(qū)大小之和(305M+611M=916M),本次演示的大小是1G。

8.安裝DRBD軟件

DRDB軟件可以編譯安裝也可以下載包含的源yum安裝,本次事件采用編譯安裝的方式。

8.1 編譯安裝DRDB軟件(注意下面步驟兩臺(tái)機(jī)器都要操作)

(1)下載drbd軟件(兩臺(tái)機(jī)器都要操作)

可以在官網(wǎng)上下載http://oss.linbit.com/drbd/,然后用rz命令傳到服務(wù)器

(2)安裝gcc和gcc-c++

[root@heartbeat-1-114 tools]# yum install gcc gcc-c++ -y

(3)編譯drbd

[root@heartbeat-1-114 tools]# pwd
/home/linzhongniao/tools
[root@heartbeat-1-114 tools]# export LC_ALL=C
[root@heartbeat-1-114 tools]# ls
drbd-8.4.4.tar.gz 
[root@heartbeat-1-114 tools]# tar –xf drbd-8.4.4.tar.gz
[root@heartbeat-1-114 tools]# cd drbd-8.4.4
[root@heartbeat-1-114 drbd-8.4.4]# ./configure --prefix=/usr/local/drbd8.4.4 --with-km --with-heartbeat --sysconfdir=/etc/

出現(xiàn)下面問題yum安裝dpkg、dpkg-dev、dpkg-devel再編譯

checking for udevinfo... false
configure: WARNING: No dpkg-buildpackage found, building Debian packages is disabled.
出現(xiàn)下面問題yum安裝flex,重新編譯
configure: error: Cannot build utils without flex, either install flex or pass the --without-utils option.

為了防止編譯發(fā)生錯(cuò)誤,最好提前安裝上,下面是我在編譯的時(shí)候需要安裝的包。

yum install dpkg dpkg-dev dpkg-devel gcc gcc-c++ git rpm-build kernel-devel kernel-headers flex -y

(4)加載內(nèi)核

1.先查找內(nèi)核源碼

[root@heartbeat-1-114 drbd-8.4.4]# ls -ld /usr/src/kernels/$(uname -r)/
ls: 無法訪問/usr/src/kernels/2.6.32-642.el6.x86_64/: 沒有那個(gè)文件或目錄

沒有內(nèi)核源碼文件路徑y(tǒng)um安裝kernel-devel kernel-headers在查看就有了

[root@heartbeat-1-114 drbd-8.4.4]# ls -ld /usr/src/kernels/$(uname -r)/
drwxr-xr-x 22 root root 4096 3月   5 05:55 /usr/src/kernels/2.6.32-696.20.1.el6.x86_64/

如果uname –r命令顯示的系統(tǒng)內(nèi)核和在/usr/src/kernels/下查找的系統(tǒng)內(nèi)核不一樣怎么辦呢,很簡(jiǎn)單升級(jí)系統(tǒng)內(nèi)核,重啟系統(tǒng)后再查看內(nèi)核就一樣了。

[root@heartbeat-1-114 drbd-8.4.4]# ls -ld /usr/src/kernels/2.6.32-696.20.1.el6.x86_64/
drwxr-xr-x 22 root root 4096 Mar  6 19:24 /usr/src/kernels/2.6.32-696.20.1.el6.x86_64/
[root@heartbeat-1-114 drbd-8.4.4]# uname -r
 2.6.32-642.el6.x86_64
[root@heartbeat-1-114 drbd-8.4.4]# yum -y install kernel
[root@heartbeat-1-114 ~]# uname -r
 2.6.32-696.20.1.el6.x86_64

2.加載系統(tǒng)內(nèi)核

[root@heartbeat-1-114 drbd-8.4.4]# make KDIR=/usr/src/kernels/$(uname -r)/
[root@heartbeat-1-114 drbd-8.4.4]# echo $?
0

(5)安裝drbd

[root@heartbeat-1-114 drbd-8.4.4]# make install

echo $?為零安裝成功

9.圖片數(shù)據(jù)/data各配置參數(shù)

比較重要的是下面標(biāo)黃的部分,我們還用部署heartbeat的那個(gè)環(huán)境,heartbeat的環(huán)境部署前面文章有,這里就不再演示了。

Mysql DBA 高級(jí)運(yùn)維學(xué)習(xí)之路-MySQL高可用工具drbd實(shí)戰(zhàn)

10.配置DRBD參數(shù) (兩臺(tái)機(jī)器都要操作)

10.1 加載DRBD模塊到內(nèi)核

這個(gè)DRBD模塊在重啟電腦之后就會(huì)失效不會(huì)自動(dòng)加載到系統(tǒng)內(nèi)核中,我們可以放在/etc/rc.local里生效,讓它開機(jī)生效。生產(chǎn)中是不需要放在/etc/rc.local里面的,不讓自動(dòng)啟動(dòng),自動(dòng)啟動(dòng)會(huì)導(dǎo)致一些不必要的問題。用lsmod |grep drbd查看有這個(gè)內(nèi)容了就說明內(nèi)核加載完成。

[root@heartbeat-1-114 drbd-8.4.4]# lsmod|grep drbd
[root@heartbeat-1-114 drbd-8.4.4]# mo
modinfo  modutil  mountmount.nfsmountpoint   mount.tmpfs  
modprobe more mount.cifs   mount.nfs4   mountstats  
[root@heartbeat-1-114 drbd-8.4.4]# modprobe drbd
[root@heartbeat-1-114 drbd-8.4.4]# lsmod|grep drbd
drbd  327370  0 
libcrc32c   1246  1 drbd
[root@heartbeat-1-114 drbd-8.4.4]# echo 'modprobe drbd' >>/etc/rc.local
[root@heartbeat-1-114 drbd-8.4.4]# tail -1 /etc/rc.local
modprobe drbd

10.2 編譯DRBD的配置文件drbd.conf

(1)配置DRBD的配置文件

DRBD的配置文件在我們編譯的時(shí)候指定的那個(gè)路徑/etc/下。

[root@heartbeat-1-114 etc]# pwd
/etc
[root@heartbeat-1-114 etc]# cp drbd.conf{,.bak} 
[root@heartbeat-1-114 etc]# rm -f drbd.conf
[root@heartbeat-1-114 etc]# cat drbd.conf
global {
usage-count no;
}
common {
syncer {
# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
rate 1000M;
verify-alg crc32c;
}
}
resource data {
protocol C;

disk {
on-io-error detach;
}
on heartbeat-1-114 {
device/dev/drbd0;
disk  /dev/sdb1;
address   10.0.10.4:7788;
meta-disk /dev/sdb2[0];
}
on heartbeat-1-115 {
device/dev/drbd0;
disk  /dev/sdb1;
address   10.0.10.5:7788;
meta-disk /dev/sdb2[0];
}
}

(2)配置文件參數(shù)說明

global {
    usage-count no;
}

前三行是你全局配置,一般網(wǎng)站都會(huì)同步開源網(wǎng)站的安裝量,usage-count的值等于no,就是不允許官方統(tǒng)計(jì)。

common {
    syncer {
        # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
        rate 1000M;
        verify-alg crc32c;
    }
}

Common段里面設(shè)置了同步的速度比如1000M,crc32c是一個(gè)算法

resource data {
        protocol C;

    disk {
        on-io-error    detach;
    }
    on heartbeat-1-114 {
        device      /dev/drbd0;
        disk      /dev/sdb1;
        address      10.0.10.4:7788;
        meta-disk /dev/sdb2[0];        
    }
    on heartbeat-1-115 {
        device      /dev/drbd0;
        disk      /dev/sdb1;
        address      10.0.10.5:7788;
        meta-disk /dev/sdb2[0];        
    }
}

上面resource段是drbd的資源,protocol C是一個(gè)實(shí)時(shí)同步數(shù)據(jù)的協(xié)議,用A或B都是異步同步或半同步,這樣會(huì)導(dǎo)致數(shù)據(jù)的丟失,除非業(yè)務(wù)需求數(shù)據(jù)不總要并發(fā)要求高的情況下。disk表示一個(gè)磁盤出現(xiàn)io錯(cuò)誤怎么處理。resource后面的data是drbd的資源啟動(dòng)drbd的時(shí)候會(huì)用到,注意這里resource可以有多個(gè)資源,比如說再想增加一個(gè)資源,我們可以把resource這段復(fù)制一個(gè)就好了,需要修改的有resource后面的資源名稱以及disk、meta-disk和同步的地址的端口號(hào),例如7788。這里on heartbeat-1-114的on后面跟的是機(jī)器名,注意這里的機(jī)器名必須是uname –n返回的結(jié)果,device表示drbd的設(shè)備,disk表示對(duì)應(yīng)本機(jī)/dev/sdb的第一個(gè)分區(qū),address這里的地址是一個(gè)同步的地址,meta-disk是meta設(shè)備的數(shù)據(jù)分區(qū)對(duì)應(yīng)本機(jī)/dev/sdb的第二個(gè)分區(qū),0是meta 設(shè)備的一個(gè)格式。

11.啟用 DRBD資源 (兩臺(tái)機(jī)器都要操作)

兩臺(tái)機(jī)器都要操作以heartbeat-1-114為例

11.1 初始化DRBD的metadata(Create device metadata)

初始化資源,注意我們初始的資源就是drbd.conf里resource后面的data。

[root@heartbeat-1-114 etc]# drbdadm create-md data
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.

11.2 啟動(dòng)DRBD服務(wù)

啟動(dòng)drbd服務(wù)的命令:drbdadm up data

停止drbd服務(wù)的命令:drbdadm down data

drbdadm up 后跟的是resource設(shè)置的資源data,也可以指定所有資源drbdadm up all。準(zhǔn)備節(jié)點(diǎn)都要啟動(dòng)以主節(jié)點(diǎn)為例:

[root@heartbeat-1-114 etc]# drbdadm up data
/usr/local/drbd8.4.4/var/run/drbd: No such file or directory
/usr/local/drbd8.4.4/var/run/drbd: No such file or directory

我們看有錯(cuò)誤提示/usr/local/drbd8.4.4/var/run/drbd: No such file or directory

這個(gè)目錄找不到centos6版本以上需要有這個(gè)目錄,好我們就創(chuàng)建一個(gè)這個(gè)目錄再啟動(dòng)drbd。

[root@heartbeat-1-114 ~]# mkdir -p /usr/local/drbd8.4.4/var/run/drbd
[root@heartbeat-1-114 etc]# drbdadm create-md data
Device '0' is configured!
Command 'drbdmeta 0 v08 /dev/sdb2 0 create-md' terminated with exit code 2

11.3 可以通過/proc/drbd查看drbd的狀態(tài)

[root@heartbeat-1-114 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-114, 2018-11-10 23:08:21
 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:749984

這里顯示ro:Secondary/Secondary ds:Inconsistent/Inconsistent是正確的都是從,處于無主(primary)的狀態(tài)。

11.4 指定數(shù)據(jù)同步的主節(jié)點(diǎn)

指定數(shù)據(jù)同步的主節(jié)點(diǎn)的命令:drbdadm -- --overwrite-data-of-peer primary data

將主節(jié)點(diǎn)變?yōu)閺墓?jié)點(diǎn)的命令(前提服務(wù)器已經(jīng)是主節(jié)點(diǎn)的情況下):/usr/share/heartbeat/hb_standby

說明:

1.如果為空硬盤??梢噪S意執(zhí)行操作不需要考慮數(shù)據(jù)。

2.如果兩邊數(shù)據(jù)不一樣(要特別注意同步數(shù)據(jù)的方向,否則可能丟失數(shù)據(jù))如果對(duì)端磁盤有數(shù)據(jù)要提前備份,否則會(huì)把對(duì)端數(shù)據(jù)覆蓋掉。

注意:在主服務(wù)器上操作我們的主服務(wù)器是heartbeat-1-114,同步DRBD數(shù)據(jù)到對(duì)端SERVER使數(shù)據(jù)保持一致

(1)指定主節(jié)點(diǎn)同步數(shù)據(jù)

[root@heartbeat-1-114 etc]# drbdadm -- --overwrite-data-of-peer primary data

查看主節(jié)點(diǎn)同步的信息

[root@heartbeat-1-114 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-114, 2018-11-10 23:08:21
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:40960 nr:0 dw:0 dr:41631 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:709024
[>...................] sync'ed:  6.0% (709024/749984)K
finish: 0:00:17 speed: 40,960 (40,960) K/sec
[root@heartbeat-1-114 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-114, 2018-11-10 23:08:21
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:164556 nr:0 dw:0 dr:168607 al:0 bm:10 lo:0 pe:1 ua:4 ap:0 ep:1 wo:f oos:586144
[===>................] sync'ed: 22.3% (586144/749984)K
finish: 0:00:14 speed: 40,960 (40,960) K/sec
[root@heartbeat-1-114 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-114, 2018-11-10 23:08:21
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:230100 nr:0 dw:0 dr:234143 al:0 bm:14 lo:0 pe:1 ua:4 ap:0 ep:1 wo:f oos:520608
[=====>..............] sync'ed: 31.0% (520608/749984)K
finish: 0:00:11 speed: 45,872 (45,872) K/sec

(2)從節(jié)點(diǎn)同步的信息

[root@heartbeat-1-115 etc]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-115, 2018-11-10 23:08:42
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:749983 dw:749983 dr:0 al:0 bm:46 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

(3)參數(shù)說明

以主節(jié)點(diǎn)為例

cs:Connected:Connected是連接的狀態(tài),用zabbix做監(jiān)控主要看Connected。
ro:Primary/Secondary: Primary是主,Secondary是從;也就是說本地是主對(duì)端是從。
ds:UpToDate/UpToDate:UpToDate是兩邊都更新完成。
ns(network send):網(wǎng)絡(luò)發(fā)送。
nr(network receive):網(wǎng)絡(luò)收到。備節(jié)點(diǎn)的這個(gè)點(diǎn)應(yīng)該和主節(jié)點(diǎn)的ns的值是一樣的。
dw(disk write):硬盤寫入。把網(wǎng)絡(luò)數(shù)據(jù)寫到硬盤。如果備節(jié)點(diǎn)的dw、nr和主節(jié)點(diǎn)的ns的值一樣說明數(shù)據(jù)時(shí)完全同步的

12.可能出現(xiàn)的問題及解決方法

cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----

cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:8444

解決方法:

1.檢查兩臺(tái)物理網(wǎng)絡(luò)連接或者IP及主機(jī)路由是否正確。

2.停止iptables防火墻。

3.還可能是發(fā)生列腦導(dǎo)致的結(jié)果。

出現(xiàn)上面問題可用下面操作解決:

(1)在從節(jié)點(diǎn)slave上操作:

drbdadm secondary data
drbdadm disconnect data
drbdadm -- --discard-my-data connect data ---> 丟棄本端數(shù)據(jù)進(jìn)行連接

(2)在主節(jié)點(diǎn)上操作:

通過查看cat/proc/drbd狀態(tài),如果不是WFConnection狀態(tài),則需要用下面命令手動(dòng)重新連接資源

drbdadm connect data

然后再啟動(dòng)備節(jié)點(diǎn)的drbd資源

13.掛載測(cè)試數(shù)據(jù)庫(kù)同步及查看備節(jié)點(diǎn)同步狀態(tài)

(1)創(chuàng)建DRBD文件系統(tǒng)

格式化主節(jié)點(diǎn)的drbd0,備節(jié)點(diǎn)不需要格式化。

[root@heartbeat-1-114 etc]# mkfs.ext4 -b 4096 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
46944 inodes, 187495 blocks
9374 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=192937984
6 block groups
32768 blocks per group, 32768 fragments per group
7824 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

(2)掛載設(shè)備

[root@heartbeat-1-114 etc]# mount /dev/drbd0 /data

提示:如果在從節(jié)點(diǎn)格式化會(huì)報(bào)錯(cuò),需要用drbdadm -- --overwrite-data-of-peer primary data命令指定主節(jié)點(diǎn)的,從節(jié)點(diǎn)不能用這個(gè)命令不需要格式化drb0.

[root@heartbeat-1-115 ~]# mkfs.ext4 -b 4096 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
mkfs.ext4: 錯(cuò)誤的介質(zhì)類型 while trying to determine filesystem size

(3)測(cè)試備節(jié)點(diǎn)數(shù)據(jù)同步情況

先在主節(jié)點(diǎn)的data文件系統(tǒng)中插入數(shù)據(jù),我們插入個(gè)20個(gè)文件

[root@heartbeat-1-114 data]# touch `seq 10`
[root@heartbeat-1-114 data]# ls
1  10  2  3  4  5  6  7  8  9  lost+found

查看備節(jié)點(diǎn)的數(shù)據(jù)同步情況,需要先掛載DRBD存儲(chǔ)設(shè)備,我們看數(shù)據(jù)已經(jīng)同步過來了。

[root@heartbeat-1-115 etc]# mount /dev/sdb1 /mnt
mount: you must specify the filesystem type
[root@heartbeat-1-115 etc]# drbdadm down data  為什么啟動(dòng)從節(jié)點(diǎn)的drbd資源的情況下掛載sdb1會(huì)報(bào)錯(cuò),這時(shí)把從節(jié)點(diǎn)的drbd資源停掉就可以掛載了查看數(shù)據(jù)是否同步了;在實(shí)踐中從節(jié)點(diǎn)只啟動(dòng)drbd資源就可以了不必掛載文件系統(tǒng),如果想查看文件是否同步把從節(jié)點(diǎn)drbd資源停止在掛載查看就好了
[root@heartbeat-1-115 etc]# mount /dev/sdb1 /mnt
[root@heartbeat-1-115 etc]# ll /mnt/
total 16
 -rw-r--r-- 1 root root 0 Nov 11 15:26 1
 -rw-r--r-- 1 root root 0 Nov 11 15:26 10
 -rw-r--r-- 1 root root 0 Nov 11 15:26 2
 -rw-r--r-- 1 root root 0 Nov 11 15:26 3
 -rw-r--r-- 1 root root 0 Nov 11 15:26 4
 -rw-r--r-- 1 root root 0 Nov 11 15:26 5
 -rw-r--r-- 1 root root 0 Nov 11 15:26 6
 -rw-r--r-- 1 root root 0 Nov 11 15:26 7
 -rw-r--r-- 1 root root 0 Nov 11 15:26 8
 -rw-r--r-- 1 root root 0 Nov 11 15:26 9
drwx------ 2 root root 16384 Nov 11 15:20 lost+found

出現(xiàn)上面同步的數(shù)據(jù)表示drbd完成了,完成了下面我們?cè)賳?dòng)備節(jié)點(diǎn)的drbd服務(wù)

[root@heartbeat-1-115 ~]# umount /mnt/
[root@heartbeat-1-115 ~]# drbdadm up data
[root@heartbeat-1-115 ~]# cat /proc/drbd 
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@heartbeat-1-129, 2018-03-05 07:38:05
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:56 dw:56 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


文章題目:MysqlDBA高級(jí)運(yùn)維學(xué)習(xí)之路-MySQL高可用工具drbd實(shí)戰(zhàn)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://weahome.cn/article/dgocgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部