1. 程式人生 > >MySQL之——基於Keepalived實現雙機HA

MySQL之——基於Keepalived實現雙機HA

1、環境描述:

    OS:CentOS6.5_X64
    MASTER:192.168.0.202
    BACKUP:192.168.0.203
    VIP:192.168.0.204

2、配置兩臺Mysql主主同步

關於MySQL的安裝大家也可以參考《 MySQL之——CentOS6.5 編譯安裝MySQL5.6.16 》,主主同步在主從同步的基礎上將從伺服器配置為之前主伺服器的Master,相當於在原來主從同步的基礎上,將原來的Slave設定為了原來Master的Master,大家也可以參考《MySQL之——MS主從複製(讀寫分離)實現》 ,設定A為B的Master,B為A的Slave後,然後再將B設定為A的Master,A設定為B的Slave。

[[email protected] ~]# yum install mysql-server mysql -y
[[email protected] ~]# service mysqld start
[[email protected] ~]# mysqladmin -u root proot
[[email protected] ~]# vi /etc/my.cnf  #開啟二進位制日誌,設定id
[mysqld]
server-id = 1                    #backup這臺設定2
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema       #忽略寫入binlog日誌的庫
auto-increment-increment = 2             #欄位變化增量值
auto-increment-offset = 1              #初始欄位ID為1
slave-skip-errors = all                       #忽略所有複製產生的錯誤     
[
[email protected]
~]# service mysqld restart
#先檢視下log bin日誌和pos值位置

master配置如下:

[[email protected] master ~]# mysql -u root -proot
mysql> GRANT  REPLICATION SLAVE ON *.* TO 'replication'@'192.168.0.%' IDENTIFIED  BY 'replication';
mysql> flush  privileges;
mysql> change  master to
    ->  master_host='192.168.0.203',
    ->  master_user='replication',
    ->  master_password='replication',
    ->  master_log_file='mysql-bin.000002',
    ->  master_log_pos=106;  #對端狀態顯示的值
mysql> start  slave;         #啟動同步
backup配置如下:
[[email protected] ~]#  mysql -u root -proot
mysql> GRANT  REPLICATION SLAVE ON *.* TO 'replication'@'192.168.0.%' IDENTIFIED  BY 'replication';
mysql> flush  privileges;
mysql> change  master to
    ->  master_host='192.168.0.202',
    ->  master_user='replication',
    ->  master_password='replication',
    ->  master_log_file='mysql-bin.000002',
    ->  master_log_pos=106;
mysql> start  slave;
#主主同步配置完畢,檢視同步狀態Slave_IO和Slave_SQL是YES說明主主同步成功。

在master插入資料測試下:


在backup檢視是否同步成功:


可以看到已經成功同步過去,同樣在backup插入到user表資料,一樣同步過去,雙主就做成功了。

3、配置keepalived實現熱備

