mysql5.6主主複製及keepalived 高可用

来源:https://www.cnblogs.com/mushou/archive/2018/08/09/9446352.html
-Advertisement-
Play Games

1.實驗目的 mysql伺服器作為生產環境中使用最廣泛的資料庫軟體,以其開源性,穩定性而廣泛使用,但同時由於數據存儲,讀寫頻率高,極易造成資料庫出錯,從而給企業造成不可輓回的損失,我們除了做好資料庫的備份工作外,同時,還應該解決資料庫伺服器的單點故障問題。 2.搭建環境 兩台 mysql 伺服器 1 ...


1.實驗目的

 mysql伺服器作為生產環境中使用最廣泛的資料庫軟體,以其開源性,穩定性而廣泛使用,但同時由於數據存儲,讀寫頻率高,極易造成資料庫出錯,從而給企業造成不可輓回的損失,我們除了做好資料庫的備份工作外,同時,還應該解決資料庫伺服器的單點故障問題。

2.搭建環境

兩台 mysql 伺服器

172.16.1.2     mysql   + keepalived

172.16.1.12   mysql  + keepalived

一臺測試機

172.16.1.1

3.環境部署

一臺 mysql 伺服器 + keepalived

1)對於mysql源碼安裝或者yum 安裝均可,此處不多講。

2) 主MySQL配置

主MySQL安裝時間同步器,yum  -y  install ntp

vim   /etc/ntpd.conf

添加

server 127.127.1.0
fudge 127.127.1.0 startum 8

啟動service   ntpd  start

配置mysql目錄下的 my.cnf文件

vim my.cnf

[mysqld]
log-slave-updates=true                            #開啟從伺服器的日誌更新
server-id = 11                                          #主伺服器的ID ,這個可以隨便定,但是與從伺服器要不同

log-bin=mysql-bin                                    #開啟二進位日誌

登錄mysql,   mysql   -uroot   -p123456  

創建myslave 賬號,並授權可以複製

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

flush   privileges;

顯示主服務的狀態;

 show   master  status;

記住file 及position位置的字元串,在配置從服務時候會用到。

至此,主 mysql 配置完成,重啟service mysqld   restart

3)從mysql服務配置

MySQL安裝時間同步器,yum  -y  install ntpdate

ntpdate  172.16.1.2      時間同步

配置mysql目錄下的 my.cnf文件

在其中添加

[mysqld]

relay-log=relay-log-bin                                     # 傳遞日誌,首碼為 relay-log-bin

relay-log-index=slave-relay-bin.index             # 傳遞日誌的索引文件

log-bin=mysql-bin                                            #開啟二進位日誌

server-id = 12                                                  #伺服器的ID ,這個可以隨便定,但是與主伺服器要不同

重啟服務   service  mysqld restart

登錄mysql,   mysql   -uroot   -p123456  

change  master  to  master_host ='172.16.1.2',master_user='myslave',master_password='123456',master_log_file='此處為主服務show  master 命令顯示的 file',master_log_pos='此處為主服務show  master 命令顯示的 pos'';

此處 master_host ='172.16.1.2',為主mysql的ip

start   slave;                       #開啟從服務

show slave status\G;         #顯示從服務狀態

如果

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

兩項為yes,則代表啟動從服務成功。

如果Slave_IO_Running: No

可能的問題一是主服務和從服務的server-id,不能為重覆;二是授權時一定要準確。grant   replication slave   on  *.*  to  'myslave'@'172.16.1.12'     identified   by  '123456';

此處172.16.1.12為從伺服器的ip

4)以上兩步實現了mysql主從複製,我們要實現主主,也就是兩台mysql ,一臺既是主,也是從,另一臺既是主也是從,所以我們按照上面的配置在兩台mysql上做相反的從主配置。

主mysql上,做從配置 

配置mysql目錄下的 my.cnf文件

在其中添加

[mysqld]

