mysql主從複製與主主複製

来源:https://www.cnblogs.com/cpw6/archive/2018/06/07/9152015.html
-Advertisement-
Play Games

閱讀目錄 1、簡介 2、環境說明 3、主從複製 3.1、MySQL 3.2、配置文件 3.3、開始構建主從複製 3.4、測試主從複製 4、MySql主主複製 4.1、實現原理 4.2、配置文件 4.3、開始構建主主複製 4.4、測試主主複製 5、註意事項 閱讀目錄 1、簡介 2、環境說明 3、主從復 ...


閱讀目錄

  • 1、簡介
  • 2、環境說明
  • 3、主從複製
  •      3.1、MySQL
  •      3.2、配置文件
  •     3.3、開始構建主從複製
  •       3.4、測試主從複製
  • 4、MySql主主複製
  •      4.1、實現原理
  •      4.2、配置文件
  •     4.3、開始構建主主複製
  •     4.4、測試主主複製
  • 5、註意事項
 

1、簡介

      MySQL作為世界上使用最為廣泛的資料庫之一,免費是其原因之一。但不可忽略的是它本身的功能的確很強大。隨著技術的發展,在實際的生產環境中,由單台MySQL資料庫伺服器不能滿足實際的需求。此時資料庫集群就很好的解決了這個問題了。採用MySQL分散式集群,能夠搭建一個高併發、負載均衡的集群伺服器(這篇博客暫時不涉及)。在此之前我們必須要保證每台MySQL伺服器里的數據同步。數據同步我們可以通過MySQL內部配置就可以輕鬆完成,主要有主從複製和主主複製。

 

2、環境說明

     兩台linux虛擬主機

     Linux版本CentOS6.6、MySQL 5.5

     ip:192.168.95.11、192.168.95.12

 

3、主從複製

 

     3.1、MySQL

            已經安裝好,並且沒有任何數據

 

     3.2、配置文件

            一般Linux中的MySQL配置文件都在/etc/my.cnf(windows中的配置文件為mysql.ini)

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

           註意:二進位日誌必須開啟,因為數據的同步實質上就是其他的MySQL資料庫伺服器將這個數據變更的二進位日誌在本機上再執行一遍。

           192.168.95.11  為主資料庫伺服器

           192.168.95.12  為從資料庫伺服器

 

    3.3、開始構建主從複製

            第一步:

            在192.168.95.11中創建一個192.168.95.12主機中可以登錄的MySQL用戶

            用戶:mysql12

            密碼:mysql12

            mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql12’@’192.168.95.12’ IDENTIFIED BY ‘mysql12’;

            mysql>FLUSH PRIVILEGES;

            第二步:

            查看192.168.95.11MySQL伺服器二進位文件名與位置

            mysql>SHOW MASTER STATUS;

            

            第三步:

            告知二進位文件名與位置

            在192.168.95.12中執行:

            mysql>CHANGE MASTER TO

                     >MASTER_HOST=’192.168.95.11’,

                     >MASTER_USER=’mysql12’,

                     >MASTER_PASSWORD=’mysql12’,

                     >MASTER_LOG_FILE=’mysql-bin.000048’,

                     >MASTER_LOG_POS=432;

            

            完成主從複製配置

 

      3.4、測試主從複製

            在192.168.95.12中

            mysql>SLAVE START;   #開啟複製

            mysql>SHOW SLAVE STATUS\G   #查看主從複製是否配置成功

            

            當看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明狀態正常

            實際測試:

            --登陸192.168.95.11主MySQL

            mysql>SHOW DATABASES;

            

            --登陸192.168.95.12從MySQL

            mysql>SHOW DATABASES;

            

            -----------------------------------------------------

            192.168.95.11主MySQL操作:

            mysql>create database aa;

            mysql>use aa;

            mysql>create table tab1(id int auto_increment,name varchar(10),primary key(id));

            mysql>show databases;

            mysql>show tables;

            

            192.168.95.12從MySQL操作:

            mysql>show databases;

            mysql>show tables;

            

            由上面兩個結果圖可得知,兩主機達到了數據同步。主從複製的配置就是如此的簡單。

 

