分享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

掌握添加MySQL用户的方法对于数据库管理员和开发者至关重要,因为它确保数据库的安全性和访问控制。1)使用CREATEUSER命令创建新用户,2)通过GRANT命令分配权限,3)使用FLUSHPRIVILEGES确保权限生效,4)定期审计和清理用户账户以维护性能和安全。

chosecharforfixed-lengthdata,varcharforvariable-lengthdata,andtextforlargetextfield.1)chariseffity forconsistent-lengthdatalikecodes.2)varcharsuitsvariable-lengthdatalikenames,ballancingflexibilitibility andperformance.3)

在MySQL中处理字符串数据类型和索引的最佳实践包括:1)选择合适的字符串类型,如CHAR用于固定长度,VARCHAR用于可变长度,TEXT用于大文本;2)谨慎索引,避免过度索引,针对常用查询创建索引;3)使用前缀索引和全文索引优化长字符串搜索;4)定期监控和优化索引,保持索引小巧高效。通过这些方法,可以在读取和写入性能之间取得平衡,提升数据库效率。

ToaddauserremotelytoMySQL,followthesesteps:1)ConnecttoMySQLasroot,2)Createanewuserwithremoteaccess,3)Grantnecessaryprivileges,and4)Flushprivileges.BecautiousofsecurityrisksbylimitingprivilegesandaccesstospecificIPs,ensuringstrongpasswords,andmonitori

tostorestringsefliceflicyInmySql,ChooSetherightDataTypeBasedyOrneOrneEds:1)USEcharforFixed-LengthStstringStringStringSlikeCountryCodes.2)UseVarcharforvariable-lengtthslikenames.3)USETEXTCONTENT.3)

选择MySQL的BLOB和TEXT数据类型时,BLOB适合存储二进制数据,TEXT适合存储文本数据。1)BLOB适用于图片、音频等二进制数据,2)TEXT适用于文章、评论等文本数据,选择时需考虑数据性质和性能优化。

No,youshouldnotusetherootuserinMySQLforyourproduct.Instead,createspecificuserswithlimitedprivilegestoenhancesecurityandperformance:1)Createanewuserwithastrongpassword,2)Grantonlynecessarypermissionstothisuser,3)Regularlyreviewandupdateuserpermissions

mySqlStringDatatatPessHouldBechoseBeadeDataCharacteristicsAndUsecases:1)USECHARFORFIXED LENGTHSTRINGSTRINGSLIKECOUNTRYCODES.2)USEDES.2)usevarcharforvariable-lengtthstringstringstringstringstringstringstringslikenames.3)usebinaryorvarrinaryorvarinarydatalbonydatalgebgeenfopical.4)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具