MySQL Cluster的高可用性
bitsCN.com
MySQL Cluster的高可用性 - 1
使用mysql cluster,能达到99.999的高可靠性,在这一章节,主要介绍一些基本概念:
Network Partitioning
在一个mysql集群中,如果几个节点之间网络出问题了,mysql cluster能决定哪些节点应该继续提供服务。比方有两个Node Group共四个节点:SN1, SN2,SN2, SN4。
SN1和SN2在Node Group1, SN3和SN4在Node Group2。如果{SN1, SN3}与{SN2, SN4}失去联系,那么他们中的任何两个都拥有完整数据,都能对外提供服务。为了数据完整性,我们必须隔离一半。根据配置,一个或者几个管理节点能够提供仲裁,帮助我们选择哪一对节点继续存活。假如我们配置了两个管理节点(MGM1, MGM2)都能提供仲裁服务,我们要避免以下这样的配置:
路由器1: MGM1, SN1, SN3
路由器2: MGM2, SN2, SN4
如果你有这样配置,路由器1与路由器2之间出了问题,而MGM1, MGM2都能仲裁,那么有可能两边都在对外提供服务。结果你懂的。
Synchronous Replication: 同步复制。
这比较好理解,在同一个Node Group内部,事务提交为two-phase commit,而且是同步的。每个数据节点内的数据都同步复制到另一个节点上。MySQL Cluster 配置通常至少有 2 个全部数据的副本,存放在不同主机上。为避免整体系统故障,系统会根据可配置的频率在磁盘上定期保存事务日志和检查点文件。如果某个节点发生故障,至少有另一个数据节点存储着相同的信息。
注意:同步复制只是内存的复制,对于mysql cluster来说,他可能还没有写到硬盘(与Checkpoint和Redo, UNDO log相关)。如果同一个Node Group同时下电,那么我们就可能丢数据。Mysql cluster的数据一致性是说我们几乎没有两个节点同时over,所以我们进行部署时最好不要同一个Node Group的data node在同一个机架。
Failure Detection 错误检测。
通常有两种错误,communication loss 和 heartbeat failure。一是通讯丢失,可以通过tcp,共享内存等方式在各存储节点之间通讯来侦测节点是否正常这种方式是最快的故障检测方式,
二是心跳失败,通讯丢失的检测方法在某些特殊情况下无效,例如磁盘故障等问题.所有的存储节点通过组成一个环路,每个节点向下一个节点发送心跳信号,如果下一个节点没有收到心跳信号,则认为上一个存储节点故障,并依次向下下个节点广播此故障信息
Logging:
正常情况下,不管什么类型的数据库,都会有日志,它包含所有的insert/update/delete。在系统出现故障的时候我们用它来辅助恢复数据库。
Local Checkpoints:
Redo log是一个环形日志文件,随着数据库的操作,redo log也在增长,如果不及时清理的话,log空间很快就会用光,我们需要及时地把snapshot image写到disk,然后把redo log的tail指针向前挪。NoOfFragmentLogFiles用来控制redo log的大小,TimeBetweenLocalCheckpoints控制cluster local checkpoint的频率。这儿的Time并不指时间,而是指操作的个数,它是以指数形式增长的,比方20是4M的写操作,但是21就是8M。
Global Checkpoints:
Mysql cluster是一个in-memory数据库,为了性能的关系,事务都是先同步到内存,然后后面写log。GlobalCheckpoints就是每隔一段时间TimeBetweenGlobalCheckpoints,我们把一组提交的事务写到disk。Global Checkpoint就是定时将Redo log写到disk。
Global Checkpoint是写Redo log,Local Checkpoint是截Redo log的尾。
Local check需要时间,为了能够恢复的时候LCP image与LCP开始时间完全一致,mysql cluster引入Undo log。
System Recovery 系统恢复:
当恢复的时候,LCP image是LCP stop点的数据,我们执行undo log使系统回退到LCP start点。然后执行Redo log到Global checkpoint点。
跨地域复制 — 跨地域复制使节点能镜像到远程数据中心以便进行灾难恢复
限制
不支持磁盘上的持续提交。提交将被复制,但不保证在提交时会将日志写入磁盘。
不能在线增加或舍弃节点(此时必须重启簇)

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。MySQL以其高性能、可扩展性和跨平台支持著称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

在開發一個小型應用時,我遇到了一個棘手的問題:需要快速集成一個輕量級的數據庫操作庫。嘗試了多個庫後,我發現它們要么功能過多,要么兼容性不佳。最終,我找到了minii/db,這是一個基於Yii2的簡化版本,完美地解決了我的問題。

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

在使用Thelia開發電商網站時,我遇到了一個棘手的問題:MySQL模式設置不當,導致某些功能無法正常運行。經過一番探索,我找到了一個名為TheliaMySQLModesChecker的模塊,它能夠自動修復Thelia所需的MySQL模式,徹底解決了我的困擾。
