Mysql主從高可用
阿新 • • 發佈:2020-12-16
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重新整理幾次
④ 如沒問題,至此測試成功