首頁 資料庫 mysql教程 MySQL主从复制不一致的解决办法

MySQL主从复制不一致的解决办法

Jun 07, 2016 pm 05:52 PM
主從複製

稍微有些规模的网站,基本上都会配置mysql主从复制,一方面用mysql的主从做数据库的读写分离,另一方面mysql本身的单机备份不是很强,一般采用主从架构,在从上进行数据备份。

在MySQL主从复制程中或多少出现一些主从不同步的情况,本文将对数据主从不同步的情况进行简单的总结,请注意本文主要从数据库层面上探讨数据库的主从不一致的情况。
1.网络的延迟

由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。

2.主从两台机器的负载不一致

由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况。

3.max_allowed_packet设置不一致

主数据库上面设置的max_allowed_packet比从数据库大,当一个大的sql语句,能在主数据库上面执行完毕,从数据库上面设置过小,无法执行,导致的主从不一致。

4.key自增键开始的键值跟自增步长设置不一致引起的主从不一致。

5.mysql异常宕机情况下,如果未设置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出现binlog或者relaylog文件出现损坏,导致主从不一致。

6.mysql本身的bug引起的主从不同步。

7.版本不一致,特别是高版本是主,低版本为从的情况下,主数据库上面支持的功能,从数据库上面不支持该功能。

以上就是常见的一些主从不同步的情况。或许还有其他的一些不同步的情况,请说出你所遇到的主从不一致的情况。

基于以上情况,先保证max_allowed_packet、自增键开始点和增长点设置一致,再者牺牲部分性能在主上面开启sync_binlog,对于采用innodb的库,推荐配置下面的内容

 代码如下 复制代码

1、innodb_flush_logs_at_trx_commit = 1
2、innodb-support_xa = 1 # Mysql 5.0 以上
3、innodb_safe_binlog      # Mysql 4.0

同时在从数据库上面推荐加入下面两个参数

1、skip_slave_start
2、read_only

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
PHP實作MySQL資料庫主從複製的方法 PHP實作MySQL資料庫主從複製的方法 May 17, 2023 am 08:18 AM

隨著互聯網的快速發展,Web應用程式越來越多地整合了資料庫操作。 MySQL作為一款世界知名的關聯式資料庫系統,使用廣泛。在高並發的Web應用中,MySQL主從複製是提高資料庫效能和可用性的重要方式。本文將介紹如何使用PHP實作MySQL資料庫主從複製。一、什麼是MySQL主從複製MySQL主從複製是指將一個MySQL資料庫伺服器的資料複製到另一個伺服器上

建構高可用的MySQL叢集:主從複製與負載平衡的最佳實務指南 建構高可用的MySQL叢集:主從複製與負載平衡的最佳實務指南 Sep 09, 2023 am 10:57 AM

建立高可用的MySQL叢集:主從複製與負載平衡的最佳實踐指南近年來,隨著互聯網的快速發展,資料庫已成為大部分Web應用的核心資料儲存和處理引擎之一。在這個場景下,高可用性和負載平衡成為了資料庫架構設計中的重要考量。而MySQL作為最受歡迎的開源關係型資料庫之一,其叢集化部署方案備受關注。本文將介紹如何透過MySQL主從複製與負載平衡實現高可用的資料庫集群

MySQL中的資料主從複製技術 MySQL中的資料主從複製技術 Jun 14, 2023 pm 02:10 PM

MySQL資料庫是一種非常流行的關聯式資料庫管理系統,支援多種資料複製技術,其中較常用的是主從複製技術。本文將介紹MySQL中的資料主從複製技術,包括原理、實作方法、常見問題及因應措施等面向。一、主從複製技術的原理MySQL中的主從複製技術可以將一個MySQL資料庫的資料複製到其他伺服器上,以實現資料備份、負載平衡、讀寫分離等功能。它的基本原理是將主資料庫

Redis的主從複製功能詳解 Redis的主從複製功能詳解 May 11, 2023 am 10:00 AM

Redis是一個開源的基於記憶體的鍵值儲存系統,常用於快取、佇列和即時資料處理等場景。在大規模應用時,為了提高Redis的可用性和效能,常常需要採用分散式架構,其中主從複製是常用的機制。本文將介紹Redis的主從複製功能,包括定義、原理、配置和應用場景等面向。一、定義Redis的主從複製是指將一個Redis節點(即主節點)的資料自動同步到其他節點(即從節點

如何配置MySQL資料庫的主從複製? 如何配置MySQL資料庫的主從複製? Jul 13, 2023 pm 10:05 PM

如何配置MySQL資料庫的主從複製? MySQL資料庫的主從複製是一種常見的資料備份和高可用性解決方案。透過配置主從複製,可以實現將資料從一個MySQL伺服器(主伺服器)同步到另一個(從伺服器),從而提高資料庫的可用性和效能。以下將介紹如何在MySQL資料庫中設定主從複製,並提供對應的程式碼範例。確保MySQL伺服器安裝並啟動首先,確保你的系統中已經安裝了MyS

MySQL中的主從複製和高可用架構 MySQL中的主從複製和高可用架構 Sep 09, 2023 pm 12:03 PM

MySQL中的主從複製和高可用架構隨著互聯網應用和資料量的不斷增長,資料庫的高可用性和可擴展性變得越來越重要。 MySQL作為一種使用廣泛的開源關係型資料庫,提供了主從複製和高可用架構的解決方案。主從複製是指將一個MySQL資料庫實例作為主庫(master),並將其資料複製到一個或多個從庫(slave)的過程。這種複製的方式可以實現資料的冗餘備份以及讀寫分離,

PHP實作Memcached資料庫主從複製的方法 PHP實作Memcached資料庫主從複製的方法 May 15, 2023 pm 06:40 PM

Memcached是一個開源的高效能分散式記憶體物件快取系統,可用於加快web應用程序,尤其是在大規模資料快取方面表現良好。對於該系統而言,主從複製是一種非常重要的功能,它可以用於保證資料的可靠性和高可用性。本文將介紹如何使用PHP實作Memcached資料庫主從複製。主從模式介紹主從模式是Memcached伺服器的一種分散式結構,它由至少兩個伺服器組成:一個

MySQL主從複製的工作原理與負載平衡技術有何異同? MySQL主從複製的工作原理與負載平衡技術有何異同? Sep 09, 2023 pm 06:28 PM

MySQL主從複製是一種常用的資料庫複製技術,它透過將一個MySQL資料庫伺服器作為主伺服器(Master),其他MySQL伺服器作為從伺服器(Slave),實現資料的同步複製。主伺服器負責接收和處理客戶端的寫入操作,並將這些寫入操作以二進位形式寫入二進位日誌(BinaryLog)。從伺服器則透過讀取主伺服器上的二進位日誌,並將其中的操作重新執行,從而實現數據

See all articles