FILE+POS 方式 GreatSQL 主從複製架構給主節點磁碟擴容

来源:https://www.cnblogs.com/greatsql/p/18297613
-Advertisement-
Play Games

FILE+POS 方式 GreatSQL 主從複製架構給主節點磁碟擴容 一、前提 在一套非常老的系統上,有一套GreatSQL主從集群(1主1從),主從複製採用的是FILE+POS方式複製,磁碟使用緊張需要擴容,只能在該台機器上添加更大的磁碟,將原數據盤替換,也沒有其他的機器資源替換。這套系統沒有V ...


FILE+POS 方式 GreatSQL 主從複製架構給主節點磁碟擴容

一、前提

在一套非常老的系統上,有一套GreatSQL主從集群(1主1從),主從複製採用的是FILE+POS方式複製,磁碟使用緊張需要擴容,只能在該台機器上添加更大的磁碟,將原數據盤替換,也沒有其他的機器資源替換。這套系統沒有VIP,沒有高可用切換工具,業務讀寫直連主節點,從節點可供讀,允許有一定的延遲,全程磁碟擴容需要手動操作,以下方案步驟是模擬最快的方式去進行磁碟擴容。

二、整體思路是

在主節點機器上掛載一塊新磁碟,在新磁碟上搭建一個新的從節點,舊從節點的主變為新從節點,最後將主節點與新從節點準備好配置文件後,關閉主節點,將新從節點使用新的配置文件重啟,埠號為舊主port,新主實例頂替舊主成功。

三、模擬環境

主從架構

db01:master,172.17.135.81:3306

db02:slave02,172.17.134.225:3306

原主從db01 master複製數據到db02 slave02,現在在db01上搭建新的從節點slave01,並將slave01提升為新的主節點master02

db01:IP為172.17.135.81

master :port 3306

slave01:port 3307

db02:IP為172.17.134.225

slave02:port 3306

四、以下操作為模擬切換流程

1).在db01上master 數據放在磁碟 /data/

使用xtrabackup工具備份並搭建db01 slave01 數據放在磁碟/data2/上

2).改變db02 slave02 數據源為 db01 slave01(即db02 slave02 從db01-slave01同步數據),後期切換資料庫

操作過程

01.停掉db02 slave02 複製線程

先停slave02目的是,slave02獲取執行的binlog比db01 slave01上的binlog少,方便後續db02 slave02 追數據到db01 slave01 指定的位點

file

02.觀察db02 slave02(一定要小於04步驟的位置)

greatsql> show slave status\G
Relay_Master_Log_File: mysql-bin.000002
Exec_Master_Log_Pos: 61781270

file

03.停掉db01 slave01主從線程

觀察主從複製情況,確認 db01 slave01 獲取主節點位點比db02 slave02 大,然後停掉主從,方便方便獲取db01 slave01上的binlog位置信息(show master status)

觀察標記部分比db02 slave02大

file

停止複製

file

04.觀察db01 slave01

greatsql> show slave status\G
Relay_Master_Log_File: mysql-bin.000002
Exec_Master_Log_Pos:73110158

file

05.觀察db01 slave01

與獲取主節點過來的binlog位點信息與當前節點上binlog位點信息對應關係

greatsql> show master status;
File :mysql-bin.000003   
Position : 48396034

file

06.開啟db01 slave01 主從線程

使db01 slave01 正常追數據

greatsql> start slave;

07.db02 slave02 執行 until 的位置 為(04步驟)得到的值

追binlog至指定位點,該位點對應著db01 slave01 節點上show master status獲取的位點信息

greatsql> start slave until MASTER_LOG_FILE ='mysql-bin.000002',MASTER_LOG_POS =73110158;

file

觀察狀態,是否到指定位點停止

greatsql> show slave status \G

file

到指定位點停止後,停掉主從複製

greatsql> stop slave;  

file

08.db02 slave02 從db01 slave01獲取數據源(即重新指定db02 slave02 主庫信息)

根據04 、05 獲取的主binlog位點與db01 slave01 binlog位點對應關係,將db02 slave02複製關係指定位從db01 slave01獲取binlog數據,重啟主從複製,並觀察主從狀態

在db02 slave02 重新指定複製關係

greatsql> reset slave all; 

greatsql> CHANGE MASTER TO MASTER_HOST= '172.17.135.81',MASTER_USER='rpl', MASTER_PASSWORD='rpl123!',MASTER_PORT=3307,MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=48396034;