[[email protected] ~]# yum install -y pcre-devel openssl-devel popt-devel #安裝依賴包 
[[email protected] ~]# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
[[email protected] ~]# tar zxvf keepalived-1.2.7.tar.gz
[[email protected] ~]# cd keepalived-1.2.7
[[email protected] ~]#./configure --prefix=/usr/local/keepalived
make
#將keepalived配置成系統服務
[[email protected] ~]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[[email protected] ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[[email protected] ~]# mkdir /etc/keepalived/
[[email protected] ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[[email protected] ~]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[[email protected] ~]# vi /etc/keepalived/keepalived.conf
! Configuration File forkeepalived
global_defs {
notification_email {
[email protected]
 }
notification_email_from  [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_HA      #標識,雙主相同
 }
vrrp_instance VI_1 {
 state BACKUP           #兩臺都設定BACKUP
 interface eth0
 virtual_router_id 51       #主備相同
 priority 100           #優先順序,backup設定90
 advert_int 1
 nopreempt             #不主動搶佔資源,只在master這臺優先順序高的設定,backup不設定
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.0.204
 }
}
virtual_server 192.168.0.204 3306 {
 delay_loop 2
 #lb_algo rr              #LVS演算法,用不到,我們就關閉了
 #lb_kind DR              #LVS模式,如果不關閉,備用伺服器不能通過VIP連線主MySQL
 persistence_timeout 50  #同一IP的連線60秒內被分配到同一臺真實伺服器
 protocol TCP
 real_server 192.168.0.202 3306 {   #檢測本地mysql,backup也要寫檢測本地mysql
 weight 3
 notify_down /usr/local/keepalived/mysql.sh    #當mysq服down時,執行此指令碼,殺死keepalived實現切換
 TCP_CHECK {
 connect_timeout 3    #連線超時
 nb_get_retry 3       #重試次數
 delay_before_retry 3 #重試間隔時間
  }
}
[[email protected] ~]# vi /usr/local/keepalived/mysql.sh
#!/bin/bash
pkill keepalived
[[email protected] ~]# chmod +x /usr/local/keepalived/mysql.sh
[[email protected] ~]# /etc/init.d/keepalived start
#backup伺服器只修改priority為90、nopreempt不設定、real_server設定本地IP。

#授權兩臺Mysql伺服器允許root遠端登入,用於在其他伺服器登陸測試!
mysql> grant all on *.* to'root'@'192.168.0.%' identified by 'root';
mysql> flush privileges;

4、測試高可用性

1)通過Mysql客戶端通過VIP連線,看是否連線成功。
2)停止master這臺mysql服務,是否能正常切換過去,可通過ip addr命令來檢視VIP在哪臺伺服器上。
3)可通過檢視/var/log/messges日誌,看出主備切換過程
4)master伺服器故障恢復後,是否主動搶佔資源,成為活動伺服器。
注意:服務啟動的順序:先啟動MySQL,後啟動Keepalived。

相關推薦

MySQL——基於Keepalived實現HA

1、環境描述:     OS:CentOS6.5_X64     MASTER:192.168.0.202     BACKUP:192.168.0.203     VIP:192.168.0.204 2、配置兩臺Mysql主主同步 關於MySQL的安裝大家也可以參考《 

keepalived實現熱備

lin fire per 安裝 arp index 正常 綁定 type   keepalived的作用是檢測後端TCP服務的狀態,如果有一臺提供TCP服務的後端節點死機,或者工作出現故障,keepalived會及時檢測到,並將有故障的節點從系統中剔除,當提供TCP服務的節

使用keepalived實現熱備

figure 設置 dha boa message mtu hat 並不是 pid 通常說的雙機熱備是指兩臺機器都在運行,但並不是兩臺機器都同時在提供服務。當提供服務的一臺出現故障的時候,另外一臺會馬上自動接管並且提供服務,而且切換的時間非常短。下面來以keepalived

MySQL——基於Amoeba實現讀寫分離

今天,我們繼續MySQL的話題,今天為大家帶來一篇基於Amoeba實現MySQL讀寫分離的方案文章,好我們直接進入今天的正題吧。 一、伺服器規劃 主機名 IP地址 節點 liuyazhuang152 192.168.0.152 amoeba liuyazhuang153

Mycat+Mysql主從復制實現熱備

偏移 官方 搭建 jdk1 stat 普通用戶 系統 sch 支持 Mycat+Mysql主從復制實現雙機熱備 一、mysql主從配置原理 雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持

Nginx+keepalived熱備,實現負載均衡(主主模式)

nginx keepalive Keepalived: 簡介:Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepali

解決Nginx + Keepalived主從熱備+自動切換,實現負載均衡及高可用

解決Nginx + Keepalived主從雙機熱備+自動切換,實現負載均衡及高可用 IP 伺服器 服務 192.168.1.10 lb-node1 Nginx、kee

Mysql + keepalived 實現主熱備讀寫分離

架構圖 系統:CentOS6.4_X86_64 軟體版本:Mysql-5.6.12,Keepalived-1.2.7 環境簡介: 1.Master-A 192.168.1.168 (Mysql+Keepalived) 2.Ma

