1. 程式人生 > 其它 >Mysql主從高可用

Mysql主從高可用

技術標籤:linuxmysql

Mysql主從高可用

伺服器角色
192.168.1.10
192.168.1.20
keepalived----vip

環境準備

Keepalived-2.0.13.tar.gz
mysql-5.5.56-linux-glibc2.5-x86_64.tar.gz 

依賴安裝

yum -y install kernel-devel openssl-devel popt-devel
yum install -y libaio
注:此部署中的高可用採用原始碼部署

部署(主從伺服器同步部署操作)

使用者是否建立
  建立使用者
  groupadd mysql
  useradd -
r -g mysql mysql 1、解壓安裝 tar -zxf mysql-5.5.56-linux-glibc2.5-x86_64.tar.gz mv mysql-5.5.56-linux-glibc2.5-x86_64/ mysql chown -R mysql:mysql mysql chmod 777 /root/ 2、初始化資料庫 ./scripts/mysql_install_db --basedir=/root/mysql --datadir=/root/mysql/data/ --user=mysql 3、拷貝配置檔案 cp support-
files/my-medium.cnf /etc/my.cnf 4、修改配置檔案 在port埠下新增一段引數 log-error=/root/mysql/data/mysqld.error 5、拷貝啟動程式 cp support-files/mysql.server /etc/init.d/mysql 6、配置啟動目錄 sed -i 's#/usr/local/mysql#/root/mysql#g' /etc/init.d/mysql 7、命令建立軟連線 ln -s /root/mysql/bin/* /usr/local/sbin 8、建立登入密碼 /etc/init.d/mysql start
mysqladmin -u'root' password'123456' 9、如想修改密碼,可登入資料庫,修改密碼 set password=password("dataexa"); grant all privileges on *.* to 'root'@'%' identified by 'dataexa'; flush privileges; 10、建立新使用者 CREATE USER 'bigdata'@'%' IDENTIFIED BY '密碼'; grant all privileges on *.* to [email protected]'%' identified by '密碼' flush privileges;

主從配置
1、主伺服器my.cnf檔案修改
例下圖
在這裡插入圖片描述

1、從伺服器my.cnf檔案配置
例下圖
在這裡插入圖片描述

2、重啟主從節點的my.cnf檔案

 /etc/init.d/mysql restart

3、從節點進入到資料庫中指定主從關係

CHANGE MASTER TO MASTER_HOST='IP',MASTER_USER='主從複製賬戶',MASTER_PASSWORD='密碼',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=107;

4、從伺服器指定之後開啟主從複製

 Start slave;
 show slave status\G;

檢視狀態是否都為YES-例下圖
在這裡插入圖片描述
高可用部署

1、解壓編譯 
   tar zxf Keepalived-2.0.13.tar.gz
   cd keepalived-2.0.13
   ./configure
   make && make install
2、拷貝相關啟動檔案和配置檔案
    cp keepalived/etc/keepalived/keepalived.conf /etc/keepalived/  
    cp keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived 
    cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
    chkconfig --add keepalived
3、編輯conf檔案
主服務配置:
vim /etc/keepalived/keepalived.conf
#! Configuration File for keepalived
global_defs {
router_id shbdp-net02-3     #------主機id
}
vrrp_instance VI_1 {
state BACKUP               
interface eth0             #-------網絡卡名稱,可ip  addr檢視
virtual_router_id 60
priority 100               #------主的比從大
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.22                   #--------注意修改為自己網段的vip
}
}

從伺服器配置
vim /etc/keepalived/keepalived.conf
#! Configuration File for keepalived
global_defs {
router_id shbdp-net02-3
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 60
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.22
}
}

4、主從啟動keepalived服務(先主後從的順序)
   service keepalived start
5、ip addr 檢視主服務是否產生自定義設定的虛擬ip
6、產生虛擬ip之後,我們測試一下service keepalived stop停掉主節點的keepalived服務,並ip addr 檢視虛擬ip是否到從伺服器上。
7、測試成功之後,我們還原狀態
① 停掉從keepalived服務 service keepalived stop 
② 啟動主伺服器keepalived服務 service keepalived start
③ 主伺服器檢視虛擬ip回來了,再啟動從keepalived服務 service keepalived start

8、新增檢測mysql狀態模組指令碼
注:以下配置的ip以及埠根據實際情況進行更改
主伺服器操作
Vim /etc/keepalived/keepalived.conf
virtual_server 192.168.1.22 3306 {     #虛擬IP+埠
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.10 3306 {     #-----本機IP+埠
weight 1
notify_down /opt/mysql.sh         #------指令碼路徑
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
connect_port 3306                 #----埠
}
}
}

從伺服器新增
vim /etc/keepalived/keepalived.conf
virtual_server 192.168.1.22 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.20 3306 {
weight 1
notify_down /opt/mysql.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
connect_port 3306
}
}
}

主從伺服器的opt下的指令碼如下
cd /opt/
vim mysql.sh
#!/bin/bash
pkill keepalived

Chmod +x mysql.sh

9、主從keepalived重啟(先主後從順序)
   service keepalived restart
10、測試主mysql宕機之後的主從切換
① pkill mysql  殺掉主伺服器的mysql 測試
② 殺掉之後 主伺服器ip addr檢視 生成的虛擬ip是否消失,可多ip addr 重新整理幾次
③ 主伺服器的虛擬ip消失之後,進入到從伺服器進行ip addr檢視虛擬ip是否漂移到從從伺服器,多ip addr重新整理幾次
④ 如沒問題,至此測試成功