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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...