企業級高性能MYSQL的用法---------(一)----------(基於binlog的主從複製和基於GDIT的主從複製))

企業級高性能MYSQL的用法寶典

1.數據庫的基本介紹

MySQL是一種關係型數據庫管理系統,關係數據庫將數據保存在不同的二維表中,並將這些表放入數據庫,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

  1. Mysql是開源的,所以你不需要支付額外的費用。

  2. Mysql支持大型的數據庫。可以處理擁有上千萬條記錄的大型數據庫。

  3. MySQL使用標準的SQL數據語言形式。

  4. Mysql可以允許於多個系統上,並且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

  5. Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言。

  6. MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件爲8TB。

  7. Mysql是可以定製的,採用了GPL協議,你可以修改源碼來開發自己的Mysql系統。

在這裏插入圖片描述

2.基於binlog的主從複製(異步複製)

1.主從複製原理

mysql的主從配置又叫replication,AB複製,基於binlog二進制日誌,主數據庫必須開啓binlog二進制日誌才能進行復制。

過程:

主數據庫將更改操作記錄到binlog二進制日誌(主數據庫有log dump線程和從數據庫的i/o線程傳遞binlog)。
從庫生成兩個線程,一個i/o線程,一個SQL線程
i/o線程去請求主庫的binlog,並且得到的binlog日誌寫到relay log(中繼日誌)文件中
然後主庫會生成一個log dump線程,用來給從庫的i/o線程傳binlog;SQL線程,會讀取中繼日誌文件,並解析成具體的操作執行,這樣主從的操作就一致了,而最終的數據也就一致了。

在這裏插入圖片描述
在這裏插入圖片描述
作爲異步複製,其主庫將事件寫入binlog二進制文件,dump線程將binlog文件發送出去,不保證其他從節點是否會收到binlog二進制文件。

2.實現主從複製的要求

  1. 主庫開啓binlog日誌(設置log-bin參數)
  2. 主從server-id不同
  3. 從庫服務器能連同主庫

主從複製的實現

1. 配置主庫端:

第一步:在主庫中安裝mysql,這裏我們用server1作爲主庫

yum install mysql-community-client-5.7.28-1.el7.x86_64.rpm 
mysql-community-common-5.7.28-1.el7.x86_64.rpm 
mysql-community-libs-5.7.28-1.el7.x86_64.rpm 
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm 
mysql-community-server-5.7.28-1.el7.x86_64.rpm 

在這裏插入圖片描述
在這裏插入圖片描述
第二步:編輯配置文件

vim /etc/my.cnf
最後面添加:
log-bin=mysql-bin     #開啓二進制日誌
server-id=1           #服務器ID

systemctl start mysqld	#開啓數據庫

在這裏插入圖片描述
第三步:查看初始化密碼

開啓數據庫之後會在 /var/log/mysqld.log 裏面生成一個初始密碼

cat  /var/log/mysqld.log | grep password
我的初始密碼爲:7k:OQ*Yfj.tE

在這裏插入圖片描述
第四步:安全初始化

mysql_secure_installation
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

安全初始化完成之後這時候我們就可以登錄數據庫了!!!!!

在這裏插入圖片描述
在這裏插入圖片描述

第五步:創建用戶並授權

參數解釋:

replication     表示授權複製的權限
*.*         表示所有數據庫可以進行同步
repl         表示授權名,可以隨意填寫
'192.168.43.%'   表示授權192.168.43.0/24的網段所有服務器可以同步, %表示任意

在這裏插入圖片描述
在這裏插入圖片描述

2. 配置從庫端 這裏我們用server2作爲從庫

在這裏插入圖片描述
在這裏插入圖片描述
配置從庫並開啓從庫

注意:master_log_file 和master_log_pos 的值都要依照主設備狀態中的值來設定

在這裏插入圖片描述
在這裏插入圖片描述
測試:

配置主從複製完成後,那我們來檢測一下能不能實現複製

在主庫端創建庫:
在這裏插入圖片描述
然後我們在從庫中就可以看到westos庫:
在這裏插入圖片描述
在主庫中創建表,並插入數據:
在這裏插入圖片描述
在這裏插入圖片描述

在從庫中可以看到數據:
在這裏插入圖片描述

3.基於GDIT的主從複製

1.基於GDIT的複製方式

mysql數據庫從5.6.5開始新增一種基於GDIT的複製方式。GTID (Global Transaction ID) 是對於一個已提交事務的編號,並且是一個全局唯一的編號。 GTID 實際上 是由 UUID+TID 組成的。其中 UUID 是一個 MySQL 實例的唯一標識。

  1. 主從複製,默認是通過pos複製(postion),就是說在日誌文檔裏,將用戶進行的每一項操作都進行編號(pos),每一個event都有一個起始編號、一個終止編號。我們在配置主從複製時從節點時要輸入master的log_pos值就是這個原因,要求它從哪個pos開始同步數據庫裏的數據,這也是傳統複製技術。

  2. MySQL5.6增加了GTID複製,GTID就是類似於pos的一個作用,不過它是整個mysql複製架構全局通用的,就是說在這整個mysql冗餘架構中,它們的日誌文件裏事件的GTID值是一致的。

  3. GTID (Global Transaction ID) 是對於一個已提交事務的編號,並且是一個全局唯一的編號。 GTID 實際上是由 UUID+TID 組成的。其中 UUID 是一個 MySQL 實例的唯一標識。TID 代表了該實例上已經提交的事務數量,並且隨着事務提交單調遞增。

  4. 通過GDIT保證每個主庫上提交的事務在集羣中有一個唯一的ID。這種方式強化了數據庫的主備一致性,故障恢復以及容錯能力。

pos與GTID的區別:
兩者都是日誌文件裏事件的一個標誌,如果將整個mysql集羣看作一個整體:pos就是局部的,GTID就是全局的

2.實現主從複製

第一步:在主從兩端(server1 server2)都修改配置文件:

在server1和server2中做以下操作:

vim /etc/my.cnf
  gtid_mode=ON            			開啓gtid模式
  enforce-gtid-consistency=true     強制gtid一致性,用於保證啓動gitd後事務的安全

systemctl restart mysqld	#重啓mysql

在這裏插入圖片描述
在這裏插入圖片描述

第二步:在從庫端先停掉slave,然後重新創建連接:

在這裏插入圖片描述
在這裏插入圖片描述

所以呢?去掉分號來一次看看
在這裏插入圖片描述
在這裏插入圖片描述

測試

在主庫表中添加新的信息:

在這裏插入圖片描述

從庫查看是否複製成功?來來來 看一下!!!!

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章