1、 概況mysql
2、 相關理論linux
3、 架構拓撲web
4、 資源規劃sql
5、 實施部署數據庫
5.1初始化配置編程
5.2 Mysql主從同步配置vim
5.3 配置keepalived實現熱備緩存
5.3.1 Keepalived的安裝安全
5.3.2 Keepalived的配置bash
5.3.3 監測腳本
6、 測試
6.1 測試主從同步
6.2 高可用測試
7、注意事項
7.1 LVS安裝注意事項
7.2 將相關開機自啓服務
1、概況
關於MySQL-HA,目前存在多種解決方案,例如如heartbeat、drbd、mmm、共享存儲,可是它們各有優缺點。heartbeat、drbd配置較爲複雜,須要本身寫腳本才能實現MySQL自動切換,腳步編寫對應無編程功底的人來講存在很大的難度;對於mmm,生產環境中不多有人用,且mmm 管理端須要單獨運行一臺服務器上,要是想實現高可用,就得對mmm管理端作HA,這樣無疑又增長了硬件開支;對於共享存儲,MySQL數據仍是放在本地較爲安全,存儲設備畢竟存在單點隱患。使用MySQL雙master+keepalived是一種很是好的解決方案,在MySQL-HA環境中,MySQL互爲主從關係,這樣就保證了兩臺MySQL數據的一致性,而後用keepalived實現虛擬IP,經過keepalived自帶的服務監控功能來實現MySQL障時自動切換。
2、相關理論
keepalived:顧名思義是保持存活,經常使用來搭建設備的高可用,防止業務核心設備出現單點故障。keepalived基於VRRP協議來實現高可用,主要用做realserver的健康檢查以及負載均衡主機和backup主機之間的故障漂移。若是將TCP/IP劃分爲5層,則Keepalived就是一個相似於3~5層交換機制的軟件,具備3~5層交換功能,其主要做用是檢測web服務器的狀態,若是某臺web服務器故障,Keepalived將檢測到並將其從系統中剔除,當該web服務器工做正常後Keepalived自動將其加入到服務器羣中,這些工做所有自動完成,而不須要人工干預,只須要人工修復故障的web服務器便可。
三層機理是發送ICMP數據包即PING給某臺服務器,若是不通,則認爲其故障,並從服務器羣中剔除;四層機理是檢測TCP端口號狀態來判斷某臺服務器是否故障,若是檢測端口存在異常,則從服務器羣中剔除;五層機理是根據用戶的設定檢查某個服務器應用程序是否正常運行,若是不正常,則從服務器羣中剔除。
3、架構拓撲
4、資源規劃
主機名稱 |
內網IP |
操做系統 |
SQL-Master |
10.10.10.11 |
Centos 6.5 64位 |
SQL-Backup |
10.10.10.12 |
Centos 6.5 64位 |
VIP |
10.10.10.50 |
\ |
5、實施部署
5.1初始化配置
l getenforce 0關閉SeLinux
l 修改主機名
l 防火牆開放22/3306端口
l 測試網絡連通性
l 更新YUM源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo yum makecache #生成緩存
5.2Mysql主從同步配置
yum install mysql-server mysql -y chkconfig mysqld on service mysqld start mysqladmin -u root password 51idc
主從均須要修改my.cnf
Mysql-Master的配置文件以下
vim /etc/my.cnf
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql server-id=1 #mysql-M的id爲1,mysql-B的id爲2 binlog-do-db=anchnet #須要同步是數據庫 binlog-ignore-db=mysql #不須要同步的數據庫 replicate-do-db=anchnet #須要記錄日誌的數據庫 replicate-ignore-db=mysql,information_schema log-bin=mysql-bin log-slave-updates sync_binlog=1 auto_increment_offset=1 #自增字段的起始值,mysql-M爲1, auto_increment_increment=2 slave-skip-errors=all log_bin_trust_function_creators=1 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
Mysql-Backup須要須要一下,其他與主保持一致
server-id=2
auto_increment_offset=2
查看此時查看mysql-Master與mysql-Backup的File與Position值
Mysql-Master配置以下:
service mysqld restart mysql -uroot -p51idc use mysql; insert into mysql.user(Host,User,Password) values("localhost","51idc",password("51idc")); grant replication slave on *.* to '51idc'@'10.10.10.12' identified by '51idc'; change master to master_host='10.10.10.12', master_user='51idc', master_password='51idc', master_log_file='mysql-bin.000003', master_log_pos=106; start slave;
Mysql-Backup配置以下:
service mysqld restart mysql -uroot -p51idc use mysql; insert into mysql.user(Host,User,Password) values("localhost","51idc",password("51idc")); grant replication slave on *.* to '51idc'@'10.10.10.11' identified by '51idc'; change master to master_host='10.10.10.11', master_user='51idc', master_password='51idc', master_log_file='mysql-bin.000003', master_log_pos=106; start slave;
查看結果
5.3 配置keepalived實現熱備
5.3.1 Keepalived的安裝
在master與backup上面均須要配置
安裝開發組環境工具
yum groupinstall "Development tools" -y
安裝相應軟件包
yum install openssl-devel popt-devel -y ln -s /usr/src/kernels/2.6.32-642.1.1.el6.x86_64 /usr/src/linux #此處要根據實際操做系統最高版本的kernel 爲準
若是/usr/src/kernels/下面沒文件使用yum 安裝 kernel-devel
#下載keepalive
wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz tar zxvf keepalived-1.2.24.tar.gz cd keepalived-1.2.24 ./configure --with-kernel-dir=/usr/src/kernels/2.6.32-642.1.1.el6.x86_64
(注意這個步驟要看到如下字樣纔是正常的)
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
make && make install cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/sbin/keepalived /usr/sbin/ chkconfig --add keepalived chkconfig --level 2345 keepalived on /etc/init.d/keepalived start
至此keepalive就已經安裝完畢。
5.3.2 Keepalived的配置
vim /etc/keepalived
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script chk_mysql_port { script "/usr/mysql_check.sh" #檢測腳本 interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP #mysql-M與mysql-B保持均爲BACKUP interface eth1 #網卡接口 virtual_router_id 77 #router id保持一直 priority 100 #優先級,mysql-B數值小於100 advert_int 1 authentication { auth_type PASS auth_pass 51idc } track_script { chk_mysql_port } virtual_ipaddress { 10.10.10.50 #VIP地址 } } Mysql-B配置修改優先級便可 priority 90 Service keepalived restart
測試VIP連通性
5.3.2 Keepalived的配置
vim /usr/mysql_check.sh
#!/bin/sh PATH=/usr/sbin:/usr/bin:$PATH export PATH STAT=`netstat -ant|grep LISTEN|egrep "0.0.0.0:3306"|wc -l` if [ $STAT -eq 0 ];then /etc/init.d/keepalived stop exit fi
6、測試
6.1 測試主從同步
主服務器建立數據庫
查看slave
測試主從同步已經成功。
6.2 高可用測試
中止mysql-M的keepalived
查看VIP:10.10.10.50已經遷移至mysql-B
7、注意事項
7.1 LVS安裝注意事項
ln -s /usr/src/kernels/2.6.32-642.1.1.el6.x86_64 /usr/src/linux #此處要根據實際操做系統最高版本的kernel 爲準
./configure --with-kernel-dir=/usr/src/kernels/2.6.32-642.1.1.el6.x86_64
(注意這個步驟要看到如下字樣纔是正常的)
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
7.2 將相關開機自啓服務
開機自啓服務
chkconfig mysqld on chkconfig keepalived on
開機自啓腳本