JAVA氣泡排序—實現色球選小程式

紅球6位:1~33 中不重複的遞增陣列 ,籃球1位:1~16   廢話不多說,上程式碼 pojo package pojo; public class Lottery {public int red;public int blue;public int startRed

Linux HA的功能實現

基於heartbeat方式 HeartBeat運行於備用主機上的Heartbeat可以通過乙太網連線檢測主伺服器的執行狀態,一旦其無法檢測到主伺服器的“心跳”則自 動接管主伺服器的資源。通常情況下,主、備伺服器間的心跳連線是一個獨立的物理連線,這個連線可以是序列線纜、一個

mysql的主從備份和互備實現

雙機互備和熱備的區別:        互備所指的是backup,保證資料的完整性而做的備份。主要目的是防止資料丟失。       熱備是為了保證應用的連續性。利用故障轉移的方法實現。     Linux下實現的雙機互備:  主從備份: 1、設定同步Master 修改

搭建MySql資料庫的主從及實現熱備(資料庫的高可用)

1. 用的CentOS7,因為CentOS7自帶mariadb,所以首先解除安裝mariadb.不解除安裝安裝mysql會有衝突,以前安裝過mysql也要解除安裝 2. 解除安裝mariadb                     執行命令(會列出所有的mariad

keepalived + rsync +inotify-tools實現熱備

## 1.需求 實現資料交換系統的主備自動切換功能,當資料交換的master主機故障,網路故障以及資料交換mysql服務出現故障時,能自動切換到備機執行。 ## 2.實現思路 採用keepalived+rsync+ inotify雙backup模式,並設定不搶佔資源。當ma

keepalived+nginx熱備+負載均衡

ethernet auth 超時任務 collision boot .rpm ocl bnl host keepalived+nginx雙機熱備+負載均衡最近因業務擴展,需要將當前的apache 轉為nginx(web), 再在web前端放置nginx(負載均衡)。同時結合

實驗:基於keepalived實現兩臺realserver服務器中的nginx和php-fpm服務互為主從

基於keepalived實現nginx和php-fpm互為主從 基於keepalived實現兩臺realserver服務器中的nginx和php-fpm服務互為主從 思路:利用兩個VIP,一個定位nginx,一個定位php-fpm步驟:1、準備兩臺基於LNMP架構的服務器(能夠提供正常的web服務)2、在ng

基於keepalived實現多種模式的高可用集群網站架構

keepalived 一、 實現主從服務器高可用技術。 大概網絡拓撲圖: 前提準備條件: 準備四臺機器,一臺為keepalived的master,一臺為keepalived的backup,一臺為rs1,一臺為rs2,同時都關閉防火墻和selinux。 ①安裝包。 yum install kee

Linux學習總結(五十四)keepalived+lvs 熱備負載均衡架構

DR LVS keepalived+lvs 一 LVS IP tunnel 模式介紹 IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術,這可以使得目標為一個IP地址的數據報文能被封裝和轉發到另一個IP地址。IP隧道技術亦稱為IP封裝技術(IP encapsulatio

.NET Core微服務基於Consul實現服務治理

請求轉發 1.0 asp.net AC port prefix 我們 tle nan 一、Consul基礎介紹   Consul是HashiCorp公司推出的開源工具,用於實現分布式系統的服務發現與配置。與其他分布式服務註冊與發現的方案,比如 Airbnb的Smart

MySQLMHA+keepalived方案演示(一)

keygen centos6.5 out too send 停止 keepaliv o_direct failover 整個MHA集群環境搭建過程演示 一. 實驗環境說明 安裝MHA操作步驟MHA節點包含三個腳本,依賴perl模塊。save_binary_logs:保

MySQLMHA+keepalived方案演示(二)

file diff bin-log 問題 glob user 文件系統 ply repo 一、配置MHA工作環境 192.168.2.130機器操作:1.1.創建MHA的工作目錄,並且創建相關配置文件(在軟件包解壓後的目錄裏面有樣例配置文件)。指的是可以下載 mha4mys