1. 程式人生 > >Linux下keepalived+Mysql主主同步實現資料庫高可用實踐

Linux下keepalived+Mysql主主同步實現資料庫高可用實踐

1):編輯mysql配置檔案/etc/my.cnf,選定主主同步的資料庫

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

log-bin=binlog

binlog_format=mixed

server_id=1//主備兩臺mysql的server_id須不同

binlog-do-db=render

replicate-do-db=render

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

2):操作主資料庫,"show master status"後記錄下其file和position
grant replication slave on *.* to 'slave'@'192.168.1.90' identified by '123456';

flush privileges;

show master status;

3):操作從資料庫,如果show slave status正常,則主從同步機制建立。同時也在從資料庫上開啟master,以便主資料庫也能從從資料庫同步資料
change master to master_host='192.168.1.33',master_user='slave',master_password='123456',master_port=3306,master_log_file='binlog.000001',master_log_pos=207017;

start slave;

show slave status;

grant replication slave on *.* to 'slave'@'192.168.1.33' identified by '123456';

flush privileges;

show master status;
4):操作主資料庫,如果show slave status正常,則主主同步機制建立完成。
master-mysql:

change master to master_host='192.168.1.90',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000014',master_log_pos=2461;

start slave;

show slave status;

5):資料庫主主機制建立後,還需要在兩臺機器上都安裝keepalived,以便向外提供一個VIP,當某臺機器掛的時候,不影響資料庫的使用。

a)需要安裝ipvsadm和keepalived:yum install ipvsadm;yum install keepalived;

b)編輯/etc/keepalived/keepalived.conf。

global_defs {

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   notification_email_from [email protected]

   smtp_server 192.168.1.33

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

vrrp_script chk_mysqld{

   script "/etc/keepalived/mysql.sh"

   interval 3

   weight -20

}

vrrp_instance VI_1 {

    state MASTER//主備不同

    interface eth1

    virtual_router_id 51

    priority 100//主備不同,備的比主的要小

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.13

    }

}

 

virtual_server 192.168.1.13 3306 {

    delay_loop 2

    lb_algo rr

    lb_kind DR

    persistence_timeout 60

    protocol TCP

    real_server 192.168.1.90 3306{//主備兩臺機器的實IP不同

        weight 3

        notify_down /etc/keepalived/mysql.sh

        TCP_CHECK{

            connect_timeout 3

            nb_get_retry 3

            connect_port 3306

        }

    }

}

c)編輯/etc/keepalived/mysql.sh。keepalived會定時啟動mysql.sh指令碼檢查資料庫狀態,當資料庫異常時,殺死當前機器的keepalived,VIP將被另一臺資料庫機器繫結,從而實現資料庫的高可用,平滑切換。
#!/bin/bash

MYSQL_OK=1

function check_mysql_helth (){

    mysql  -e "show status;" &>/dev/null

    if [ $? = 0 ] ;then

    MYSQL_OK=1         

    else       

    MYSQL_OK=0         

    fi                         

    return $MYSQL_OK           

}

while [ $CHECK_TIME -ne 0 ]

do

    let "CHECK_TIME -= 1"

    check_mysql_helth

if [ $MYSQL_OK = 1 ] ; then

    echo "mysql ok\n"

    CHECK_TIME=0

    exit 0

fi

if [ $MYSQL_OK -eq 0 ] &&  [ $CHECK_TIME -eq 0 ]

then

    pkill keepalived

    exit 1

fi

sleep 1

done

d)啟動keepalived:/usr/sbin/keepalived -D。使用VIP(這裡是192.168.1.13)連線資料庫即可。


相關推薦

Linuxkeepalived+Mysql同步實現資料庫可用實踐

1):編輯mysql配置檔案/etc/my.cnf,選定主主同步的資料庫 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 lo

使用Keepalived配置主從熱備實現Nginx可用(HA)

_id keep 過去 基礎 inter icmp interval RR 轉發 Keepalived 簡要介紹 Keepalived 是一種高性能的服務器高可用或熱備解決方案,Keepalived 可以用來防止服務器單點故障的發生,通過配合 Nginx 可以實現 w

MySQL分散式資料庫可用實踐:架構、複製機制、多機房

大家好!我是網易資料運維工程師杜明友,大家可以叫我老杜。首先介紹一下網易雲,是網易集團旗下雲端計算和大資料品牌,本文要深入分析的案例是網易雲旗下的即時通訊雲平臺業務,開發者通過整合客戶端SDK和雲端OPEN API,即可快速實現強大的IM功能,作為PaaS服務模式的網易雲信全面支援Android、iOS、We

inotify+rsync+mysql復制+keepalived實現zabbix可用

