mysql高可用實現

 

 
說明: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 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章