mysql主主複製彙總整理

来源:https://www.cnblogs.com/lsy-blogs/archive/2018/01/11/8266865.html
-Advertisement-
Play Games

mysql主主複製彙總整理 一、Mysql主主、主從複製主要思路: 1、mysql複製實質: 就是其他的MySQL資料庫伺服器將這個數據變更的二進位日誌在本機上再執行一遍,因此非常重要的一點是mysql資料庫中必須要開啟二進位日誌; 2、Mysql主從複製: 就是A為主資料庫,B為從資料庫,B將A中 ...


mysql主主複製彙總整理

一、Mysql主主、主從複製主要思路:

1、mysql複製實質:

就是其他的MySQL資料庫伺服器將這個數據變更的二進位日誌在本機上再執行一遍,因此非常重要的一點是mysql資料庫中必須要開啟二進位日誌

2、Mysql主從複製:

就是A為主資料庫,B為從資料庫,BA中數據變更的二進位日誌在它資料庫中重新執行一遍;(B只會隨著A改變,A不會隨著B改變

3、Mysql主主複製:

就是A資料庫、B資料庫互相同步數據,AB都將彼此的數據變更的二進位日誌在自身資料庫中重新執行一遍,就是兩個主從複製的整合;(AB互相跟隨彼此進行改變

二、Mysql主主複製操作步驟:

假定A庫、B庫要實現主主複製:

1、在主庫中創建從庫登錄的賬號、密碼,並對賬號進行授權:

創建賬號:

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

授權:

 

2、修改mysql配置文件:一般Linux中的MySQL配置文件都在/etc/my.cnf(windows中的配置文件為mysql.ini

A庫配置文件增加以下配置信息:(信息見mysql_copy_update_info.txt文件)

#註意在mysql配置文件中填寫一下信息的位置,必須為此位置,即[mysqld]標簽下麵
[mysqld]

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

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

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

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

log-error=/mysqldata/mysqld.log

pid-file=/mysqldata/mysqld.pid

#與此從庫相對應的主庫的ip地址
master-host=192.168.15.185

#在相對應的主庫中,此庫可登錄的賬號
master-user=backup

#在相對應的主庫中,此庫可登錄的密碼
master-password=123456


#在相對應的主庫中登錄的埠號
master-port=3306

#要同步的資料庫,預設所有庫,指定多個庫添加新行就可以
replicate-do-db=phpcmsv9

#不要同步的資料庫,指定多個庫添加新行就可以
replicate-ignore-db=mysql

master-connect-retry=60

B庫配置文件增加的配置信息與A庫中增加信息完全一致,除了server-idauto_increment_offset不同外;

3、設置編碼格式(否則中文容易出現亂碼):

增加的配置信息如下圈出信息,如果有些標簽[]中在mysql配置文件中預設沒有的,自己手動添加(詳情見character_encoding_info.txt文件)

[mysql]

default-character-set=utf8

[mysqld]

default-character-set = utf8
character_set_server = utf8

[mysqld_safe]

default-character-set = utf8

[mysql.server]

default-character-set = utf8

[client]

default-character-set = utf8

4、重新啟動mysql資料庫:

Mysql命令:service mysqld restart;

5、查看相對應的主庫的二進位文件名及其位置:

在主庫中用mysql命令:show master status;

 

6、在本庫中告知相對應主庫二進位文件名及其位置的信息:

A為主庫,B為從庫時,在B庫中執行mysql命令:(詳細信息請見文件change_master_to_info.txt文件)

change master to master_host='172.20.109.14',master_user='mysql913',master_password='123456',master_log_file='mysql-bin.000056',master_log_pos=151744220;

B為主庫,A為從庫,在A庫中執行同上命令,參數進行適當修改;

7、分別啟動各自的slave

分別在各自庫中執行mysql命令:slave start;

8、查看slave啟動後的狀態:

分別在各自庫中執行mysql命令:SHOW SLAVE STATUS\G;

主要是觀察:

(1)紅圈的兩個參數是否都是YES,如果不是,那麼就是出現了異常,查看第一行的錯誤提示,進行異常處理,對於常見的異常處理見四中進行解決;

(2)紅線為複製的資料庫,查看是否是自己需要複製的資料庫,如果不正確,那麼久需要修改mysql的配置文件中的信息,重新從頭執行一遍;

 

9、完成主主複製配置,進行數據測試:

三、Mysql主從複製操作步驟:

與上述主主複製步驟類似,只是主主複製對兩個庫都進行操作,主從複製只需要對從庫進行change master to操作,對主庫只需要配置開啟二進位、server-id即可,對從庫配置信息同上;

四、如何在現有主主上添加庫:

1、在使用的mysql上先根據需要創建庫,並創建需要的表添加數據;

2、在另一臺mysql上同樣創建對應的庫,並將對應庫中的數據copy過來;

3、分別修改mysql的配置文件中的replicate-do-db新增加一行,值就是要新添加的庫,然後重新啟動mysql服務;

4、然後通過linux命令進入mysql,查看slave是否正確啟動,如果啟動有異常進行處理,確保正常啟動;

5、新添加的庫就到了主主複製鏈中,進行測試即可;

五、如何在現有主主上去掉某個庫:

1、分別修改mysql對應的配置文件,將需要去掉的庫的replicate-do-db註釋掉或者刪掉;

2、重新啟動mysql服務;

3、進去mysql中,分別查看mysql的日誌文件信息:change master status

4、分別重新執命令行start slave until MASTER_LOG_FILE="mysql-bin.000075", MASTER_LOG_POS=216,將從庫中讀取二進位日誌信息位置切換到對應主庫現有位置中去;

5、完成對某個庫的去掉功能;

六、Mysql主主和主從複製常見異常處理:

1、Slave_IO_State: Waiting to reconnect after a failed registration on master異常:

解決方法:

對應主庫從新對對應賬號執行授權命令

grant replication slave on *.* to "repl'@'%' identified by 'sangfordb';

FLUSH PRIVILEGES;

然後重新stop slave 和start slave就可以

2、Slave_IO_State:connecting to master

解決方法:

原因是此賬號無法連接主庫,查看賬號遠程登錄?Linux防火牆埠開放?

3、slave_sql_runningNO異常:

解決方法:

跳過執行報錯的sql就好了,在從庫中執行mysql命令:

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1(等號後為幾看自己有幾個錯誤了,不知道的就嘗試,直到SHOW SLAVE STATUS查看結果該異常解決掉為止)

4、Slave啟動正常,就是不同步數據:

原因:出現此情況的原因就是,從庫中獲取主庫的二進位信息的文件名和位置與主庫中最新數據位置不一致;

解決方法:查看主庫的二進位文件名和信息:change master status;然後在從庫中執行:start slave until MASTER_LOG_FILE="mysql-bin.000075", MASTER_LOG_POS=216;命令,將從庫中獲取主庫二進位文件信息更新到主庫現有狀態,如果是主主複製那就在兩台mysql中分別執行即可;

七、Mysql主主和主從複製伺服器異常停止後處理思路:

(1)mysqlslave出現異常管理員如何獲知:

1slave異常獲知:編寫一個shell腳本,用nagios監控slave的兩個yesSlave_IOSlave_SQL進程),如發現只有一個或零個yes,就表明主主或主從出問題了,發簡訊警報;

(2)管理員手動處理異常的步驟:

直接將出現異常的那台伺服器或mysql重新啟動就好了,另一臺資料庫中改動的數據會自動同步到重新啟動的mysql庫中;

八、Mysql主主複製中某個庫或某個表因為數據原因不能同步異常

1、將該庫或該表未同步的數據導出.sql文件,通過命令:

mysqldump -uroot -p --master-data --single-transaction -R --databases zzcp03 > zzcp03.sql

2、在導出的sql裡面查找當前的日誌文件以及位置(change master to )

3、將另外對應的資料庫中slave stop了,然後讓salvesql文件中的位置處開始,通過命令實現:

start slave until MASTER_LOG_FILE="mysql-bin.000075", MASTER_LOG_POS=769;

4、然後讓salve start起來;

5、查看兩台mysql中的slave是否正常啟動,不是不正常進行處理,確保正常啟動,這樣就可以完成該表的數據同步了;

附兩個功能代碼:

導出某個庫或表在slave不同步信息期間的增、刪、修數據信息,並且帶有二進位文件信息:

mysqldump -uroot -p --master-data --single-transaction -R --databases zzcp03 > zzcp03.sql 

讓slave獲取的master二進位信息從指定的位置處開始:

start slave until MASTER_LOG_FILE="mysql-bin.000075", MASTER_LOG_POS=769;

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

-Advertisement-
Play Games
更多相關文章
  • 今天新部署Cloudera Manager Hadoop(CDH)集群 發現祖國江山一片紅,所有服務都報時鐘偏差 1、查看各伺服器,時鐘是否正確 發現並無問題 2、查看CDH主機配置————主機時鐘偏差閾值 尼瑪,這個預設值警告是2s,嚴重是10s,仔細查看界面後面的描述如下: 這是主機運行狀況測試 ...
  • .Net MongoDB LBS地理位置定位 開發過程,實現商家按距離排序 前言: 在使用美團點外賣,看電影,找好吃的時候,經常會註意到軟體有一個按距離排序,找離我最近的商家,心中有一些疑問,.Net+Sql Server是如何做到這一需求的?發現使用關係型資料庫Sql Server實現這一需求是有 ...
  • 一 前言 以往公司開發的地理信息系統數據都是存儲在oracle中,然而在地圖數據的分析和計算中一直存在不小的問題,所以今次我們嘗試使用PostgreSQL+PostGIS來解決這一問題。 本篇筆記的目的就是記錄在研究這一開發路徑期間的“學習的內容”、“遇到的問題和解決過程”以及“簡單的實踐內容”以備 ...
  • --scott用戶不能使用,使用system登錄--修改用戶scott賬戶解鎖ALTER USER SCOTT ACCOUNT UNLOCK;--重新設置密碼identified被識別的alter user scott identified by tiger; --選擇 所有欄位 scott用戶部門 ...
  • Kettle使用心得彙總系列一 一、kettle實現的功能: kettle可以實現從不同數據源(excel、資料庫、文本文件等)獲取數據,然後將數據進行整合、轉換處理,可以再將數據輸出到指定的位置(excel、資料庫、文本文件)等; 通過kettle處理大量數據非常方便,如果window伺服器或者L ...
  • 概述: 閃回技術是Oracle強大資料庫備份恢復機制的一部分,在資料庫發生邏輯錯誤的時候,閃回技術能提供快速且最小損失的恢復(多數閃回功能都能在資料庫聯機狀態下完成)。需要註意的是,閃回技術旨在快速恢復邏輯錯誤,對於物理損壞或是介質丟失的錯誤,閃回技術就回天乏術了,還是得藉助於Oracle一些高級的 ...
  • 前言 Mysql 5.7.20測試主從複製 環境 主庫 192.168.1.59 t-xi-sonar01 從庫 192.168.1.51 t-xi-orc01 設定主機host文件 主庫 [root@t-xi-sonar01 ~]# cat /etc/hosts 127.0.0.1 localho ...
  • 在公司天天寫Sql寫,存儲過程,但是公司工具模板把創建的語句都寫好了,只負責寫裡面的邏輯,久而久之,創建語句都不會寫了。還有一些知識點都很模糊,平常使用的時候都不清楚,稀里糊塗的就在用。在這裡整理一下。鞏固複習。 一.存儲過程。 1.存儲過程類似編程語言的裡面的函數,方法。將Sql語句封裝在裡面,方 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...