lease 包含 ati weight ebp nag fig 數據信息 replicat 思路:主備機通過inotify+rsync實現文件同步,通過mysql主主復制實現數據同步,同一時刻只有一臺服務器能對外提供zabbix服務,web端登陸虛ip訪問,被監控主機通過配

keepalived+mysql

keepalived+mysql雙主keepalived+mysql雙主原理:(1)主庫1上的keepalived啟動之後,會檢查mysql服務是否活著,如果活著,keepalived進入master狀態,獲得VIP;(2)主庫2上的keepalived啟動之後,也會檢查mysql是否活著,然後檢查keepa

keepalived模式實現nginx可用及LNAMMP架構

keepalived nginx lnammpkeepalived雙主模式實現nginx高可用及LNAMMP架構一、利用keepalived實現nginx調度器高可用;二、構建LNAMMP架構: 1) Nginx既是前端調度器,又是緩存服務器; 2) 將php的session緩存於memcached中;

Memcached 復制+ Keepalived 實現 Memcached 可用架構集群

作用 代理 應用 進行 rep 高可用性 val gen backup Memcached +keepalived 高可用集群 Memcached 主主復制這種架構,在程序連接時不知道應該連接哪個主服務器,所以需要在前端增加 VIP 地址,實現高可用架構。這裏用 Keep

keepalived實現nginx可用,一一備

ddr cti 文件重命名 實現 usr time deb 安裝 fall keepalived實現nginx高可用(HA) 安裝直接yum安裝就可以,版本可能比官網落後,但是夠用了, yum -y install keepalived 編輯配置文件,默認路徑 /et

Linux配置MySQL主從同步(不復雜,簡單明瞭)

明人不說暗話,直接進入正題 一、準備工作 假設兩個伺服器IP如下: 主伺服器:44.92.163.112    -Linux 從伺服器:114.74.22.11     -Linux 注意: 1、主從資料庫版本最好一致; 2、主從資料庫內資料保持一致;

mysql複製+Keepalived可用實踐

最近領導交給我一個任務,說是研究一下mysql的高可用方案,方向為keepalived+mysql的主主複製功能。 剛開始一臉懵逼,竟然連“高可用”、“主主複製”、“keepalived”這些詞都是第一次聽說,真是汗顏。於是,趕緊惡補,原來複制(replication)功能

MySQL 可用keepalived+Mysql雙活。

環境描述:[[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [[email protected] ~]# cat /etc/redhat-release CentOS L

nginx(四) nginx+keepalived 實現備+雙熱備模型的可用負載均衡代理服務

nginx(四) nginx+keepalived 實現主備+雙主熱備模型的高可用負載均衡代理服務        在前面《nginx配置:反向代理 負載均衡 後端健康檢查 快取》等幾篇文章中,我們配置了nginx的反向代理負載均衡WEB叢集,而在《keepalived

Keepalived+MySQL可用配置

1.安裝環境: 伺服器IPOSMySQL同步使用者名稱/密碼VIP master1192.168.0.110CentOS

MySQL 可用性—keepalived+mysql(有詳細步驟和全部配置項解釋)

MySQL 高可用性—keepalived+mysql雙主(有詳細步驟和全部配置項解釋)  

Linux安裝Mysql

ibm get col cli nbsp bench -s sudo clas 1. sudo apt-get install mysql-server 2. sudo apt-get isntall mysql-client 3. sudo apt-get instal

Linux安裝Mysql(RPM安裝)

rpm安裝 技術分享 sql安裝 data track rpm包 用戶 系統 username 一、去官網下載本次安裝須要的mysql版本號。我們須要安裝的是5.1版本號的且centos系統是64位的。所下面載的是MySQL-community-5.1.73-1.rhe

linux 安裝mysql-5.7.16

unit sda etc tro tables rac 用戶密碼 username force 1.解壓tar -xvf mysql的包 tar -xvf mysql-5.7.16-1.el6.x86_64.rpm-bundle.tar(mysql 官網中即可找到)2.

奪命雷公狗---linux NO:34 linuxmysql安裝與連接

初始 目錄 -1 分享 希望 網上 groupadd mysql安裝 libaio mysql 其實是可以通過 yum install mysql-server 來進行安裝的,不過考慮到很多服務器自身帶寬的原因,其實用的不是特別的多,看實際情況來定。。。 當然yum

Linux安裝mysql(離線安裝和在線安裝)

命令 安裝 this glib leg rpm /usr node star 一:在線安裝mysql 1、首先檢測一下,mysql之前有沒有被安裝   命令:rpm -qa | grep mysql 2、刪除mysql的命令: rpm -e --nodeps `rpm -q

linux操作mysql

lin mysql linux下 mes 設置 word 表名 ble 操作 1.命令行登錄mysql用戶mysql -h ip -u username -p passwordmysql -hip -uusername -ppassword(可以沒有空格)2.顯示所有的數據