MYSQL雙主全庫同步複製

来源:http://www.cnblogs.com/hqjy/archive/2017/09/15/7524720.html
-Advertisement-
Play Games

環境: A、B兩台伺服器分別安裝mysql-5.7.18服務端,配置成互為主從同步。 linux系統版本為CentOS7 A伺服器ip:192.168.1.7 主機名:test1 B伺服器ip:192.168.1.8 主機名:test2 (同一區域網下) 一、準備 1.修改主機名 命令:hostna ...


環境:

A、B兩台伺服器分別安裝mysql-5.7.18服務端,配置成互為主從同步。

linux系統版本為CentOS7

A伺服器ip:192.168.1.7   主機名:test1

B伺服器ip:192.168.1.8   主機名:test2

(同一區域網下)

 

一、準備

  1.修改主機名

   命令:hostnamectl  set-hostname  xxx

   (查看主機名 命令:hostname)

  2.關閉防火牆

   1)查看防火牆狀態

    命令:firewall-cmd  --state

    結果:running

   2)防火牆是運行狀態,先關閉防火牆服務

    命令:systemctl  mask  firewalld

   3)關閉防火牆

    命令:systemctl  stop  firewalld

   4)檢查防火牆狀態

    命令:firewall-cmd  --state

    結果:not  running

  3.關閉selinux策略

   1)查看selinux運行狀態

    命令:getenforce

    結果:Enforcing

    

   2)永久性關閉(需重啟電腦),編輯selinux文件vi  /etc/sysconfig/selinux修改SELINUX=disabled

    

   3)為關閉狀態

    

二、配置主伺服器(master)從伺服器(slave)

  1.打開A伺服器的my.cnf文件vi  /etc/my.cnf,在文件的[mysqld]下添加如下內容

   server-id=1       #必須與其他伺服器不同,且必須為1~232之間的正整數值

   log-bin=mysql-bin

   log-bin-index=mysql-bin

   

  

   在B伺服器my.cnf文件中的[mysqld]下添加上圖內容,只更改server-id值即可。

   server-id=2    

   log-bin=mysql-bin

   log-bin-index=mysql-bin

  2.在A伺服器中的mysql安裝路徑下(rpm安裝路徑為/var/lib/mysql)創建全庫備份文件all.sql。

   創建命令:touch  /var/lib/mysql/all.sql

   備份命令:[root@test1 mysql]# mysqldump -uroot -p123 --all-databases > /var/lib/mysql/all.sql

 

   把all.sql文件拷貝到B伺服器中的某個路徑下(以/var/lib/mysql路徑為例)進行恢復。

   恢覆命令:[root@test2 /]# mysql -uroot -p123 < /var/lib/mysql/all.sql

  3.在A、B伺服器的mysql中創建用戶用於同步。

   創建用戶:mysql> create user 'tongbu'@'%' identified by 'tongbu';

   授權:mysql> grant all on *.* to 'tongbu'@'%';

   刪除用戶:mysql> drop user '用戶名'@'%';

    A、B伺服器用戶創建完成後,測試用戶相互是否可以遠程登陸mysql。

      [root@test1 /]# mysql -utongbu -ptongbu -h192.168.1.8

   [root@test2 /]# mysql -utongbu -ptongbu -h192.168.1.7

  

   測試無問題後重啟A、B伺服器中的mysql服務:[root@test /]# service mysqld restart

  4.設置A為主伺服器,B為從伺服器。

   1)查看A伺服器mysql中的二進位日誌名和偏移量值

    命令:mysql> show master status\G

    如下圖

    

   2)在B伺服器中配置連接伺服器

    mysql> stop slave;

    mysql> change master to

      -> master_host='192.168.1.7',

      -> master_user='tongbu',

      -> master_password='tongbu',

      -> master_log_file='mysql-bin.000024',

      -> master_log_pos=154;

    mysql> start slave;

    mysql> show slave status\G 輸入此命令查看Slave_IO_Running和Slave_SQL_Running的值是否為Yes,如下圖

    

  5.設置B為主伺服器,A為從伺服器。

   1)查看B伺服器mysql中的二進位日誌名和偏移量

    命令:mysql> show master status\G

    

   2)在A伺服器中配置連接伺服器。

    mysql> stop slave;

    mysql> change master to

      -> master_host='192.168.1.8',

      -> master_user='tongbu',

      -> master_password='tongbu',

      -> master_log_file='mysql-bin.000027',

      -> master_log_pos=154;

    mysql> start slave;

    mysql> show slave status\G 查看Slave_IO_Running和Slave_SQL_Running的值是否為Yes

 

