DRBD数据同步
[root@node1~]
#fdisk-l|grep/dev/sdb
Disk
/dev/sdb
:2147MB,2147483648bytes,4194304sectors
[root@node2~]
#fdisk-l|grep/dev/sdb
Disk
/dev/sdb
:2147MB,2147483648bytes,4194304sectors
[root@node1~]
#cat/etc/hosts
127.0.0.1 localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
::1 localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
172.25.0.29node1
172.25.0.30node2
[root@node2~]
#cat/etc/hosts
127.0.0.1 localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
::1 localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
172.25.0.29node1
172.25.0.30node2
[root@node1~]
#ssh-keygen
[root@node1~]
#ssh-copy-idnode2
Theauthenticityofhost
'node2(172.25.0.30)'
can'tbeestablished.
ECDSAkeyfingerprintisae:88:02:59:f9:7f:e9:4f:48:8d:78:d2:6f:c7:7a:f1.
Areyousureyouwantto
continue
connecting(
yes
/no
)?
yes
/usr/bin/ssh-copy-id
:INFO:attemptingtolog
in
withthenewkey(s),tofilteroutanythatarealreadyinstalled
/usr/bin/ssh-copy-id
:WARNING:Allkeyswereskippedbecausetheyalreadyexistontheremotesystem.
[root@node1~]
#crontab-e
*
/5
****ntpdatecn.pool.ntp.org
###添加任务
[root@node1~]
#crontab-e
*
/5
****ntpdatecn.pool.ntp.org
###添加任务
[root@node1~]
#crontab-l
*
/5
****ntpdatecn.pool.ntp.org
[root@node2~]
#crontab-l
*
/5
****ntpdatecn.pool.ntp.org
[root@node1~]
#rpm--importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@node1~]
#rpm-Uvhhttp://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrievinghttp:
//www
.elrepo.org
/elrepo-release-7
.0-2.el7.elrepo.noarch.rpm
Retrievinghttp:
//elrepo
.org
/elrepo-release-7
.0-3.el7.elrepo.noarch.rpm
Preparing...
#################################[100%]
Updating/installing...
1:elrepo-release-7.0-3.el7.elrepo
#################################[100%]
[root@node1~]
#yuminstall-ykmod-drbd84drbd84-utilskernel* ##装完重启一下
[root@node2~]
#rpm--importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@node2~]
#rpm-Uvhhttp://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrievinghttp:
//www
.elrepo.org
/elrepo-release-7
.0-2.el7.elrepo.noarch.rpm
Retrievinghttp:
//elrepo
.org
/elrepo-release-7
.0-3.el7.elrepo.noarch.rpm
Preparing...
#################################[100%]
Updating/installing...
1:elrepo-release-7.0-3.el7.elrepo
#################################[100%]
[root@node2~]
#yuminstall-ykmod-drbd84drbd84-utils kernel*
[root@node1~]
#cat/etc/drbd.conf
#Youcanfindanexamplein /usr/share/doc/drbd.../drbd.conf.example
include
"drbd.d/global_common.conf"
;
include
"drbd.d/*.res"
;
[root@node1~]
#vim/etc/drbd.d/global_common.conf
global{
usage-countno;
#是否参加DRBD使用统计,默认为yes。官方统计drbd的装机量,改为no
#minor-countdialog-refreshdisable-ip-verification
}
common{
protocolC;
#使用DRBD的同步协议,添加这一行
handlers{
pri-on-incon-degr
"/usr/lib/drbd/notify-pri-on-incon-degr.sh;/usr/lib/drbd/notify-emergency-reboot.sh;echob>/proc/sysrq-trigger;reboot-f"
;
pri-lost-after-sb
"/usr/lib/drbd/notify-pri-lost-after-sb.sh;/usr/lib/drbd/notify-emergency-reboot.sh;echob>/proc/sysrq-trigger;reboot-f"
;
local
-io-error
"/usr/lib/drbd/notify-io-error.sh;/usr/lib/drbd/notify-emergency-shutdown.sh;echoo>/proc/sysrq-trigger;halt-f"
;
###需要把这三行的注释去掉
}
startup{
#wfc-timeoutdegr-wfc-timeoutoutdated-wfc-timeoutwait-after-sb
}
options{
#cpu-maskon-no-data-accessible
}
disk{
on-io-errordetach;
#配置I/O错误处理策略为分离,添加这一行
#sizemax-bio-bvecson-io-errorfencingdisk-barrierdisk-flushes
#disk-drainmd-flushesresync-rateresync-afteral-extents
#c-plan-aheadc-delay-targetc-fill-targetc-max-rate
#c-min-ratedisk-timeout
}
net{
#protocoltimeoutmax-epoch-sizemax-buffersunplug-watermark
#connect-intping-intsndbuf-sizercvbuf-sizeko-count
#allow-two-primariescram-hmac-algshared-secretafter-sb-0pri
#after-sb-1priafter-sb-2prialways-asbprr-conflict
#ping-timeoutdata-integrity-algtcp-corkon-congestion
#congestion-fillcongestion-extentscsums-algverify-alg
#use-rle
}
syncer{
rate1024M;
#设置主备节点同步时的网络速率,添加这个选项
}
}
[root@node1~]
#cat/etc/drbd.d/mysql.res ##这个文件需要自己创建
resourcemysql{
#资源名称
protocolC;
#使用协议
meta-diskinternal;
device
/dev/drbd1
;
#DRBD设备名称
syncer{
verify-algsha1;
#加密算法
}
net{
allow-two-primaries;
}
onnode1{
#hostname一定要设为node1,不然下一步会报错的
disk
/dev/sdb
; drbd1使用的磁盘分区为
"mysql"
address172.25.0.29:7789;
#设置DRBD监听地址与端口
}
onnode2{
disk
/dev/sdb
;
address172.25.0.30:7789;
}
}
[root@node1~]
#scp-rp /etc/drbd.d/*node2:/etc/drbd.d/
global_common.conf 100%2621 2.6KB
/s
00:00
mysql.res 100% 238 0.2KB
/s
00:00
[root@node1~]
#drbdadmcreate-mdmysql
Youwantmetocreateav08styleflexible-sizeinternalmetadatablock.
Thereappearstobeav08flexible-sizeinternalmetadatablock
already
in
placeon
/dev/sdb
atbyteoffset2147479552
Doyoureallywanttooverwritetheexistingmeta-data?
[needto
type
'yes'
toconfirm]
yes
md_offset2147479552
al_offset2147446784
bm_offset2147381248
Foundxfsfilesystem
2097052kBdataareaapparentlyused
2097052kBleftusablebycurrentconfiguration
Eventhoughitlookslikethiswouldplacethenewmetadatainto
unusedspace,youstillneedtoconfirm,asthisisonlyaguess.
Doyouwanttoproceed?
[needto
type
'yes'
toconfirm]
yes
initializingactivitylog
initializingbitmap(64KB)toallzero
Writingmetadata...
Newdrbdmetadatablocksuccessfullycreated.
[root@node1~]
# modprobedrbd
[root@node1~]
#lsmod|grepdrbd
drbd 396875 0
libcrc32c 12644 4xfs,drbd,nf_nat,nf_conntrack
[root@node1~]
#drbdadmupmysql
[root@node1~]
#drbdadm----forceprimarymysql
查看node1的状态:
[root@node1~]
#cat/proc/drbd
version:8.4.10-1(api:1
/proto
:86-101)
GIT-
hash
:a4d5de01fffd7e4cde48a080e2c686f9e8cebf4cbuildbymockbuild@,2017-09-1514:23:22
1:cs:WFConnectionro:Primary
/Unknown
ds:UpToDate
/DUnknown
Cr----s
ns:0nr:0dw:0dr:912al:8bm:0lo:0pe:0ua:0ap:0ep:1wo:foos:2097052
Youhavenewmail
in
/var/spool/mail/root
[root@node2~]
#drbdadmcreate-mdmysql
Youwantmetocreateav08styleflexible-sizeinternalmetadatablock.
Thereappearstobeav08flexible-sizeinternalmetadatablock
already
in
placeon
/dev/sdb
atbyteoffset2147479552
Doyoureallywanttooverwritetheexistingmeta-data?
[needto
type
'yes'
toconfirm]
yes
md_offset2147479552
al_offset2147446784
bm_offset2147381248
Foundxfsfilesystem
2097052kBdataareaapparentlyused
2097052kBleftusablebycurrentconfiguration
Eventhoughitlookslikethiswouldplacethenewmetadatainto
unusedspace,youstillneedtoconfirm,asthisisonlyaguess.
Doyouwanttoproceed?
[needto
type
'yes'
toconfirm]
yes
initializingactivitylog
initializingbitmap(64KB)toallzero
Writingmetadata...
Newdrbdmetadatablocksuccessfullycreated.
[root@node2~]
#modprobedrbd
[root@node2~]
#drbdadmupmysql
[root@node2~]
#cat/proc/drbd
version:8.4.10-1(api:1
/proto
:86-101)
GIT-
hash
:a4d5de01fffd7e4cde48a080e2c686f9e8cebf4cbuildbymockbuild@,2017-09-1514:23:22
1:cs:SyncTargetro:Secondary
/Primary
ds:Inconsistent
/UpToDate
Cr-----
ns:0nr:237568dw:237568dr:0al:8bm:0lo:0pe:0ua:0ap:0ep:1wo:foos:1859484
[=>..................]
sync
'ed:11.6%(1859484
/2097052
)K
finish:0:00:39speed:47,512(47,512)want:102,400K
/sec
[root@node1~]
# mkfs.xfs/dev/drbd1
meta-data=
/dev/drbd1
isize=512 agcount=4,agsize=131066blks
= sectsz=512 attr=2,projid32bit=1
= crc=1 finobt=0,sparse=0
data = bsize=4096 blocks=524263,imaxpct=25
= sunit=0 swidth=0blks
naming =version2 bsize=4096 ascii-ci=0ftype=1
log =internallog bsize=4096 blocks=2560,version=2
= sectsz=512 sunit=0blks,lazy-count=1
realtime=none extsz=4096 blocks=0,rtextents=0
Youhavenewmail
in
/var/spool/mail/root
[root@node1~]
#mount/dev/drbd1/mnt
[root@node1~]
#df-h
Filesystem Size UsedAvailUse%Mountedon
/dev/mapper/cl-root
18G 2.3G 16G 13%/
devtmpfs 226M 0 226M 0%
/dev
tmpfs 237M 0 237M 0%
/dev/shm
tmpfs 237M 4.6M 232M 2%
/run
tmpfs 237M 0 237M 0%
/sys/fs/cgroup
/dev/sda1
1014M 197M 818M 20%
/boot
tmpfs 48M 0 48M 0%
/run/user/0
/dev/drbd1
2.0G 33M 2.0G 2%
/mnt
[root@node1~]
#drbdadmcstatemysql
Connected
[root@node1~]
#drbdadmrole mysql
Primary
/Secondary
[root@node1~]
# sshnode2"drbdadmrole mysql"
Secondary
/Primary
[root@node1~]
#cat/proc/drbd
version:8.4.10-1(api:1
/proto
:86-101)
GIT-
hash
:a4d5de01fffd7e4cde48a080e2c686f9e8cebf4cbuildbymockbuild@,2017-09-1514:23:22
1:cs:Connectedro:Primary
/Secondary
ds:UpToDate
/UpToDate
Cr-----
ns:2099100nr:0dw:2048dr:2098449al:9bm:0lo:0pe:0ua:0ap:0ep:1wo:foos:0
[root@node1~]
#yuminstallmariadb-servermariadb-y
[root@node2~]
#yuminstallmariadb-servermariadb-y
[root@node1~]
#cat/etc/my.cnf
[mysqld]
datadir=
/mnt
.......
[root@node2~]
#cat/etc/my.cnf
[mysqld]
datadir=
/mnt
.......
[root@node1~]
#chown-Rmysql:mysql/mnt
[root@node1~]
#systemctlrestartmariadb
[root@node2~]
#chown-Rmysql:mysql/mnt
[root@node2~]
#systemctlrestartmariadb
[root@node1~]
#mysqld_safe--skip-grant-tables&
[root@node1~]
#mysql-uroot
MariaDB[(none)]>createdatabasexiaozhang;
QueryOK,1rowaffected(0.12sec)
[root@node2~]
#mysqld_safe--skip-grant-tables&#进入mariadb安全模式
[root@node1/]
#systemctlstop mariadb
[root@node1/]
#umount/mnt
[root@node1/]
# drbdadmsecondarymysql ##降为从
[root@node1/]
#drbd-overview
NOTE:drbd-overviewwillbedeprecatedsoon.
Pleaseconsiderusingdrbdtop.
1:mysql
/0
ConnectedSecondary
/Secondary
UpToDate
/UpToDate
[root@node2~]
#drbdadmprimarymysql
Youhavenewmail
in
/var/spool/mail/root
[root@node2~]
# drbd-overview
NOTE:drbd-overviewwillbedeprecatedsoon.
Pleaseconsiderusingdrbdtop.
1:mysql
/0
ConnectedPrimary
/Secondary
UpToDate
/UpToDate
[root@node2~]
#mount/dev/drbd1 /mnt
[root@node2~]
#mysql-uroot
MariaDB[(none)]>showdatabases;
+--------------------+
|Database |
+--------------------+
|information_schema|
|mysql |
|performance_schema|
|
test
|
|xiaozhang |
+--------------------+
5rows
in
set
(0.07sec)