mysql中單機多實例主從配置(mysql雙主雙從怎麼配置)

本文目錄一覽:

mysql服務器互為主從怎麼配置

 1、修改MySQL配置文件

兩台MySQL均如要開啟binlog日誌功能,開啟方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin選項

兩台MySQL的server-ID不能一樣,默認情況下兩台MySQL的serverID都是1,需將其中一台修改為2即可

2、將192.168.1.201設為192.168.1.202的主服務器

在192.168.1.201上新建授權用戶

安全最重要!MySQL配置主從複製,主主複製

為了保障數據的安全與穩定性,我們常用數據庫的主從複製與主主複製來實現。主從複製為從機實時拷貝一份主機的數據,當主機有數據變化時,從機的數據會跟着變,當從機數據有變化時,主機數據不變;同樣地,主主複製就是,多個主機之間,只要有一個主機的數據變化了,其它主機數據也會跟着變化。

添加以下內容

如果你是使用我之前那種方式啟動的MySQL,那麼你只需要去你相關聯的宿主機的配置文件夾裡面去建立一個 my.cnf 然後寫入上面的類容就好了。

比如:我的啟動命令如下(不應該換行的,這裡為了方便查看,我給它分行了)

那麼我只需要在 /docker/mysql_master/conf 這個目錄下創建 my.cnf 文件就好了。

這個命令是需要在容器裡面執行的

docker重啟mysql會關閉容器,我們需要重啟容器。

確保在主服務器上 skip_networking 選項處於 OFF 關閉狀態, 這是默認值。 如果是啟用的,則從站無法與主站通信,並且複製失敗。

我的命令如下

在從服務器配置連接到主服務器的相關信息 (在容器裡面的mysql執行)

上面代碼的xxxxx你需要換成你的IP,docker 查看容器 IP 的命令如下:

啟動的那個從服務器的線程

測試的話,你可以在主服務器裡面,創建一個數據庫,發現從服務器裡面也有了,就成功了。

如果你還想要一個從服務器,那麼你只需要按照上面配置從服務器再配置一個就行了,新建的從服務器,會自動保存主服務器之前的數據。(測試結果) 如果你上面的主從複製搞定了,那麼這個主主複製就很簡單了。我們把上面的從服務器也改成主服務器

1)、修改上面的從服務器的my.cnf文件,和主服務器的一樣(注意這個server-id不能一樣)然後重啟服務器 2)、在從服務器裡面創建一個複製用戶創建命令一樣(這裡修改一下用戶名可以改為 repl2) 3)、在之前的主服務器裡面運行下面這個代碼

上面主要是教你怎麼搭建一個MySQL集群,但是這裡面還有很多其它的問題。也是我在學習過程中思考的問題,可能有的小夥伴上來看到文章長篇大論的看不下去,只想去實現這樣一直集群功能,所以我就把問題寫在下面了。

1)、MySQL的replication和pxc MySQL的集群方案有replication和pxc兩種,上面是基於replication實現的。

replication: 異步複製,速度快,無法保證數據的一致性。 pxc: 同步複製,速度慢,多個集群之間是事務提交的數據一致性強。

2)、MySQL的replication數據同步的原理 我們在配置的時候開啟了它的二進制日誌,每次操作數據庫的時候都會更新到這個日誌裡面去。主從通過同步這個日誌來保證數據的一致性。

3)、可否不同步全部的數據 可以配置,同步哪些數據庫,甚至是哪些表。

4)、怎麼關閉和開始同步

5)、我就我的理解畫出了,主從、主從從、主主、複製的圖。

往期推薦:

利用Docker僅花1分鐘時間安裝好MySQL服務

Linux下MySQL 5.7的離線與在線安裝(圖文)

Linux下安裝MySQL8.0(收藏!)

MySQL的主從配置步驟你會那幾個?我和大家分享下我的幾個經驗

一、登錄Master服務器,修改my.ini

,添加如下內容:[*]#數據庫ID號,