至此兩台mysql資料庫互為主從同步配置完成。

 

錯誤排查:

1.Slave_IO_Running狀態錯誤

 檢查MySQL> show slave status\G;時,Slave_IO_Running狀態為Connecting錯誤,出現的原因主要分為三種,需要檢查配置:

 1)網路不通  

 2)賬戶許可權配置錯誤,如密碼不對、賬號錯誤、地址錯誤  

 3)二進位文件位置不對

2.主備數據衝突或不同造成的異常

 主鍵衝突、表已存在等錯誤代碼如1062,1032,1060等,可以在mysql配置文件指定略過此類異常並繼續下條sql同步,這樣可以避免很多主從同步的異常中斷。打開/etc/ mysql下的my.cnf文件,在[mysqld]後添加如下代碼:

 slave-skip-errors = 1062,1032,1060

3. 跳過異常恢復同步

 mysql >slave stop;

 mysql >SET GLOBAL sql_slave_skip_counter = 1;

 mysql >slave start;


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

-Advertisement-
Play Games
更多相關文章
  • ORACLE虛擬索引(Virtual Index) 虛擬索引概念 虛擬索引(Virtual Indexes)是一個定義在數據字典中的假索引(fake index),它沒有相關的索引段。虛擬索引的目的是模擬索引的存在而不用真實的創建一個完整索引。這允許開發者創建虛擬索引來查看相關執行計劃而不用等到真實... ...
  • 1. 索引的特性 1.1 加快條件的檢索的特性 當表數據量越來越大時查詢速度會下降,在表的條件欄位上使用索引,快速定位到可能滿足條件的記錄,不需要遍歷所有記錄。 #在這個案例中:執行同一條SQL。t2有索引的執行數據是0.052 ms;t1沒有索引的是:5.741 ms; 1.2 有序的特性 索引本 ...
  • 文件和文件組填充策略 文件組對組內的所有文件都使用按比例填充策略。當數據寫入文件組時,SQL Server 資料庫引擎按文件中的可用空間比例將數據寫入文件組中的每個文件,而不是將所有數據都寫入第一個文件直至其變滿為止。然後再寫入下一個文件。例如,如果文件 f1 有 100 MB 可用空間,文件 f2 ...
  • --通過代碼方式新建資料庫create database MyDatabase0911New --(MyDatabase0911New要創建的資料庫名稱)on primary --資料庫文件( --名字 name='MyDatabase0911New_data', --路徑 filename='G: ...
  • SQL是Structure Query language(結構化查詢語言)的縮寫,它是使用關係模型的資料庫應用語言。在眾多開源資料庫中,MySQL正是其中最傑出的代表,MySQL是由三個瑞典人於20世紀90年代開發的一個關係型資料庫。並用了創始人之一Michael Widenius女兒的名字My命名 ...
  • 最近做了幾個PowerBI報表,對PowerBI的設計有了更深的理解,對數據的塑形(sharp data),不僅可以在Data Source中實現,例如在TSQL查詢腳本中,而且可以在PowerBI中實現,例如,向數據模型中添加自定義欄位,或者在報表數據顯示時,根據數據表之間的關係做數據的統計。本文 ...
  • 索引對於提高查詢性能非常有效,因此,一般應該考慮應該考慮為分區表建立索引,為分區表建立索引與為普通表建立索引的語法一直,但是,其行為與普通索引有所差異。預設情況下,分區表中創建的索引使用與分區表相同分區架構和分區列,這樣,索引將於表對齊。將表與其索引對齊,可以使管理工作更容易進行,對於滑動視窗方案尤 ...
  • 鍵值對RDD通常用來進行聚合計算,Spark為包含鍵值對類型的RDD提供了一些專有的操作。這些RDD被稱為pair RDD。pair RDD提供了並行操作各個鍵或跨節點重新進行數據分組的操作介面。 Spark中創建pair RDD的方法:存儲鍵值對的數據格式會在讀取時直接返回由其鍵值對數據組成的pa ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...