分享MYSQL中的各种高可用技术(源自姜承尧大牛)
分享MYSQL中的各种高可用技术(源自姜承尧大牛)
图片和资料来源于MYSQL大牛姜承尧老师( MYSQL技术内幕作者 )
姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发
mysql高可用各个技术的比较
数据库的可靠指的是数据可靠
数据库可用指的是数据库服务可用
可靠的是数据 :例如工商银行,数据不能丢失
可用的是服务 :服务器不能宕机
方案一:MYSQL主从复制(单活)
投票选举机制,较复杂
MySQL本身没有提供replication failover的解决方案,自动切换需要依赖 MHA脚本
可以有多台从库,从库可以做报表和备份
方案二:双主(单活),failover比单主简单
同样,自动切换需要 MMM脚本
缺点是某个主挂掉了,他下面的slave同样挂掉
方案三:双主配SAN存储(单活)
这个架构跟方案二是一样的,只不过两个master之间不需要同步数据,因为他们用的是共享磁盘
这个方案是 有钱人方案 ,无论哪个主挂掉都不会引起其他的slave挂掉,但是SAN存储死贵。。
像通信行业中国联通这些公司有用到
某个主挂掉了,下面的slave不会挂掉
注意:failover之后不会预热,数据没有预先加载到内存中,切换之后一段时间内存储会有一定的性能影响
方案四:DRBD 双主配 DRBD (单活)
结构跟方案三一样,唯一不同的是没有使用SAN网络存储 ,而是使用 local disk
由于是实时复制磁盘数据,性能会有影响
人们把DRBD称为 “屌丝的SAN”
POOR MAN'S SAN:穷人的SAN
方案五:NDB CLUSTER
国内用NDB集群的公司很少,貌似有些银行有用
NDB集群不需要依赖第三方组件,全部都使用官方组件,能保证数据的一致性
某个数据节点挂掉,其他数据节点依然可以提供服务
管理节点需要做冗余以防挂掉
缺点是:管理和配置都很复杂,而且某些SQL语句例如join语句需要避免
方案六:第三方的Tungsten软件
使用java编写,不是MYSQL内置的
同样是MYSQL数据库复制,不过他不是用MYSQL内置的组件来做的
不但支持MYSQL数据库复制也支持异构数据库的复制,而且对异构数据库复制支持较好,例如MYSQL复制到ORACLE
方案七:网易的INNOSQL
类似于SQLSERVER的 镜像高安全模式
High Safety 模式 (也就是同步模式)没有 witness服务器
数据库在Principle的事务, 需要马上得到mirror的确认,才能完成 。这种情况下,Mirror和Principle的数据是同步的。
但是因为所有的事务需要mirror的确认,所以性能可能会有所影响。
区别:innosql的slave可以读,镜像的slave(从库)不可读
保证数据不会丢失,数据的高可靠性
mysql5.7开始支持这种模式
总结
每种方案都有不同的特点,配置和应用场景也各有不同
有些偏向于成本低的,有些偏向于成本高的,有些偏向于数据的可靠性,有些则偏向于数据库的可用性
反正各个方案都各有优缺点,DBA要结合自己公司的业务情况进行选择合适自己业务情况的高可用方案
更多参考资料:
读写分离:Amoeba
Ubuntu10下MySQL搭建Amoeba系列(文章索引)
集群技术:数据库集群技术漫谈
如有不对的地方,欢迎大家拍砖o(∩_∩)o

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。