4、MySql主主複製

 

     4.1、實現原理

            主主複製即在兩台MySQL主機內都可以變更數據,而且另外一臺主機也會做出相應的變更。聰明的你也許已經想到該怎麼實現了。對,就是將兩個主從複製有機合併起來就好了。只不過在配置的時候我們需要註意一些問題,例如,主鍵重覆,server-id不能重覆等等。

 

     4.2、配置文件

            --192.168.95.11

            server-id=11   #任意自然數n,只要保證兩台MySQL主機不重覆就可以了。

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

           auto_increment_increment=2   #步進值auto_imcrement。一般有n台主MySQL就填n

           auto_increment_offset=1   #起始值。一般填第n台主MySQL。此時為第一臺主MySQL

           binlog-ignore=mysql   #忽略mysql庫【我一般都不寫】

           binlog-ignore=information_schema   #忽略information_schema庫【我一般都不寫】

           replicate-do-db=aa   #要同步的資料庫,預設所有庫

           --192.168.95.12

           server-id=12

           log-bin=mysql-bin

           auto_increment_increment=2

           auto_increment_offset=2

           replicate-do-db=aa

           配置好後重啟MySQL

 

    4.3、開始構建主主複製

           因為主主複製是兩個主從複製組合一起,所以我就接著上面主從複製接著配置。

           第一步:

           在192.168.95.12中創建一個192.168.95.11主機中可以登錄的MySQL用戶

           用戶:mysql11

           密碼:mysql11

           mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql11’@’192.168.95.11’ IDENTIFIED BY ‘mysql11’;

           mysql>FLUSH PRIVILEGES;

           第二步:

           在192.168.95.12查看二進位日誌名和位置

           mysql>show master status;

           

           第三步:

           告知二進位文件名與位置

           在192.168.95.11中執行:

           mysql>CHANGE MASTER TO

           MASTER_HOST=’192.168.95.12’,

           MASTER_USER=’mysql11’,

           MASTER_PASSWORD=’mysql11’,

           MASTER_LOG_FILE=’mysql-bin.000084’,

           MASTER_LOG_POS=107;

           

           完成主主複製配置

 

    4.4、測試主主複製

           分別開啟slave start;

           mysql>SHOW SLAVE STATUS\G   #查看主從複製是否配置成功

           192.168.95.11

   

           192.168.95.12

 

 

           

           當看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明狀態正常

           測試:

           --192.168.95.11

           mysql>use aa;

           mysql>select*from tab1;

           tab1無數據

           --192.168.95.12

           mysql>use aa;

           mysql>select*from tab1;

           tab1無數據

           --192.168.95.11插入數據

           mysql>insert into tab1 (name) value(‘11’),(‘11’),(‘11’);

           --192.168.95.12插入數據

           mysql>insert into tab1 (name) value(‘22’),(‘22’),(‘22’);

           查看數據:

           兩個主機數據結果一樣!

           

           主主複製配置成功!

 

5、註意事項

     1、主主複製配置文件中auto_increment_increment和auto_increment_offset只能保證主鍵不重覆,卻不能保證主鍵有序。

     2、當配置完成Slave_IO_Running、Slave_SQL_Running不全為YES時,show slave status\G信息中有錯誤提示,可根據錯誤提示進行更正。

     3、Slave_IO_Running、Slave_SQL_Running不全為YES時,大多數問題都是數據不統一導致。

     常見出錯點:

     1、兩台資料庫都存在db資料庫,而第一臺MySQL db中有tab1,第二台MySQL db中沒有tab1,那肯定不能成功。

     2、已經獲取了數據的二進位日誌名和位置,又進行了數據操作,導致POS發生變更。在配置CHANGE MASTER時還是用到之前的POS。

     3、stop slave後,數據變更,再start slave。出錯。

     終極更正法:重新執行一遍CHANGE MASTER就好了。

 

轉載鏈接:http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label0


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

-Advertisement-
Play Games
更多相關文章
  • vim按d表示剪切按dd剪切一行vim命令:命令模式 /關鍵字 n繼續向下查找 vim的多行註釋:1.按ctrl + v進入 visual block模式2.按上下選中要註釋的行3.按大寫字母I,再插入註釋符,例如//4.按兩下esc5.按ctrl + v進入 visual block模式,按箭頭選 ...
  • ELK:Elasticsearch Logstash Kibana Elasticsearch:是基於JSON的分散式搜索和分析引擎,專為實現水平擴展、高可用和管理便捷性而設計 Logstash:是動態數據收集管道,擁有可擴展的插件生態系統 Kibana:能夠已圖形化呈現數據,並且具有可擴展的用戶界 ...
  • 1.yum install epel-release(安裝epel(Extra Packages for Enterprise Linux)) 2.yum repolist(確保epel添加到yum的源裡邊,如果沒有刪除epel-release重新安裝) 3.yum install nginx(安裝 ...
  • Shell編程之條件語句 學習目標: 掌握shell腳本條件測試 掌握if語句編程 目錄結構: 條件測試 條件測試概述 l 對特定的條件進行判斷,以決定如何執行操作 l 測試的方法 方法1:test 條件表達式 方法2:【條件表達式】 l 當條件成立時,測試語句的返回值為0,否則為其他數值 條件測試 ...
  • 一、現象描述 今天在調試兩台物理機,做完配置重啟主機後,發現一臺伺服器網路無法ssh連接,通過ILO進去ifconfig發現eth0配置的IP地址等信息丟失,手動重啟後,可以ssh連接,但過一段時間,ssh又再次登錄失敗,ifconfig eth0的相關信息也丟失。 二、錯誤原因 centos 6. ...
  • 深圳銳科光電科技有限公司的DALI色溫模塊符合IEC62386-102和IEC62386-207(LED模塊)和IEC62386-209(色溫)標準,同時支持DT6(LED模塊)和DT8(顏色控制-色溫)協議。採用了原裝進口ST單片機晶元,完美相容TRIDONIC(銳高)、OSRAM(歐司朗)、PH... ...
  • druid為各種場景提供了豐富的查詢類型。 查詢由各種JSON屬性組合而成,不同類型的查詢,JSON屬性不同,下麵主要介紹常用的查詢類型。 1. Components Datasources 一個數據源等價於druid表。此外,一個查詢也可以作為數據源,提供類似於子查詢的功能。查詢數據源目前只支持G ...
  • Redis對象類型 Redis基於基礎的數據結構創建的對象: 字元串對象、 列表對象、 哈希對象、 集合對象 有序集合對象。 對象回收:Redis對象系統實現了基於引用計數技術的記憶體回收機制,當程式不再使用某個對象的時候,這個對象所占用的記憶體就會被自動釋放;Redis通過引用計數技術實現了對象共用機 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...