relay-log=relay-log-bin                                     # 傳遞日誌,首碼為 relay-log-bin

relay-log-index=slave-relay-bin.index             # 傳遞日誌的索引文件

log-bin=mysql-bin                                            #開啟二進位日誌

重啟服務   service  mysqld restart

登錄mysql,   mysql   -uroot   -p123456  

change  master  to  master_host ='172.16.1.12',master_user='myslave',master_password='123456',master_log_file='此處為主服務show  master 命令顯示的 file',master_log_pos='此處為主服務show  master 命令顯示的 pos'';

此處的master_host ='172.16.1.12'  為從mysql伺服器的ip

start   slave;                       #開啟從服務

show slave status\G;         #顯示從服務狀態

如果

Slave_IO_Running: Yes Slave_SQL_Running: Yes

兩項為yes,則代表啟動從服務成功。

 

從mysql上,做主配置

配置mysql目錄下的 my.cnf文件

vim my.cnf

[mysqld] log-slave-updates=true                            #開啟從伺服器的日誌更新

登錄mysql,   mysql   -uroot   -p123456  

創建myslave 賬號,並授權可以複製

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

flush   privileges;

顯示主服務的狀態;

 show   master  status;

記住file 及position位置的字元串,在配置從服務時候會用到。

至此,兩台MySQL伺服器的分別配置了主從,即一臺既是主又是從,另一臺既是從也是主。

5)mysql主主複製測試

mysql  -uroot  -p123456 任意登錄一臺mysql伺服器,

create  database  test  default  character  set  utf8;

create  table  test;

 到另一臺MySQL上show   databases;  show   tables;

顯示了資料庫和數據表都已建好,可以看到已經同步成功

6)配置keepalived,實現高可用

在主mysql伺服器配置 

yum  -y install  keepalived

cp  /etc/keepalived/keepalived.conf    /etc/keepalived/keepalived.conf.bak

vim  /etc/keepalived.conf

vrrp_instance VI_1 {                                         #實例1
    state MASTER                                             #狀態為主
    interface ens33                                            #綁定網卡
    virtual_router_id 11                                      #   id 號,主從一致
    priority 100                                                   #優先順序為100
    advert_int 1
    #nopreempt                                                  #非搶占模式
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {                                         #虛擬ip地址
        172.16.1.199
    }
}
virtual_server 172.16.1.199 3306  {                 
     delay_loop 2                                                  #間隔2秒檢查真實伺服器狀態 
     lb_algo wrr                                                     #LVS   arithmetic
     lb_kind DR                                                     #LVS model
     persistence_timeout 60                                  #k
     protocol TCP 
     real_server 172.16.1.2 3306  {                        #真實伺服器 ,也就是主mysql伺服器
         weight 3 
         #notify_down /usr/local/mysql/bin/mysql.sh  # 可執行腳本路徑 
         TCP_CHECK { 
             connect_timeout 10    #timeout
             nb_get_retry 3       #conect times to try to connect
             delay_before_retry 3   #interval of retry
             connect_port 3306    # check mysql port
         }
     } 
}

啟動服務,service  keepalived  start

在從mysql伺服器上配置

yum  -y install  keepalived

cp  /etc/keepalived/keepalived.conf    /etc/keepalived/keepalived.conf.bak

vim  /etc/keepalived.conf