為1時表示為Master,其中master_id必須為1到232–1之間的一個正整數值;[*]server-id

=

1[*]#啟用二進制日誌;[*]log-bin=mysql-bin[*]#需要同步的二進制數據庫名;[*]binlog-do-db=ultrax[*]#不同步的二進制數據庫名,如果不設置可以將其注釋掉;[*]binlog-ignore-db=mysql[*]#設定生成的log文件名;[*]log-bin=”E:/Database/materlog”[*]#把更新的記錄寫到二進制文件中;[*]log-slave-updates[*]#跳過錯誤,繼續執行複製;[*]slave-skip-errors配置完重啟

mysql

mysql主從原理如何配置

1.在主數據庫服務器為從服務器添加一個擁有權限訪問主庫的用戶:

GRANT REPLICATION SLAVE ON *.* TO ‘ test’@’%’ IDENTIFIED BY ‘test’;

(%表示允許所有IP,可設置指定從服務器IP)

添加用戶後:

可在從服務器上用mysql -h127.0.0.1 -utest -ptest; 來測試是否有權限訪問主數據庫

2.在主據庫配置文件加上:

#master config

server-id = 1

log-bin = mysql-bin

3.在從服務器數據庫配置文件:

server-id = 2

master-host = 10.0.0.199

master-user = test

master-password = test

replicate-do-db = test

master-port = 3306

log-bin = mysql-bin

如果你的一切配置順利

你在從服務器上輸入命令:show slave status\G

成功情況:

Slave_IO_Running:yes

Slave_SQL_Running:yes

在主服務器上輸入show master status

mysql 怎麼配置主從數據庫

5.6mysql怎麼進行主從配置

在主數據庫中創建新數據庫rep_test。

然後編輯主數據庫的my.ini文件

在[mysqld]節點中增加如下內容:

server-id=1 #指定唯一的ID,1至32,必須的

log-bin=mysql-log-bin #指定二進制日誌存放路徑,必須的

binlog-do-db=rep_test #指定要同步的數據庫,必須的

#binlog-ignore-db=mysql #指定不要同步的數據庫,如果指定了binlog-do-db就不用再指定該項

MySQL 主從,5 分鐘帶你掌握

MySQL 主從一直是面試常客,裡面的知識點雖然基礎,但是能回答全的同學不多。

比如樓哥之前面試小米,就被問到過主從複製的原理,以及主從延遲的解決方案,因為回答的非常不錯,給面試官留下非常好的印象。你之前面試,有遇到過哪些 MySQL 主從的問題呢?

所謂 MySQL 主從,就是建立兩個完全一樣的數據庫,一個是主庫,一個是從庫, 主庫對外提供讀寫的操作,從庫對外提供讀的操作 ,下面是一主一從模式:

對於數據庫單機部署,在 4 核 8G 的機器上運行 MySQL 5.7 時,大概可以支撐 500 的 TPS 和 10000 的 QPS, 當遇到一些活動時,查詢流量驟然,就需要進行主從分離。

大部分系統的訪問模型是讀多寫少,讀寫請求量的差距可能達到幾個數量級,所以我們可以通過一主多從的方式, 主庫只負責寫入和部分核心邏輯的查詢,多個從庫只負責查詢,提升查詢性能,降低主庫壓力。

MySQL 主從還能做到服務高可用,當主庫宕機時,從庫可以切成主庫,保證服務的高可用,然後主庫也可以做數據的容災備份。

整體場景總結如下:

MySQL 的主從複製是依賴於 binlog 的,也就是記錄 MySQL 上的所有變化並以二進制形式保存在磁盤上二進制日誌文件。

主從複製就是將 binlog 中的數據從主庫傳輸到從庫上,一般這個過程是異步的,即主庫上的操作不會等待 binlog 同步的完成。

詳細流程如下:

當主庫和從庫數據同步時,突然中斷怎麼辦?因為主庫與從庫之間維持了一個長鏈接,主庫內部有一個線程,專門服務於從庫的這個長鏈接的。

