mysql主從服務器配置的優勢,mysql主主配置

本文目錄一覽:

mysql主從複製搭建有幾個ip

在實際企業應用環境當中,單台mysql數據庫是不足以滿足日後業務需求的。譬如服務器發生故障,沒有備份服務器來提供服務的話,業務就得停止。介於這種情況,我們來學習一下mysql主從複製。

使用mysql主從複製的好處有:

1、採用主從服務器這種架構,穩定性得以提升。如果主服務器發生故障,我們可以使用從服務器來提供服務。

2、在主從服務器上分開處理用戶的請求,可以提升數據處理效率。

3、將主服務器上的數據複製到從服務器上,保護數據免受意外的損失。

環境描述:

新企業要搭建架構為主從複製的mysql數據庫。

主服務器(mysql-master):IP地址:192.168.48.128,mysql已安裝,沒有用戶數據。

從服務器(mysql-slave):IP地址:192.168.48.130,mysql已安裝,沒有用戶數據。

主從服務器均可正常提供服務。

主從複製配置如下:

在主服務器上操作:

1)、確保/etc/my.cnf中有如下參數,沒有的話需手工添加,並重啟mysql服務。

[mysqld]

log-bin=mysql-bin 啟動二進制文件

server-id=1 服務器ID

2)、登錄mysql,在mysql中添加一個backup的賬號,並授權給從服務器。

[root@localhost ~]# mysql -uroot –p123456 登錄mysql

mysql grant replication slave on *.* to ‘backup’@’192.168.48.130’ identified by ‘backup’; 創建backup用戶,並授權給192.168.48.130使用。

3)、查詢主數據庫狀態,並記下FILE及Position的值,這個在後面配置從服務器的時候要用到。

mysql主主複製 優缺點

mysql複製主要有三種方式:

1. 基於SQL語句的複製(statement-based replication, SBR),

(1) 優點:

歷史悠久,技術成熟。

產生的binlog文件較小,比較節省空間。

binlog中包含了所有數據庫更改信息,可以據此來審核數據庫的安全等情況。

binlog可以用於實時的還原,而不僅僅用於複製。

主從版本可以不一樣,從服務器版本可以比主服務器版本高。

(2) 缺點:

不是所有的UPDATE語句都能被複制,尤其是包含不確定操作的時候。

調用具有不確定因素的 UDF 時複製也可能出問題

使用以下函數的語句也無法被複制:

* LOAD_FILE()

* UUID()

* USER()

* FOUND_ROWS()

* SYSDATE() (除非啟動時啟用了 –sysdate-is-now 選項)

INSERT … SELECT 會產生比 RBR 更多的行級鎖

2.基於行的複製(row-based replication, RBR),

(1)優點:

任何情況都可以被複制,這對複製來說是最安全可靠的

多數情況下,從服務器上的表如果有主鍵的話,複製就會快了很多

複製以下幾種語句時的行鎖更少:

* INSERT … SELECT

* 包含 AUTO_INCREMENT 字段的 INSERT

* 沒有附帶條件或者並沒有修改很多記錄的 UPDATE 或 DELETE 語句

執行 INSERT,UPDATE,DELETE 語句時鎖更少

從服務器上採用多線程來執行複製成為可能。

(2)缺點:

binlog 文件太大

複雜的回滾時 binlog 中會包含大量的數據

主服務器上執行 UPDATE 語句時,所有發生變化的記錄都會寫到 binlog 中,而 SBR 只會寫一次,這會導致頻繁發生 binlog 的並發寫問題

UDF 產生的大 BLOB 值會導致複製變慢

無法從 binlog 中看到都複製了寫什麼語句,無法進行審計。

3. 混合模式複製(mixed-based replication, MBR)。

是上面兩種方式的折中,對於能用

對應的,binlog的格式也有三種:STATEMENT,ROW,MIXED。

安全最重要!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 主從 博客園

mysql主從是用於數據災備。即為主數據庫服務器增加一個備服務器,兩個服務器之間通過mysql主從複製進行同步,這樣一台服務器有問題的情況下可以切換到另一台服務器繼續使用。

mysql架構中,一主多從,雙主,級聯這三種的區別和優缺點

最大區別是 主從是對主操作數據,從會實時同步數據。反之對從操作,主不會同步數據,還有可能造成數據紊亂,導致主從失效。 主主則是無論對那一台操作,另一個都會同步數據。一般用作高容災方案

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-06 11:30
下一篇 2024-12-06 11:30

相關推薦

  • 如何修改mysql的端口號

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

    編程 2025-04-29
  • 程序化建模的優勢和劣勢

    程序化建模是指通過計算機編製程序實現對各種複雜系統的建模和仿真過程。隨着計算機技術和計算能力的不斷提高,程序化建模在眾多領域得到了廣泛應用,例如計算機輔助設計、製造、仿真、數據分析…

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

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

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

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

    編程 2025-04-29
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

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

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

    編程 2025-04-28
  • Python在線編輯器的優勢與實現方式

    Python在線編輯器是Python語言愛好者的重要工具之一,它可以讓用戶方便快捷的在線編碼、調試和分享代碼,無需在本地安裝Python環境。本文將從多個方面對Python在線編輯…

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

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

    編程 2025-04-28
  • 開源Python CMS的優勢和應用範圍

    開源Python CMS是一種基於Python架構的內容管理系統。它不僅具有高效可靠的核心框架,還有大量的插件和現成的模板,可以充分滿足各種網站需求,使開發人員輕鬆地進行網站設計和…

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

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

    編程 2025-04-27

發表回復

登錄後才能評論