本處只寫與主mysql伺服器不同處

 

    #備用伺服器上為SLAVE
    state SLAVE
    #綁定vip的網卡為ens33,根據自己伺服器網卡
    interface ens33
    virtual_router_id 11                     #與主伺服器  id號碼一樣
    #備用伺服器上為90
    priority 90                                   #優先順序比主mysql伺服器小
}
virtual_server 172.16.1.199 3306 {  
     real_server 172.16.1.12 3306 {               #真實伺服器 ,也就是從mysql伺服器
}

其他與主mysql伺服器上配置文件相同

啟動服務,service  keepalived  start

可以在主mysql伺服器上看到一個VIP地址,172.16.1.199

4.測試

 停止主mysql伺服器上的keepalived服務,  service  keepalived  stop

同時查看另一臺的從mysql  的ip,ip a

可以看到有一vip ,172.16.1.199

我們在測試機172.16.1.1上登錄從mysql ,    mysql   -uroot   -p123456  -P 3306   -h  172.16.1.12

登錄成功,我們做一個 插入數據實驗

use test;

insert into  test   values();

到兩台的資料庫下查看,select   *  from  test;

數據同步成功。

啟動  主mysql伺服器上的keepalived服務,  service  keepalived  start

停止從mysql伺服器上的keepalived服務,  service  keepalived  stop

查看另一臺的主mysql  的ip,ip a

可以看到有一vip ,172.16.1.199

做同樣的操作 insert into  test   values();

到兩台的資料庫下查看,select   *  from  test;

數據同步成功,從而實現兩台mysql資料庫伺服器的高可用及主主數據同步。

                                           

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基本操作 1. 安裝 2. 生成SSH KEY :先 ,在這個目錄下輸入 ,一直回車就可以了,這個時候就會出現id_rsd.pub公鑰和id_rsa私鑰,然後 ,把這個公鑰複製到對應的碼雲平臺或者是github上,配置SSH Key 3. 基本命令 | git config | git init | ...
  • 當你新登錄一個主機,過著管理一個主機,這時候你就需要這些命令來進行查看了: 1. w : Show who is logged on and what they are doing. w [options] user [...] 常用命令: w -h --no-header w -u --no-cu ...
  • 打開“開始”菜單。要執行此操作,請單擊屏幕左下角的Windows徽標或⊞ Win按鍵。 在Windows 8上,您將滑鼠游標懸停在屏幕的右上角,然後單擊放大鏡圖標。 在Windows 8上,您將滑鼠游標懸停在屏幕的右上角,然後單擊放大鏡圖標。 鍵入Firewall到開始。這樣做會顯示一個匹配程式列表 ...
  • [TOC] 一、shell命令規則 linux命令的格式 命令 [選項] [參數] 舉例: 命令這一部分肯定是存在 選項和參數不一定存在,可有可無。 選項和參數取決於你使用該命令實現的具體目的。 選項是以" "來指明的 命令、選項、參數之間是以空格來隔開的,一個或多個空格都視為1個空格。 如:ls ...
  • 前段時間遇到開發人員更新glibc版本,把/usr/lib64/libc-2.12.so & libc.so.6 -> libc-2.12.so 這個軟連接更改之後導致報錯: ls: error while loading shared libraries: libc.so.6: cannot op ...
  • Windows 10以多種方式對其前代產品進行了改進,但它改變了一些用戶可能已經習慣依賴的東西。如果您是錯過桌面上“我的電腦”圖標的人之一,我們就有辦法將舊的可靠按鈕帶回來。 這個技巧不僅可以讓你更容易看到你的PC的驅動器級別,它還允許你帶回其他圖標。所以,控制面板和好系統重裝助手教你怎麼安裝win ...
  • 前言 當我們在滲透Linux主機時,反彈一個交互的shell是非常有必要的。在搜索引擎上搜索關鍵字“Linux 反彈shell”,會出現一大堆相關文章,但是其內容不但雷同,而且都僅僅是告訴我們執行這個命令就可以反彈shell了,卻沒有一篇文章介紹這些命令究竟是如何實現反彈shell的。既然大牛們懶得 ...
  • 一.鏡像下載: 根據需求下載自己需要的版本 從官網下載kali 2018.2 的安裝包:https://www.kali.org/downloads/ 二.燒錄: 這裡推薦用 win32 disk imager 嘗試了好幾款燒錄工具,這個是相對最穩定的 打開win32後 第一步 選中鏡像位置 ,第二 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...