對於下面的情況,假如主庫執行如下 SQL,其中 a 和 create_time 都是索引:

我們知道,數據選擇了 a 索引和選擇 create_time 索引,最後 limit 1 出來的數據一般是不一樣的。

所以就會存在這種情況:在 binlog = statement 格式時,主庫在執行這條 SQL 時,使用的是索引 a,而從庫在執行這條 SQL 時,使用了索引 create_time,最後主從數據不一致了。

那麼我們改如何解決呢?

可以把 binlog 格式修改為 row,row 格式的 binlog 日誌記錄的不是 SQL 原文,而是兩個 event:Table_map 和 Delete_rows。

Table_map event 說明要操作的表,Delete_rows event用於定義要刪除的行為,記錄刪除的具體行數。 row 格式的 binlog 記錄的就是要刪除的主鍵 ID 信息,因此不會出現主從不一致的問題。

但是如果 SQL 刪除 10 萬行數據,使用 row 格式就會很占空間的,10 萬條數據都在 binlog 裡面,寫 binlog 的時候也很耗 IO。但是 statement 格式的 binlog 可能會導致數據不一致。

設計 MySQL 的大叔想了一個折中的方案,mixed 格式的 binlog,其實就是 row 和 statement 格式混合使用, 當 MySQL 判斷可能數據不一致時,就用 row 格式,否則使用就用 statement 格式。

有時候我們遇到從數據庫中獲取不到信息的詭異問題時,會糾結於代碼中是否有一些邏輯會把之前寫入的內容刪除,但是你又會發現,過了一段時間再去查詢時又可以讀到數據了,這基本上就是主從延遲在作怪。

主從延遲,其實就是“從庫回放” 完成的時間,與 “主庫寫 binlog” 完成時間的差值, 會導致從庫查詢的數據,和主庫的不一致 。

談到 MySQL 數據庫主從同步延遲原理,得從 MySQL 的主從複製原理說起:

總結一下主從延遲的主要原因 :主從延遲主要是出現在 “relay log 回放” 這一步,當主庫的 TPS 並發較高,產生的 DDL 數量超過從庫一個 SQL 線程所能承受的範圍,那麼延時就產生了,當然還有就是可能與從庫的大型 query 語句產生了鎖等待。

我們一般會把從庫落後的時間作為一個重點的數據庫指標做監控和報警,正常的時間是在毫秒級別,一旦落後的時間達到了秒級別就需要告警了。

解決該問題的方法,除了縮短主從延遲的時間,還有一些其它的方法,基本原理都是盡量不查詢從庫。

具體解決方案如下:

在實際應用場景中,對於一些非常核心的場景,比如庫存,支付訂單等,需要直接查詢從庫,其它非核心場景,就不要去查主庫了。

兩台機器 A 和 B,A 為主庫,負責讀寫,B 為從庫,負責讀數據。

如果 A 庫發生故障,B 庫成為主庫負責讀寫,修復故障後,A 成為從庫,主庫 B 同步數據到從庫 A。

一台主庫多台從庫,A 為主庫,負責讀寫,B、C、D為從庫,負責讀數據。

如果 A 庫發生故障,B 庫成為主庫負責讀寫,C、D負責讀,修復故障後,A 也成為從庫,主庫 B 同步數據到從庫 A。

原創文章,作者:MY254,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127961.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
MY254的頭像MY254
上一篇 2024-10-03 23:24
下一篇 2024-10-03 23:24

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • 如何在dolphinscheduler中運行chunjun任務實例

    本文將從多個方面對dolphinscheduler運行chunjun任務實例進行詳細的闡述,包括準備工作、chunjun任務配置、運行結果等方面。 一、準備工作 在運行chunju…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 如何使用MySQL字段去重

    本文將從多個方面為您詳細介紹如何使用MySQL字段去重並給出相應的代碼示例。 一、SELECT DISTINCT語句去重 MySQL提供了SELECT DISTINCT語句,通過在…

    編程 2025-04-27

發表回復

登錄後才能評論