greatsql> start slave;

file

觀察複製狀態,等待複製正常之後在進行下一步,避免數據丟失

greatsql> show slave status \G 

file

09.通知將業務停止,避免數據更新,觀察全部節點是否處於同一binlog位點狀態

在db01 master節點上觀察

file

觀察db01 slave01 主從是否正常,且無延遲

greatsql> show slave status\G

file

greatsql> show master status;

file

觀察 db02 slave02

file

10.停止db02 slave 02

greatsql> stop slave;

11.在db02 slave 02觀察

greatsql> show slave status\G
Relay_Master_Log_File: mysql-bin.000003
Exec_Master_Log_Pos: 114096916

12.先後正常關閉 db01 master,然後關閉db01 slave01

修改配置文件db01 slave01 埠號為3306

13.啟動db01 slave01(不要啟動db01 master)

登錄db01 slave01 清除複製信息

greatsql> reset slave all;

14.重置db02 slave02主從複製信息,從新的主節點拉取數據

greatsql> CHANGE MASTER TO MASTER_HOST= '172.17.135.81',MASTER_USER='rpl', MASTER_PASSWORD='rpl123!',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=114096916;

greatsql> show slave status\G

file

15、通知業務重連,磁碟擴容完成

五、案例總結

本案例主要是針對非GTID複製、無自動切換、無VIP、無新機器、磁碟無法動態擴容的場景。

核心思想是找到對應的binlog位點信息,在重新指定主從信息,在重新指定主從信息之前,可以做準備工作,例如主節點上的新備主節點可以提前準備,配置文件可以提前準備,命令提前準備好,通過填補的方式將關鍵信息填到對應的命令中,儘量的去節省時間以及追數時間,促使業務宕機時間達到最短。


Enjoy GreatSQL

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

-Advertisement-
Play Games
更多相關文章
  • 1.檢查原始數據 原始數據展示如下: 工況 工況1 工況2 工況3 工況4 工況5 M 89.37 86.05 92.95 87.44 73.56 DF-1 87.45 80.98 89.68 84.43 73.46 DF-2 86.00 81.54 89.68 84.43 73.46 UP 85. ...
  • liwen01 2024.07.07 前言 yaffs 是專為nand flash 設計的一款文件系統,與jffs 類似,都是屬於日誌結構文件系統。與jffs 不同的是,yaffs 文件系統利用了nand flash 一些特有屬性,所以在數據讀寫擦除和回收上都有較大的差異。 關於jffs2文件系統的 ...
  • 本篇文章就是一個過渡學習的,先入門shell腳本,由於作者有編程基礎,所以有些解釋的比較少。由於現在還在努力學習中,以後等本散修進階了之後再寫進階的、與網路安全更加貼合的shell編程 ...
  • 寫在前面 筆者不才,過去一年中一半的時間在準備考研,博客園無心打理,顯得荒蕪了。到如今臨近畢業,找的工作實事求是的講也只是專業相關,並不完全對口,估計一段時間之內都沒法親自做開發了。雖然去的也是大公司,培養和各方面的保障都不錯,但是對於學了四年技術(慚愧地說學的不算精深)的筆者來說,畢業了做的不是技 ...
  • 2024/07/08 一、JDK下載 二、安裝與JDK開發環境配置(Windows) 三、安裝與JDK開發環境配置(Linux) 一、JDK下載與安裝 網址: https://www.oracle.com/java/technologies/downloads/#java8-windows Linu ...
  • 2024/07/15 1.問題描述 2.問題處理 3.其他問題 1.問題描述 昨天伺服器突然斷電,今天重啟後,網路出了些問題,具體情況如下: 能ping通本機IP ping不通網關 ping不通本網段其他IP地址 ping不通其他網段地址 2.問題處理 vi /etc/sysconfig/netwo ...
  • 近日,天翼雲TeleDB資料庫在中國信通院“可信資料庫”系列測試的賽道上,一次性跨越“分散式事務型資料庫基礎能力測試”與“性能測試”的雙重大關,以雲服務國家隊的卓越實力為資料庫領域樹立了新標桿。 ...
  • 主機配置說明: 192.168.136.101 mysql01 centos7.9 2C4G192.168.136.102 mysql02 centos7.9 2C4G防火牆主機互相放行 firewall-cmd --zone=public --permanent --add-rich-rule=' ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...