MySQL主從複製高級進階

2020-12-16 anyux1

大家好,我是anyux。本文介紹MySQL主從複製高級進階。

延時從庫

介紹及配置

SQL線程延時:數據已經寫入relaylog中了,SQL線程稍後執行。一般企業建議3-6小時,具體看公司運維人員對於故障的反應時間

執行之前在需要先stop slave,否則會報錯,無法執行;

stop slave;

設置master_delay並重新開啟複製start slave後,,MySQL從庫會清空原有的relay log,並根據上一次的應用位置,重新從主庫拉取二進位日誌。所以如果從庫原本已經是延遲從庫了,需要重新設置延遲數值時,重啟從庫複製以後,會發現原有的relay log被清空了,並重新生成了序號從1開始的relay log。但不用擔心複製會被影響,因重新生成的relay log,是根據上一次從庫停止時所應用到的主庫log pos重新從主庫拉取binlog的。

在5.7版本中,設置master_delay後,可以只停止sql_thread線程。即stop slave sql_thread,這樣從庫就不會清空relay log並重新拉取主庫binlog了。這樣可以節省一些網絡流量和IO資源。

可以在從庫設置master_delay參數,單位為秒

change master to master_delay=300;

開啟從庫

start slave;

查看延時狀態

show slave status\G

顯示結果如下

SQL_Delay: 300 SQL_Remaining_Delay: NULL

SQL_Remaining_Delay: 整數表明延遲時間,NULL表明現在沒有延時情況

延時從庫處理邏輯故障

延時從庫的恢復思路

1.監控到資料庫邏輯故障

2.停止從庫sql_thread,記錄已經回放的位置點

stop slave sql_thread;

查看信息如下

show slave status \G

顯示結果如下

Relay_Log_File: db01-relay-bin.000009 Relay_Log_Pos: 403

3.截取relaylog

起點:

show slave status \G

顯示結果如下

Relay_Log_File: db01-relay-bin.000009 Relay_Log_Pos: 403

終點:

找到drop之前的位置點,然後進行截取

show relaylog events in 'db01-relay-bin.000009';

截取命令

mysqlbinlog --start-position='403' --stop-position='xxx' db01-relay-bin.000009 > /tmp/slave.sql

4.模擬sql線程回話日誌

從庫中執行

source /tmp/slave.sql;

5.恢復業務

情況一:從庫替代主庫工作

情況二:從庫導出故障庫,還原到主庫中

