本文目錄一覽:
- 1、MySQL如何實現高可用?
- 2、mysql-mmm創建的虛擬ip有什麼要求
- 3、MySQL MMM 支持 GTID嗎
- 4、扛得住的MySQL數據庫架構
- 5、mysql和mongodb的關係區別是什麼
- 6、請教mysql高手
MySQL如何實現高可用?
1. 概述
我們在考慮MySQL數據庫的高可用的架構時,主要要考慮如下幾方面:
關於對高可用的分級在這裡我們不做詳細的討論,這裡只討論常用高可用方案的優缺點以及高可用方案的選型。
2. 高可用方案
2.1. 主從或主主半同步複製
使用雙節點數據庫,搭建單向或者雙向的半同步複製。在5.7以後的版本中,由於lossless replication、logical多線程複製等一些列新特性的引入,使得MySQL原生半同步複製更加可靠。
常見架構如下:
通常會和proxy、keepalived等第三方軟件同時使用,即可以用來監控數據庫的 健康 ,又可以執行一系列管理命令。如果主庫發生故障,切換到備庫後仍然可以繼續使用數據庫。
優點:
缺點:
2.2. 半同步複製優化
半同步複製機制是可靠的。如果半同步複製一直是生效的,那麼便可以認為數據是一致的。但是由於網絡波動等一些客觀原因,導致半同步複製發生超時而切換為異步複製,那麼這時便不能保證數據的一致性。所以儘可能的保證半同步複製,便可提高數據的一致性。
該方案同樣使用雙節點架構,但是在原有半同複製的基礎上做了功能上的優化,使半同步複製的機制變得更加可靠。
可參考的優化方案如下:
半同步複製由於發生超時後,複製斷開,當再次建立起複制時,同時建立兩條通道,其中一條半同步複製通道從當前位置開始複製,保證從機知道當前主機執行的進度。另外一條異步複製通道開始追補從機落後的數據。當異步複製通道追趕到半同步複製的起始位置時,恢復半同步複製。
搭建兩條半同步複製通道,其中連接文件服務器的半同步通道正常情況下不啟用,當主從的半同步複製發生網絡問題退化後,啟動與文件服務器的半同步複製通道。當主從半同步複製恢復後,關閉與文件服務器的半同步複製通道。
優點:
缺點:
2.3. 高可用架構優化
將雙節點數據庫擴展到多節點數據庫,或者多節點數據庫集群。可以根據自己的需要選擇一主兩從、一主多從或者多主多從的集群。
由於半同步複製,存在接收到一個從機的成功應答即認為半同步複製成功的特性,所以多從半同步複製的可靠性要優於單從半同步複製的可靠性。並且多節點同時宕機的幾率也要小於單節點宕機的幾率,所以多節點架構在一定程度上可以認為高可用性是好於雙節點架構。
但是由於數據庫數量較多,所以需要數據庫管理軟件來保證數據庫的可維護性。可以選擇MMM、MHA或者各個版本的proxy等等。常見方案如下:
MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然後將所有其他的slave重新指向新的master,整個故障轉移過程對應用程序完全透明。
MHA Node運行在每台MySQL服務器上,主要作用是切換時處理二進制日誌,確保切換盡量少丟數據。
MHA也可以擴展到如下的多節點集群:
優點:
缺點:
Zookeeper使用分布式算法保證集群數據的一致性,使用zookeeper可以有效的保證proxy的高可用性,可以較好的避免網絡分區現象的產生。
優點:
缺點:
2.4. 共享存儲
共享存儲實現了數據庫服務器和存儲設備的解耦,不同數據庫之間的數據同步不再依賴於MySQL的原生複製功能,而是通過磁盤數據同步的手段,來保證數據的一致性。
SAN的概念是允許存儲設備和處理器(服務器)之間建立直接的高速網絡(與LAN相比)連接,通過這種連接實現數據的集中式存儲。常用架構如下:
使用共享存儲時,MySQL服務器能夠正常掛載文件系統並操作,如果主庫發生宕機,備庫可以掛載相同的文件系統,保證主庫和備庫使用相同的數據。
優點:
缺點:
DRBD是一種基於軟件、基於網絡的塊複製存儲解決方案,主要用於對服務器之間的磁盤、分區、邏輯卷等進行數據鏡像,當用戶將數據寫入本地磁盤時,還會將數據發送到網絡中另一台主機的磁盤上,這樣的本地主機(主節點)與遠程主機(備節點)的數據就可以保證實時同步。常用架構如下:
當本地主機出現問題,遠程主機上還保留着一份相同的數據,可以繼續使用,保證了數據的安全。
DRBD是linux內核模塊實現的快級別的同步複製技術,可以與SAN達到相同的共享存儲效果。
優點:
缺點:
2.5. 分布式協議
分布式協議可以很好解決數據一致性問題。比較常見的方案如下:
MySQL cluster是官方集群的部署方案,通過使用NDB存儲引擎實時備份冗餘數據,實現數據庫的高可用性和數據一致性。
優點:
缺點:
基於Galera的MySQL高可用集群, 是多主數據同步的MySQL集群解決方案,使用簡單,沒有單點故障,可用性高。常見架構如下:
優點:
缺點:
Paxos 算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。這個算法被認為是同類算法中最有效的。Paxos與MySQL相結合可以實現在分布式的MySQL數據的強一致性。常見架構如下:
優點:
缺點:
3. 總結
隨着人們對數據一致性的要求不斷的提高,越來越多的方法被嘗試用來解決分布式數據一致性的問題,如MySQL自身的優化、MySQL集群架構的優化、Paxos、Raft、2PC算法的引入等等。
而使用分布式算法用來解決MySQL數據庫數據一致性的問題的方法,也越來越被人們所接受,一系列成熟的產品如PhxSQL、MariaDB Galera Cluster、Percona XtraDB Cluster等越來越多的被大規模使用。
隨着官方MySQL Group Replication的GA,使用分布式協議來解決數據一致性問題已經成為了主流的方向。期望越來越多優秀的解決方案被提出,MySQL高可用問題可以被更好的解決。
分布式解決方案 tidb
多主 多備 master lvs做vip 讀寫分離中間件
mysql-mmm創建的虛擬ip有什麼要求
配置了mysql-mmm後,tomcat連接數據庫時,寫的是虛擬ip還是實際ip
mmm_agent.conf
include mmm_common.conf
# include 包含了mmm_common.conf配置文件的內容
# The ‘this’ variable refers to this server. Proper operation requires
# that ‘this’ server (db1 by default), as well as all other servers, have the
# proper IP addresses set in mmm_common.conf.
this db1
# this 指定了當前主機為db1
mmm_common.conf
active_master_role writer
# One should set read-only=1 in the configuration of all MySQL servers,
# MMM will change that to read-only=0 on the host with the active_master_role.
# 設置寫角色的時候,會執行set global read_only = 0;
cluster_interface eth0
# network interface on which the IPs of the roles should be configured
# 配置的網絡接口,注意不能指定為子接口,例如eth0:0
agent_port 9989
# Port on which mmm_agentd listens
# mmm_agentd的監聽端口,默認為9989
mysql_port 3306
# Port on which mysqld is listening
# 監聽的mysql端口,默認3306
pid_path /var/run/mysql-mmm/mmm_agentd.pid
# Location of pid-file
# pid文件位置,如果配置cluster模式,需要增加cluster標識.
bin_path /usr/libexec/mysql-mmm/
# Path to directory containing MMM binaries
# mmm執行文件路徑,注意:2.0版本和2.1版本的路徑不一樣.
replication_user replication
replication_password XXX
MySQL MMM 支持 GTID嗎
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之後可以在用check table命令來進行檢查。在新版本的phpMyAdmin裡面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為缺省的數據表類型,這裡以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local裡面啟動MySQL服務器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對於使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對於使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數據庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local裡面,必須確認在執行這條指令時MySQL服務器必須沒有啟動!檢測修復所有數據庫(表)
扛得住的MySQL數據庫架構
數據庫優化是系統工程,性能的提升靠整體。本課程將面面俱到的講解提升數據庫性能的各種因素,讓你在最短的時間從小白到資深,將數據庫整體架構瞭然於胸
第1章 實例和故事 試看7 節 | 50分鐘
決定電商11大促成敗的各個關鍵因素。
收起列表
視頻:1-1 什麼決定了電商雙11大促的成敗 (04:04)試看
視頻:1-2 在雙11大促中的數據庫服務器 (06:03)
視頻:1-3 在大促中什麼影響了數據庫性能 (07:55)
視頻:1-4 大錶帶來的問題 (14:13)
視頻:1-5 大事務帶來的問題 (17:27)
作業:1-6 【討論題】在日常工作中如何應對高並發大數據量對數據庫性能挑戰
作業:1-7 【討論題】在MySQL中事務的作用是什麼?
第2章 什麼影響了MySQL性能 試看30 節 | 210分鐘
詳細介紹影響性能各個因素,包括硬件、操作系統等等。
收起列表
視頻:2-1 影響性能的幾個方面 (04:08)試看
視頻:2-2 CPU資源和可用內存大小 (10:54)
視頻:2-3 磁盤的配置和選擇 (04:44)
視頻:2-4 使用RAID增加傳統機器硬盤的性能 (11:30)
視頻:2-5 使用固態存儲SSD或PCIe卡 (08:35)
視頻:2-6 使用網絡存儲SAN和NAS (07:16)
視頻:2-7 總結:服務器硬件對性能的影響 (03:27)
視頻:2-8 操作系統對性能的影響-MySQL適合的操作系統 (03:50)
視頻:2-9 CentOS系統參數優化 (11:43)
視頻:2-10 文件系統對性能的影響 (03:29)
視頻:2-11 MySQL體系結構 (05:29)
視頻:2-12 MySQL常用存儲引擎之MyISAM (13:23)
視頻:2-13 MySQL常用存儲引擎之Innodb (10:44)
視頻:2-14 Innodb存儲引擎的特性(1) (15:24)
視頻:2-15 Innodb存儲引擎的特性(2) (08:44)
視頻:2-16 MySQL常用存儲引擎之CSV (09:19)
視頻:2-17 MySQL常用存儲引擎之Archive (06:08)
視頻:2-18 MySQL常用存儲引擎之Memory (10:40)
視頻:2-19 MySQL常用存儲引擎之Federated (11:21)
視頻:2-20 如何選擇存儲引擎 (04:33)
視頻:2-21 MySQL服務器參數介紹 (08:04)
視頻:2-22 內存配置相關參數 (09:24)
視頻:2-23 IO相關配置參數 (10:01)
視頻:2-24 安全相關配置參數 (06:13)
視頻:2-25 其它常用配置參數 (03:41)
視頻:2-26 數據庫設計對性能的影響 (04:36)
視頻:2-27 總結 (01:32)
作業:2-28 【討論題】你會如何配置公司的數據庫服務器硬件?
作業:2-29 【討論題】你認為對數據庫性能影響最大的因素是什麼
作業:2-30 【討論題】做為電商的DBA,建議開發選哪種MySQL存儲引擎
第3章 MySQL基準測試8 節 | 65分鐘
了解基準測試,MySQL基準測試工具介紹及實例演示。
收起列表
視頻:3-1 什麼是基準測試 (02:20)
視頻:3-2 如何進行基準測試 (09:00)
視頻:3-3 基準測試演示實例 (11:18)
視頻:3-4 Mysql基準測試工具之mysqlslap (13:30)
視頻:3-5 Mysql基準測試工具之sysbench (11:07)
視頻:3-6 sysbench基準測試演示實例 (17:11)
作業:3-7 【討論題】MySQL基準測試是否可以體現出業務系統的真實性能
作業:3-8 【實操題】參數不同取值對性能的影響
第4章 MySQL數據庫結構優化14 節 | 85分鐘
詳細介紹數據庫結構設計、範式和反範式設計、物理設計等等。
收起列表
視頻:4-1 數據庫結構優化介紹 (06:52)
視頻:4-2 數據庫結構設計 (14:49)
視頻:4-3 需求分析及邏輯設計 (11:00)
視頻:4-4 需求分析及邏輯設計-反範式化設計 (06:44)
視頻:4-5 範式化設計和反範式化設計優缺點 (04:06)
視頻:4-6 物理設計介紹 (05:17)
視頻:4-7 物理設計-數據類型的選擇 (18:59)
視頻:4-8 物理設計-如何存儲日期類型 (13:37)
視頻:4-9 物理設計-總結 (02:37)
圖文:4-10 說明MyISAM和Innodb存儲引擎的5點不同
作業:4-11 【討論題】判斷表結構是否符合第三範式要求?如不滿足要如何修改
作業:4-12 【實操題】請設計一個電商訂單系統的數據庫結構
作業:4-13 【討論題】以下那個字段適合作為Innodb表的主建使用
作業:4-14 【討論題】請為下表中的字段選擇合適的數據類型
第5章 MySQL高可用架構設計 試看24 節 | 249分鐘
詳細介紹二進制日誌及其對複製的影響、GTID的複製、MMM、MHA等等。
收起列表
視頻:5-1 mysql複製功能介紹 (04:58)
視頻:5-2 mysql二進制日誌 (22:05)
視頻:5-3 mysql二進制日誌格式對複製的影響 (09:37)
視頻:5-4 mysql複製工作方式 (03:08)
視頻:5-5 基於日誌點的複製 (20:06)
視頻:5-6 基於GTID的複製 (22:32)
視頻:5-7 MySQL複製拓撲 (13:58)
視頻:5-8 MySQL複製性能優化 (09:23)
視頻:5-9 MySQL複製常見問題處理 (08:31)
視頻:5-10 什麼是高可用架構 (14:09)
視頻:5-11 MMM架構介紹 (08:09)
視頻:5-12 MMM架構實例演示(上) (09:16)試看
視頻:5-13 MMM架構實例演示(下) (18:55)
視頻:5-14 MMM架構的優缺點 (08:01)
視頻:5-15 MHA架構介紹 (10:02)
視頻:5-16 MHA架構實例演示(1) (13:11)
視頻:5-17 MHA架構實例演示(2) (16:54)
視頻:5-18 MHA架構優缺點 (05:14)
視頻:5-19 讀寫分離和負載均衡介紹 (11:42)
視頻:5-20 MaxScale實例演示 (18:25)
作業:5-21 【討論題】MySQL主從複製為什麼會有延遲,延遲又是如何產生
作業:5-22 【實操題】請為某互聯網項目設計99.99%MySQL架構
作業:5-23 【討論題】如何給一個已經存在的主從複製集群新增一個從節點
作業:5-24 【討論題】給你三台數據庫服務器,你如何設計它的高可用架構
第6章 數據庫索引優化8 節 | 65分鐘
介紹BTree索引和Hash索引,詳細介紹索引的優化策略等等。
收起列表
視頻:6-1 Btree索引和Hash索引 (20:09)
視頻:6-2 安裝演示數據庫 (01:19)
視頻:6-3 索引優化策略(上) (17:33)
視頻:6-4 索引優化策略(中) (13:02)
視頻:6-5 索引優化策略(下) (12:30)
作業:6-6 【討論題】一列上建立了索引,查詢時就一定會用到這個索引嗎
作業:6-7 【討論題】在定義聯合索引時為什麼需要注意聯合索引中的順序
作業:6-8 【實操題】SQL建立索引,你會考慮那些因素
第7章 SQL查詢優化9 節 | 62分鐘
詳細介紹慢查詢日誌及示例演示,MySQL查詢優化器介紹及特定SQL的查詢優化等。
收起列表
視頻:7-1 獲取有性能問題SQL的三種方法 (05:14)
視頻:7-2 慢查詢日誌介紹 (08:57)
視頻:7-3 慢查詢日誌實例 (08:27)
視頻:7-4 實時獲取性能問題SQL (02:21)
視頻:7-5 SQL的解析預處理及生成執行計劃 (16:02)
視頻:7-6 如何確定查詢處理各個階段所消耗的時間 (09:35)
視頻:7-7 特定SQL的查詢優化 (10:34)
作業:7-8 【討論題】如何跟據需要對一個大表中的數據進行刪除或更新
作業:7-9 【討論題】如何獲取需要優化的SQL查詢
第8章 數據庫的分庫分表5 節 | 48分鐘
詳細介紹數據庫分庫分表的實現原理及演示案例等。
收起列表
視頻:8-1 數據庫分庫分表的幾種方式 (04:34)
視頻:8-2 數據庫分片前的準備 (13:53)
視頻:8-3 數據庫分片演示(上) (11:40)
視頻:8-4 數據庫分片演示(下) (17:02)
作業:8-5 【討論題】對於大表來說我們一定要進行分庫分表嗎
第9章 數據庫監控7 節 | 29分鐘
介紹數據庫可用性監控、性能監控、MySQL主從複製監控等
收起列表
視頻:9-1 數據庫監控介紹 (04:46)
視頻:9-2 數據庫可用性監控 (07:20)
視頻:9-3 數據庫性能監控 (09:39)
視頻:9-4 MySQL主從複製監控 (06:16)
作業:9-5 【討論題】QPS是否可以真實的反映出數據庫的負載情況
作業:9-6 【討論題】如何正確評估數據庫的當前負載狀況
作業:9-7 【實操題】開發一個簡單監控腳本,監控mySQL數據庫阻塞情況
mysql和mongodb的關係區別是什麼
1、數據庫模型:mysql是關係型數據庫,mongodb是非關係型數據庫
2、存儲方式:mysql不同的存儲引擎有不同的存儲方式,mongodb為虛擬內存+持久化
3、查詢語句:mysql為傳統的sql語句,mongodb有獨特的自有查詢方式
4、架構特點:mysql有常見的單點,m-s、mha、mmm、cluster等架構特點,mongodb可以通過副本集以及分片來實現高可用
5、數據處理方式:mysql不同的引擎有各自的特點,mongodb基於內存,將數據存儲在物理內存中,從而達到高速讀寫
6、成熟度:mysql擁有較為成熟的體系,成熟度較高,mongodb新興數據庫,成熟度較低
請教mysql高手
‘mmm’@’localhost’
USER@DOMAIN 都需要 ”
你需要 FLUSH PRIVILEGES
mysql FLUSH PRIVILEGES;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/285321.html