本文目錄一覽:
- 1、mysql主從複製搭建有幾個ip
- 2、mysql主主複製 優缺點
- 3、安全最重要!MySQL配置主從複製,主主複製
- 4、為什麼需要用到mysql 主從 博客園
- 5、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