一、準(zhǔn)備工作
創(chuàng)新互聯(lián) - 樂山服務(wù)器托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽服務(wù)器托管,德陽服務(wù)器托管,遂寧服務(wù)器托管,綿陽服務(wù)器托管,四川云主機,成都云主機,西南云主機,樂山服務(wù)器托管,西南服務(wù)器托管,四川/成都大帶寬,大帶寬服務(wù)器,四川老牌IDC服務(wù)商系統(tǒng):Centos6.5
兩臺主機需要相互域名解析
主節(jié)點(Primary Node) 次節(jié)點(Secondary Node) 主機名 ser5.hyzc.com ser6.hyzc.com IP地址 192.168.2.10 192.168.2.11
1.安裝DRBD
參考博客安裝 http://pengjc.blog.51cto.com/9255463/1835186
2.安裝heartbeat與mysql
安裝epel擴展源:
#yum -y install epel-release
兩個機器都安裝heartbeat
#yum -y install heartbeat*
查看heartbeat的配置文件ha.cf
在啟用Heartbeat之前,安裝后要配置三個文件(如沒有可手動建立):ha.cf、haresources、authkeys。這三個配置文件需要在/etc/ha.d目錄下面,但是默認是沒有這三個文件的,可以到官網(wǎng)上下這三個文件,也可以在源碼包里找這三個文件,在源碼目錄下的DOC子目錄里。
查看heartbeat的配置文件ha.cf
[root@ser5 ~]# grep -v "^#" /etc/ha.d/ha.cf
debugfile /var/log/ha-debug #錯誤的日志 logfile /var/log/ha-log #日志 logfacility local0 #這個是設(shè)置heartbeat的日志,這里是用的系統(tǒng)日志 keepalive 2 #心跳的頻率 deadtime 10 #死亡時間,如果其他節(jié)點10s回應(yīng),則認為死亡 warntime 5 #如果死亡之后,5s還沒有連接則把警告信息寫入日志里 initdead 120 #在其他節(jié)點死掉之后,系統(tǒng)啟動前需要等待的時間,一般為deadtime的兩倍 udpport 694 #用udp協(xié)議的694端口通信 ucast eth0 192.168.2.11 #另外一個節(jié)點的ip auto_failback on #設(shè)置當(dāng)死亡節(jié)點恢復(fù)正常之后是否重新啟用;容易發(fā)生數(shù)據(jù)不一致的情況,必須項,不然后面hb_standby命令無法使用; node ser5.hyzc.com #節(jié)點名(通過uname -n查詢) node ser6.hyzc.com #節(jié)點名(通過uname -n查詢) #ping 10.1.88.254 #ping網(wǎng)關(guān)查看網(wǎng)絡(luò)情況(當(dāng)網(wǎng)絡(luò)或者heartbeat失效是使用) respawn hacluster /usr/lib64/heartbeat/ipfail #這里是配置ip綁定和切換的功能, ipfail就是控制ip切換的程序根據(jù)系統(tǒng)64位配置lib64,32位配置為lib auto_failback on # 自動切換(主節(jié)點恢復(fù)后會自動切換回來)2、設(shè)置節(jié)點之間的通信密鑰
[root@ser5 ~]# grep -v "^#" /etc/ha.d/authkeys
auth 1
1 crc
[root@ser5 ~]# chmod 600 authkeys
3、使用heartbeat的haresources來定義資源
[root@ser5 ~]# mkdir /data
[root@ser5 ~]# grep -v "^#" /etc/ha.d/haresources
ser5.hyzc.com IPaddr::192.168.2.15/24/eth0:1 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext4
解釋:
ser5.hyzc.com 主節(jié)點的主機名
IPaddr::192.168.2.15/24/eth0 設(shè)置虛擬IP
drbddisk::r0 管理資源r0
Filesystem::/dev/drbd0::/data::ext4 執(zhí)行umount和mount操作
次節(jié)點操作:
將ha.cf中的192.168.2.11改成192.168.2.10
啟動heartbeat 2.11和2.10機器
# service heartbeat start
從結(jié)果可以看出,VIP已經(jīng)出現(xiàn)
[root@ser5 ha.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:fe:2d:ab brd ff:ff:ff:ff:ff:ff
inet 192.168.2.10/24 brd 192.168.2.255 scope global eth0
inet 192.168.2.15/24 brd 192.168.2.255 scope global secondary eth0:1
inet6 fe80::20c:29ff:fefe:2dab/64 scope link
valid_lft forever preferred_lft forever
停止ser5的heartbeat服務(wù)或?qū)⒕W(wǎng)線斷掉,同時監(jiān)控ser6的DRBD狀態(tài),
ser6操作:
watch -n 1 /etc/init.d/drbd status
如果一切正常,可以看到狀態(tài)在不斷變化。
4) 恢復(fù)ser5的heartbeat服務(wù)或?qū)⒕W(wǎng)線接上,同時監(jiān)控ser6的DRBD狀態(tài),如果正常ser5又變?yōu)橹鞴?jié)點(auto_failback on 決定)了。
mysql的安裝
注:DMYSQL_DATADIR=/data/mysql/data/
mysql數(shù)據(jù)目錄的安裝位置在drbd上面
# mkdir –pv /data/mysql/data/
# chown -R mysql.mysql /data
源碼包安裝(生產(chǎn)環(huán)境使用最新穩(wěn)定版的源碼安裝)
1.先安裝編譯工具cmake
[root@ser5 Desktop]# rpm -qa gcc gcc-c++ make ncurses-devel cmake openssl-devel openss
[root@ser5 Desktop]# yum -y install gcc-c++ ncurses-devel cmake openssl-devel openss
[root@ser5]# tar -zxvf cmake-2.8.10.2.tar.gz
[root@ser5]# cd cmake-2.8.10.2
[root@ser5 cmake-2.8.10.2]# ./bootstrap --prefix=/usr/local/cmake //安裝程序
[root@ser5 cmake-2.8.10.2]#make && make install
[root@ser5 cmake-2.8.10.2]# /usr/local/cmake/bin/cmake --version //驗證是否已安裝
cmake version 2.8.10.2
2.安裝mysql
1)檢查是否安裝mysql,有則執(zhí)行下邊程序
[root@ser5 cmake-2.8.10.2]# rpm -q mysql-server
[root@ser5 cmake-2.8.10.2]# service mysqld stop
[root@ser5 cmake-2.8.10.2]# chkconfig mysqld stop
[root@ser5 cmake-2.8.10.2]# rm -rf /etc/my.cnf
[root@ser5 cmake-2.8.10.2]# rpm -e --nodeps mysql-server
2)添加數(shù)據(jù)庫管理用戶
[root@ser5 cmake-2.8.10.2]# useradd -s /sbin/nologin -M mysql //添加數(shù)據(jù)庫管理用戶
[root@ser5 cmake-2.8.10.2]# grep mysql /etc/passwd
mysql:x:501:501::/home/mysql:/sbin/nologin
3)安裝數(shù)據(jù)庫
[root@ser5 ]# tar -zxvf mysql-5.5.13.tar.gz
[root@ser5 ]# cd mysql-5.5.13
[root@ser5 mysql-5.5.13]#rm -rf /usr/local/mysql/
[root@ser5 mysql-5.5.13]# mv /root/Desktop/mysql.sh . // . 代表當(dāng)前
[root@ser5 mysql-5.5.13]# sh mysql.sh
/usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/data/mysql/data/ -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1注:若有報錯信息,則根據(jù)報錯信息安裝相應(yīng)的安裝包,務(wù)必清除此目錄下的CMakeCache.txt,然后再重新執(zhí)行
[root@ser5 mysql-5.5.13]#make && make install
3.初始化授權(quán)庫
[root@ser5 mysql-5.5.13]# cd /usr/local/mysql/
[root@ser5 mysql]# ls
bin 命令 data 目錄 mysql-test scripts 初始化數(shù)據(jù)庫
[root@ser5 ~]# cd /usr/local/mysql/
[root@ser5 mysql]# chown –R mysql.mysql .
[root@ser5 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data/ //初始化數(shù)據(jù)庫
#cd /data/mysql/data
[root@ser5 data]# ls //查看初始化是否成功performance_schema
mysql performance_schema test
4.創(chuàng)建主配置文件,啟動數(shù)據(jù)庫服務(wù)
[root@ser5 Desktop]# cp lnmp+memcached/mysql-5.5.13/support-files/my-medium.cnf /etc/my.cnf //主配置模板
啟動數(shù)據(jù)庫服務(wù)
[root@ser5 Desktop]# netstat -anptul | grep :3306
[root@ser5 mysql]# cd /usr/local/mysql/bin/
[root@ser5 bin]# ./mysqld_safe --user=mysql --datadir=/data/mysql/data/ &
登錄數(shù)據(jù)庫服務(wù)
[root@ser5 ~]# /usr/local/mysql/bin/mysql -hlocalhost -uroot -p
Enter password:
5.設(shè)置快捷啟動,并在所有終端有效,并設(shè)置數(shù)據(jù)庫密碼
# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin/ //添加命令搜索路徑
export PATH
#source ~/.bash_profile
設(shè)置數(shù)據(jù)庫管理員從本機登錄的密碼 為123
[root@ser5 ~]# mysqladmin -hlocalhost -uroot password "123"
# cat /etc/ld.so.conf
#ldconfig
[root@ser5 ~]# jobs
[root@ser5 ~]# kill -9 %1
[root@ser5 ~]# ./mysqld_safe --user=mysql --datadir=/data/mysql/data/ & //重啟服務(wù)
[root@ser5 ~]# mysql -uroot -p123
mysql>
6.service mysql restart給源碼包寫啟動腳本;設(shè)置為service啟動方式:
[root@ser5 ~]# cd /root/Desktop/lnmp+memcached/mysql-5.5.13/support-files/
# vim mysql.server basedir=/usr/local/mysql/ datadir=/data/mysql/data/[root@ser5 support-files]# cp mysql.server /etc/init.d/mysqld //拷貝腳本
[root@ser5 support-files]# chmod +x /etc/init.d/mysqld //添加執(zhí)行權(quán)限
[root@ser5 support-files]# pkill -9 mysql
[root@ser5 support-files]# service mysqld restart
[root@ser5 support-files]# chkconfig mysqld on
[root@ser5 support-files]# chkconfig --list mysqld
mysqld 服務(wù)支持 chkconfig,但它在任何級別中都沒有被引用(運行“chkconfig --add mysqld”)
[root@ser5 support-files]# chkconfig --add mysqld
[root@ser5 support-files]# chkconfig --list mysqld
mysqld 0:關(guān)閉 1:關(guān)閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關(guān)閉
同樣ser6.hyzc.com也同樣安裝
修改ha.cf
由于現(xiàn)在是管理Mysql,故要將mysqld由heartbeat管理(2個節(jié)點都執(zhí)行)
ser5.hyzc.com IPaddr::192.168.2.15/24/eth0:1 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext4 mysqld
重新啟動heartbeat
# service heartbeat restart
啟動之后,進入mysql,建立數(shù)據(jù)庫db,然后建立表t,插入數(shù)據(jù)
[root@ser5 local]# mysql -uroot -p
啟動之后,進入mysql,建立數(shù)據(jù)庫db,然后建立表t,插入數(shù)據(jù)
[root@ser5 resource.d]# mysql
之后停止heartbeat,查看其它節(jié)點(ser6)里是否有mysql的數(shù)據(jù)
[root@ser5 /]# service heartbeat stop
drbd已經(jīng)變?yōu)閺牧耍琩rbd0已經(jīng)從database里卸載了
[root@ser5 data]# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by root@ser5.hyzc.com, 2016-08-05 02:12:56
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:1308 nr:348 dw:1656 dr:6085 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@ser5 data]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 96G 6.0G 85G 7% /
tmpfs tmpfs 415M 224K 415M 1% /dev/shm
/dev/sda1 ext4 194M 34M 151M 19% /boot
/dev/sr0 iso9660 4.2G 4.2G 0 100% /misc
在ser6里查看drbd是否為主,drbd0是否裝載了database
[root@ser6 Desktop]# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by root@ser5.hyzc.com, 2016-08-05 02:12:56
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:348 nr:1308 dw:1656 dr:6097 al:6 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@ser6 Desktop]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 96G 6.0G 85G 7% /
tmpfs 415M 224K 415M 1% /dev/shm
/dev/sda1 194M 34M 151M 19% /boot
/dev/sr0 4.2G 4.2G 0 100% /misc
/dev/drbd0 20G 203M 19G 2% /data
此時,ser6已經(jīng)變?yōu)橹?,并且drbd0已經(jīng)掛載到了database了
進入mysql里查看db數(shù)據(jù)庫、t表是否已交傳過來
[root@ser6 /]# mysql
mysql已經(jīng)收到了數(shù)據(jù)。這樣我們的drbd+heartbeat+mysql已經(jīng)實現(xiàn)了高可用的mysql數(shù)據(jù)庫了。
遇到的問題:
報錯1:
Aug 14 15:01:46 ser5.hyzc.com heartbeat: [85845]: ERROR: Bad permissions on keyfile [/etc/ha.d//authkeys], 600 recommended.
Aug 14 15:01:46 ser5.hyzc.com heartbeat: [85845]: ERROR: Authentication configuration error.
Aug 14 15:01:46 ser5.hyzc.com heartbeat: [85845]: ERROR: Configuration error, heartbeat not started.
解決方案:
chmod 600 authkeys即可
報錯2
[root@test6 /]# service heartbeat start
logd is already running
Starting High-Availability services:
2012/03/14_21:36:50 INFO: Resource is stopped
[FAILED]
heartbeat[6579]: 2012/03/14_21:36:50 ERROR: Client child command [/usr/lib/heartbeat/ipfail] is not executable
heartbeat[6579]: 2012/03/14_21:36:50 ERROR: Heartbeat not started: configuration error.
heartbeat[6579]: 2012/03/14_21:36:50 ERROR: Configuration error, heartbeat not started.
解決辦法:
如果發(fā)生這個問題,先查看你的系統(tǒng)是32還是64位的,如果是64位的,則在ha.cf
里respawn hacluster /usr/lib/heartbeat/ipfail吧這個lib改成lib64;32位的不變。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章名稱:Drbd+Heartbeat+Mysql主從高可用-創(chuàng)新互聯(lián)
分享URL:http://jinyejixie.com/article34/dpeese.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、營銷型網(wǎng)站建設(shè)、網(wǎng)站收錄、網(wǎng)站排名、虛擬主機、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容