相關焦點

  • 主庫n -> 從庫s - MySQL5.7多主一從(多源複製)同步配置 - 計算機...
    但本文重點是講解主從配置,因此簡略描述docker環境構建mysql容器實例。資料庫:MySQL 5.7.x (相比5.5,5.6而言,5.7同步性能更好,支持多源複製,可實現多主一從,主從庫版本應保證一致)作業系統:CentOS 7.x容器:Docker 17.09.0-ce鏡像:mysql:5.7主庫300:IP=192.168.10.212; PORT=4300; server-id=300; database=test3; table=user主庫400
  • MySQL基於MHA的FailOver過程
    ,判斷從庫節點讀取的master_log_file及read_master_log_pos節點大小,查看Retrieved_gtid_set(已接收到的gtid大小),executed_gtid_set(已執行的gtid號大小)3.數據補償4.解除從庫身份5.剩餘從庫和新主庫構建主從關係
  • SpringBoot + MyBatis + MySQL讀寫分離實踐!
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫1. 引言讀寫分離要做的事情就是對於一條SQL該選擇哪個資料庫去執行,至於誰來做選擇資料庫這件事兒,無非兩個,要麼中間件幫我們做,要麼程序自己做。
  • mysql-proxy資料庫中間件架構 | 架構師之路
    一、mysql-proxy簡介mysql-proxy是mysql官方提供的mysql中間件服務
  • DTCC:MySQl核心代碼開發經驗揭示
    /mysql-test-run.pl –gdb sample  MySQL 測試框架參考資源  • The MySQL Test Framwork, Version 2.0  Ø http://dev.mysql.com/doc/mysqltest/2.0/en/index.html  • mysqltest Language Reference
  • 歐洲最大MySQL用戶Booking.com資料庫構架探秘!
    之所以會分成三個層級是因為兩個原因:首先為了滿足異地容災的需求,各個數據中心必須要有一套完整的複製鏈路以確保程序持續穩定的運行,所以需要配備兩個以上的IM。 另一個原因是網絡帶寬的限制。我們的集群小的只有5-10臺伺服器,大的有200-300臺伺服器。目前單個伺服器的標準網絡帶寬是10G。
  • MySQL從庫實用技能教程 巧用slave_exec_mode參數
    的錯誤佔了不少的比重錯誤 1032 指的是從庫中找不到對應行的記錄錯誤 1062 指的是主鍵衝突遇到此報錯時,大多DBA會使用如下方法進行處理1 手動處理方法一: 找出引起異常的數據然後手動在從庫處理後重啟SQL線程繼續觀察;根據報錯的信息,通過mysqlbinlog
  • MySQL 5.6 的新特性
    更好的複製MySQL 複製模塊團隊主要改進了數據完整性和可用性以及性能方面的提升。Performance SchemaPerformance Schema 是在 5.5 版本中引入的,5.6 做了改進,提供新功能包括:表鎖、表I/O 以及表鎖等待。
  • MySQL進階之路:日期類型datetime和timestamp區別在哪裡?
    另外,本文的相關內容可以參考MySQL官網連結:https://dev.mysql.com/doc/refman/5.7/en/datetime.htmlhttps://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html
  • 十年資料庫專家,嘔心力作MySQL技術精粹,薪資直漲3K很輕鬆
    ,詳細講解MySQL高級使用技術。本篇注重實戰操作,幫助大家循序漸進地掌握MySQL中的各項高級技術。包括MySQL Replication 概述、Windows 環境下的MySQL主從複製、Linux環境下的MySQL複製、查看Slave的複製進度、日常管理和維護、切換主從伺服器。
  • 中學英語高級進階詞彙
    為了豐富英語單詞的表達方式,今天我們來學習幾個高級進階詞彙。fascinating [fsnet]」迷人的,有趣的,吸引人的「,相當於very interesting。這些進階詞彙可以在日常對話中使用,讓人感覺到你說話很有水平;也可以在作文中使用,為你的作文錦上添花!
  • 常用的三種修改mysql最大連接數的方法
    默認最大連接數是100,一般流量稍微大一點的論壇或網站這個連接數是遠遠不夠的,增加默認MYSQL連接數的方法有兩個方法一:進入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改為 max_connections=1000 服務裡重起MYSQL即可方法二:MySQL的最大連接數默認是100客戶端登錄:mysql
  • MySQL怎麼刪除#sql開頭的臨時表
    /* 直接刪除,表名前加#mysql50*/root@testdb 01:42:57> DROP TABLE `#mysql50##sql-ib87-856498050`;註: #mysql50#前綴是MySQL 5. 1 中引入的文件名安全編碼。另外,表名因不符合命名規範,想要執行該腳本需要將表名用反引號括起來。
  • 您的包裹「 MySQL靈魂十連」 待籤收
    主從同步流程:主節點必須啟用二進位日誌,記錄任何修改了資料庫數據的事件。從節點開啟一個線程(I/O Thread)把自己扮演成 mysql 的客戶端,通過 mysql 協議,請求主節點的二進位日誌文件中的事件 。
  • MySQL 工作、底層原理,看這一篇就夠了!
    它根據MySql AB公司提供的文件訪問層的一個抽象接口來定製一種文件訪問機制(這種訪問機制就叫存儲引擎)SQL 語句執行過程資料庫通常不會被直接使用,而是由其他程式語言通過SQL語句調用mysql,由mysql處理並返回執行結果。那麼Mysql接受到SQL語句後,又是如何處理?
  • 【資料庫】MySQL常見SQL語句
    alter database 舊名稱 modify name = 新名稱9、備份sql server創建 備份數據的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'e:\mysql
  • MySQL資料庫的句柄數過多 「too many open files」
    如果是MySQL進程,mysql會報錯:[ERROR] Error in accept: Two many open files ,這時候就要排查是否是程序異常導致打開的文件句柄過多,如果是正常的業務增長就需要修改文件句柄的限制。
  • Prometheus 監控MySQL資料庫
    Prometheus 監控mysql容器Prometheus這裡我們演示中,prometheus以及mysqld_exporter都使用容器進行運行。mysqld_exporter支持的版本為MySQL> = 5.6MariaDB> = 10.1為了方便管理,這裡mysqld_exporter就是用docker進行運行,如果是使用二進位安裝參數基本上相同這裡先到mysql
  • 京東面試:說說MySQL的架構體系
    MySQL5.5版本(mysql 版本 < 5.5版本) 以前,默認使用的存儲引擎是MyISAM 。MySQL5.5版本(mysql 版本 >= 5.5版本) 以後,默認使用的存儲引擎是InnoDB 。下面對部分相對使用多的引擎進行一個對比:在實際項目中,大多數使用InnoDB,然後是MyISAM,至於其他存儲引擎使用的非常至少。