MySQL高可用性之MySQL+DRBD+Heartbeat
主機名 | 角色 |
IP地址 |
db-master |
主MySQL | |
db-backup | 備MySQL | |
VIP | 192.168.0.100/24 |
1
2
3
4
|
[root@db-master ~] # yum install -y mysql mysql-server #兩個節點簡單安裝,僅做測試用
[root@db-master ~] # vi /etc/my.cnf
datadir= /data #修改後的資料庫存放目錄
[root@db-master ~] # /etc/init.d/mysqld start
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@db-master ~] # yum install -y gcc gcc-c++ make perl kernel-devel kernel-headers flex #安裝依賴包
[root@db-master ~] # rpm -vih drbd84-utils-8.4.4-2.el6.elrepo.x86_64.rpm kmod-drbd84-8.4.4-1.el6.elrepo.x86_64.rpm
[root@db-master ~] # tar zxvf drbd-8.4.4.tar.gz
[root@db-master ~] # cd drbd-8.4.4
[root@db-master drbd-8.4.4] # ./configure --prefix=/usr/local/drbd --with-km #--with-km,啟用核心模組
[root@db-master drbd-8.4.4] # make KDIR=/usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ #指定核心原始碼路徑,根據自己系統來
[root@db-master drbd-8.4.4] # make install
[root@db-master drbd-8.4.4] # chkconfig --add drbd
[root@db-master drbd-8.4.4] # chkconfig drbd on
[root@db-master drbd-8.4.4] # cp drbd/drbd.ko /lib/modules/`uname -r`/kernel/lib/ #載入DRBD模組到核心中
[root@db-master ~] # modprobe drbd
[root@db-master ~] # lsmod | grep drbd #由此檢視drbd模組已經載入
drbd 333755 0 libcrc32c 1246 1 drbd |
1
2
3
4
|
[root@db-master drbd-8.4.4] # cd /usr/local/drbd/
[root@db-master drbd] # cat etc/drbd.conf #主配置是載入全域性配置檔案和資源配置檔案
include "drbd.d/global_common.conf" ;
include "drbd.d/*.res" ;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
[root@db-master drbd] # vi etc/drbd.d/global_common.conf #全域性配置檔案
global { usage-count yes ; #參加DRBD使用者統計
}
common { protocol C; #使用同步協議C,收到寫入確認就認為完成了寫入操作
disk { on-io-error detach; #當磁碟錯誤時,不連線
}
syncer {
rate 100M; #設定主裝置節點同步時的網路速率最大值,預設最大1G
}
}
resource mysql { #mysql定義資源的名字
on db-master { #on開頭,後面是主機名稱
device /dev/drbd0 ; #drbd裝置名稱
disk /dev/sdb1 ; #drbd0使用的磁碟分割槽為sdb1
address 192.168.0.10:7789; #設定drbd監聽地址與埠
meta-disk internal;
}
on db-backup { #on開頭,後面是主機名稱
device /dev/drbd0 ; #drbd裝置名稱
disk /dev/sdb1 ; #drbd0使用的磁碟分割槽為sdb1
address 192.168.0.20:7789; #設定drbd監聽地址與埠
meta-disk internal;
}
} |
1
2
3
4
5
6
|
[root@db-master ~] # drbdadm create-md mysql
Writing meta data... initializing activity log NOT initializing bitmap New drbd meta data block successfully created. success |
1
|
[root@db-backup ~] # drbdadm create-md mysql
|
1
2
3
4
5
|
[root@db-master~] # mkdir -p /usr/local/drbd/var/run/drbd #建立資源目錄
[root@db-master drbd] # service drbd start
[root@db-master drbd] # netstat -tuplna | grep 7789 #檢視已經啟動drbd
tcp 0 0 192.168.0.10:7789 192.168.0.203:33216 ESTABLISHED - tcp 0 0 192.168.0.10:7789 192.168.0.203:44977 |
1
2
3
4
|
[root@db-master drbd] # cat /proc/drbd #檢視drbd狀態,顯示兩個節點預設都處於Secondary狀態
version: 8.4.4 (api:1 /proto :86-101)
GIT- hash : 599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-14 15:33:06
0: cs:Connected ro:Secondary /Secondary ds:Inconsistent /Inconsistent C
|
1
2
3
4
|
[root@db-master drbd] # drbdadm primary mysql #指定本機為主節點
/dev/drbd0 : State change failed: (-2) Need access to UpToDate data #報錯,執行下條命令
[root@db-master drbd] # drbdadm -- --overwrite-data-of-peer primary all
[root@db-backup ~] # drbdadm secondary mysql #本機設定從節點
|
1
2
|
[root@masternfs ~] # drbd-overview
0:mysql /0 Connected Primary /Secondary UpToDate /UpToDate C r-----
|
1
2
3
|
[root@db-master drbd] # mkfs.ext3 /dev/drbd0
[root@db-master drbd] # mkdir /data
[root@db-master drbd] # mount /dev/drbd0 /data/
|
1
|
yum install -y gcc gcc-c++ autoconf libtool pkgconfig glib2-devel libxslt-devel libxml2-devel bzip2 -devel libtool-ltdl-devel libuuid-devel docbook-style-xsl
|
1
2
|
groupadd haclient useradd -g haclient -s /sbin/nologin-Mhacluster
|
1
2
3
4
5
|
tar zxvf Reusable-Cluster-Components-glue--glue-1.0.9. tar .bz2
cd Reusable-Cluster-Components-glue--glue-1.0.9
. /autogen .sh
. /configure
make && make install
|
1
2
3
4
|
tar jxvf Heartbeat-3-0-7e3a82377fa8. tar .bz2
cd Heartbeat-3-0-7e3a82377fa8
. /ConfigureMeconfigure
make && make install
|
1
2
3
4
5
|
tar jxvf ClusterLabs-resource-agents-v3.9.2-0-ge261943. tar .gz
cd ClusterLabs-resource-agents-b735277
. /autogen .sh
. /configure
make && make install
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@db-master ~]# vi /etc/ha.d/ha.cf logfile / var /log/ha-log
logfacility local0 #如果未定義上述日誌,預設寫入/ var /log/message
keepalive 2 #心跳間隔
deadtime 30 #死亡閥值
warntime 10 #警告時間
initdead 120 #首次啟動heartbeat,等待多久才啟動主服務資源
udpport 694 #連線埠
ucast eth1 172.0 . 0.2 #對方IP,採用網路卡的eth1組織心跳,後跟介面IP
auto_failback on #當主節點故障恢復後,自動獲取資源並取代從節點 node master #主節點主機名 node slave #備份節點主機名 ping 192.168 . 0.1 #選擇ping節點,ping的越好對HA叢集越穩定,建議使用閘道器
|
1
2
3
|
[root@db-master ~]# vi /etc/ha.d/authkeys auth 2
2 sha1 HI!
|
1
2
|
[root@db-master ~]# vi /etc/ha.d/haresources db-master IPaddr:: 192.168 . 0.100 / 24 /eth0: 0 drbddisk::mysql Filesystem::/dev/drbd0::/data::ext4 mysqld
|
1
2
3
|
[root@db-master ~] # umount /data
[root@db-master ~] # mkdir /data/test #建立一個測試檔案
[root@db-master ~] # drbdadm secondary r0
|
1
2
3
|
[root@db-master ~] # drbdadm primary r0
[root@db-master ~] # mount /dev/drbd0 /data
[root@db-master ~] # ls /data #檢視test目錄存在
|
相關文章
- MySQL 高可用性之 Keepalived 雙主熱備MySql
- MySQL 高可用性—keepalived+mysql雙主MySql
- MMM實現mysql高可用性薦MySql
- MySQL資料庫的高可用性分析MySql資料庫
- GitHub 的 MySQL 高可用性實踐分享GithubMySql
- MySQL Fabric使用介紹01——高可用性HAMySql
- 【Mysql】MySQL 主主複製 + LVS + Keepalived 實現 MySQL 高可用性MySql
- MySQL on Azure高可用性設計 DRBD - Corosync - Pacemaker - CRM (二)MySqlROS
- MySQL on Azure高可用性設計 DRBD - Corosync - Pacemaker - CRM (一)MySqlROS
- 高效能MySQL.讀書筆記(六)高可用性MySql筆記
- 5、pgpool-II高可用性(一)資料庫的高可用性資料庫
- SQlServer高可用性之資料庫映象篇(2)--安裝SQLServer資料庫
- [轉]使用複製來提升MySQL的高可用性和處理能力MySql
- 理解HDFS高可用性架構架構
- WebSphere 反向投資者: 高可用性(重申)與持續可用性Web
- 使用Consul和ProxySQL實現MySQL HA讀寫分離高可用性MySql
- 資料庫高可用性簡史資料庫
- Timesten學習3(高可用性)
- 選擇高可用性解決方案
- mysql高可用叢集之MMMMySql
- MySQL高可用方案之DRBD+MySQL+RHCS(上)MySql
- MySQL高可用方案之DRBD+MySQL+RHCS(下)MySql
- hadoop之 Hadoop2.2.0中HDFS的高可用性實現原理Hadoop
- 實驗二:SQLserver2005高可用性之—-資料庫映象SQLServer資料庫
- HBase可用性分析與高可用實踐
- SQL Server中的高可用性概覽SQLServer
- MySQL之磁碟I/O過高排查MySql
- 4.1.7.2.3 快速應用程式通知高可用性事件事件
- 雲中SQL Server高可用性最佳實踐SQLServer
- Oracle11g RAC高可用性理論整理Oracle
- 用於高可用性的Event Sourced 架構架構
- RedHat AS 3.0下高可用性叢集配置(轉)Redhat
- MySQL 高可用架構之 MMM 架構MySql架構
- MySQL 實現高可用架構之 MHAMySql架構
- MySQL高可用架構之MHA實踐MySql架構
- MySQL高可用架構之PXC實踐MySql架構
- [AlwaysOn] AlwaysOn可用性組的可用性模式之間的差異模式
- 高可用服務之Keepalived利用指令碼實現服務的可用性檢測指令碼