說明:mysql高可用集羣方案設計
server1 mysqld服務器 172.16.23.11
server2 mysqld服務器 172.16.23.12
數據存放 nfs 服務器 172.16.23.6
server1,2爲了實現高可用,需要一個共享存儲,這裏用一個nfs服務器提供,nfs服務器上新建一個邏輯卷,把它掛載在/mydata目錄下,這樣方便mysql數據的存儲。nfs只需把這個目錄以讀寫方式共享給server1,2,且三臺服務器都有同一個mysql用戶,mysql組,且id號都一樣。這樣mysql服務器上只需掛載這個目錄到本地,那麼就可以共享數據。這篇博客與上一篇共同實現!
一、nfs服務器配置
1、新建分區,並掛載到/mydata下
fdisk /dev/sda
新建一個20G的分區,8e邏卷
partprob /dev/sda
pvcreate /dev/sda5
vgcreate myvg /dev/sda5
lvcreate -L 10G -n mydata myvg
mke2fs -j -L MYDATA /dev/myvg/mydata //格式化
mkdir /mydata
vim /etc/fstab //實現開機自動掛載
LABLE=MYDATA /mydata ext3 default 0 0
mount -a //讀取文件,進行掛載
mount //查看是否掛載
groupadd -g 355 -r mysql
useradd -g mysql -r -u 355 -s /sbin/nologin mysql
id mysql
chown -R mysql:mysql /mydata
2、啓動nfs服務器,並導出文件系統
vim /etc/exports 添加如下一行
mydata 172.16.23.11(rw,no_root_squash) 172.16.23.12(rw,no_root_squash)
service nfs start
rpcinfo -p localhost 查看是否啓動
chkconfig nfs on 開機自動啓動
showmount -e localhost 查看共享給誰
二、mysql服務器設置 server1,server2一樣
(1)保證三臺服務器時間同步
(2)增加用戶:
groupadd -g 355 -r mysql
useradd -g mysql -r -u 355 mysql
(3)掛載文件系統,
mkdir /mydata
mount -t nfs 172.16.23.6:/mydata /mydata
su - mysql
touch aa 測試是否有寫權限
mkdir /mydata/data //屬於mydata用戶、組,這樣mysql數據才能寫入
(4) 下載安裝mysql lftp 172.16.0.1/pub/Sources/mysql-5.5 mysql-5.5.22
tar xf mysql-5.5.22..... -C /usr/local
ln -sv mysql-5.5.22... mysql
cd mysql
chown -R msyql:mysql .
scripts/mysql_install_db --user=mysql --datadir=/mydata/data 重要
cp support-files/my-large.cnf /etc/my.cnf
vim /etc/my.cnf 添加一行datadir=/mydata/data
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --list mysqld
chkconfig mysqld off //不能開機自動啓動,服務器集羣
(5)server2安裝mysql跟server1基本一樣
server2不需要初始化,因爲/mydata已經有元數據了。
hostname 要設置,date要一致
(6)由於前面已經配置了Corosync+Pacemaker高可用集羣,
這裏只需保證以下配置
crm configure property stonith-enabled=false //由於沒stonith設備,啓用會報錯,這裏禁用
crm configure no-quorum-policy=ignore //由於這裏是兩臺服務羣集,不需要quorum,ignore表示一臺故障,另一臺仍能用
crm configrue rsc_defaults resource-stickiness=100 設置默認資源粘性值,表示一臺故障時,再次啓動服務時是否會再轉移回來,正值表示更願留在當前服務器上
查看資源屬性: crm(live)ra# meta ocf:heartbeat:IPaddr
primitive myip ocf:heartbeat:IPaddr params ip="172.16.23.6" 添加一條基本資源
show
commit 提效crm configure property no-quorum-policy=ignore
(7)給nfs服務器上的/mydata目錄定義爲高可用資源
umount /mydata 兩服務器都需卸載,只有active的服務器才能訪問數據
#crm ra list ocf heartbeat 有一個Filesystem代理腳本
crm ra meta ocf:heartbeat:Filesystem 查看這個腳本里的參數,方便我們設置
定義資源:
crm(live)configure# primitive mynfs ocf:heartbeat:Filesystem params device="172.16.23.6:/mydata" directory="/mydata" fstype="nfs" op start timeout=60s op stop timeout=60s
設備爲nfs那臺服務器上共享的目錄,目錄爲當前主機掛載的目錄,類型爲nfs類型 op 選項裏面的值最好大於腳本文件只定義的最小值,否則會報錯
commit 提交
crm status 查看掛載到那個主機上,在那個主機上查看 ls /mydata 如果在server1上
讓server1變爲被動,查看內容
crm node standby
crm node online
(8)、添加mysqld服務,nfs與mysqld應在同一個主機上,且nfs先於mysqld掛載
crm(live)configure# primitive mysqld lsb:mysqld 添加mysql服務
crm(live)configure# colocation mysqld_and-mynfs inf: mysqld mynfs myip 排列約束,mysqld與nfs一定要在一起(如果錯可delete)
crm(live)configure# order mysqld_after_mynfs mandatory:mynfs mysqld:start //mysqld啓動必須晚於nfs
crm(live)configure# show xml
crm(live)configure# order mysql_after_myip mandatory: myip mysqld //ip地址早於mysqld啓動
commit
[定義組 group web WebIP mynfs]
crm status 看那臺服務器上
(9)、驗證測試
/usr/local/mysql/bin/mysql
創建遠程連接的用戶:
grant all on *.* to root@'172.16.%.%' identified by '12345'
flush privileges;
172.16.23.9這臺客戶端連接測試
mysql -uroot -h172.16.23.6 -p12345
創建數據庫測試
(10)、模擬正在工作的mysql服務器故障
crm node standby
crm status
172.16.23.9這臺客戶端連接測試
mysql -uroot -h172.16.23.6 -p12345
創建數據庫測試
(11)、查看當前系統支持stonith設備
stonith -L
man stonith
stonith -t meatware -n