•MySQLOverview•MySQLReplication•MySQLHAMySQL管理基础MySQL结构层次InnoDBvsMyISAMonIndexInnoDB物理文件组成•InnoDB的数据文件包括:•.frm表结构文件•.ibd表数据文件(数据目录)•系统元数据和undospace(共享表空间)•ib_logfile*重做日志文件(Oracle的RedoLog)•INSERTBUFFERInnodb使用insertbuffer忽悠数据库:它并不马上更新索引的叶子页,而是把若干对同一页面的更新缓存起来,一次性更新,从而有效节约I/OInnoDB优化设计只能用在非唯一索引中,因为列的唯一性通过索引来保证,所以在索引没有被更新前,数据库并不知道索引是否是唯一的.如果用在唯一索引中,在insertmerge的过程中,可能就会导致唯一键冲突•DOUBLEWRITEInnoDB在将数据写到数据文件的时候,会出现只写了一半但由于某种原因剩下的数据没有写到innodbfile上,如果doublewritebuffer写成功的话,但是写磁盘失败,innodb就不用通过事务日志来计算了,而是直接用buffer的数据再写一遍InnoDB优化设计thedoublewritebufferisactuallyabenefit.Beyondguaranteeingthatpagesarerecoverable,italsoreducestherequiredfsyncs.Withoutit,eachpagethatiswrittentothetablespacewouldneedtobefsync'ed.Withdoublewriteenabled,achunkofpagesiswrittentothedoublewritebufferthen1fsynciscalled,thenpagesarewrittentothetablespaceandthen1fsyncfsync函数同步内存中所有已修改的文件数据到储存设备。参数fd是该进程打开来的文件描述符。函数成功执行时,返回0。失败返回-1•ADAPTIVEHASHINDEXInnoDB存储引擎会监控对表上索引的查找,如果观察到建立哈希索引可以带来速度的提升,则建立哈希索引,所以称之为自适应(adaptive)哈希索引innodb_adaptive_hash_indexInnoDB优化设计AdaptiveHashIndexHowever,sometimes,theread/writelockthatguardsaccesstotheadaptivehashindexmaybecomeasourceofcontentionunderheavyworkloads,suchasmultipleconcurrentjoins.btr0sea.c内容概要•MySQLOverview•MySQLReplication•MySQLHA•提供实时热备,保证高可用性•MySQL的所有高可用架构都是基于复制的,Replication是高可用的核心和基础Replication作用MySQL复制基本原理•将在A机器上执行的所有SQL序列在B上原样重复执行一遍•在MySQL中称之为:statementbinlog-format=statement•mysqlbinlog工具mysqlbinlogbinlog文件名实现方式1•rand()函数•uuid()函数•自增......statement方式的问题•将在A机器上数据行的变化在B上原样做一遍•在MySQL中称之为:rowbinlog-format=row•mysqlbinlog工具mysqlbinlogbinlog文件名实现方式2•mysqlbinlog-vvmysqlbinlog•binlog文件大小的问题如:updateasetc1=100whereid1000000;row方式的问题•Statement和row方式的组合•在MySQL中称之为:mixedbinlog-format=mixed•mysqlbinlog工具mysqlbinlogbinlog文件名实现方式3•第二种方式:binlog-format=row•理由:statement可能造成主备不一致一次更新很多行的情况在网站的数据库上应用很少线上数据库选择双向复制级联复制双向+级联复制•环形复制架构•1Master+nslave读写分离架构其他复制架构内容概要•MySQLOverview•MySQLReplication•MySQLHA•HA(HighAvailability)作用提供高可用方案•HA的需求提供透明的数据库访问,即使MySQL主机宕机•实现方式:HeartbeatCobar为什么需要HA有哪些高可用工具商业IBMHACMPHPService-GuardVeritasVCSOracleClusterware(OracleRAC专用集群件)开源heartbeatMHA(只支持MySQL,但功能非常强大)Heartbeat•优点开源,发展迅速,目前为3.0版本双master结构,VIP漂移•缺点脑裂问题不支持数据补偿Heartbeat优劣势分析数据补偿什么是好的HA软件切换机制要简单有效不能太过复杂,否则:学习成本高配置成本高维护成本高failover之后,问题定位成本高NodeFencing对于公共资源的释放一定要彻底,例如共享盘,vip等提供数据补偿机制failover时,要尽量减少数据的丢失什么是好的HA软件集中管理随着集群数量的增长,最好能统一化管理支持多种切换模式手工failover/switch自动failover元信息维护一旦发生切换,主备库的信息也要做相应的维护,减少后期维护数据的成本审计记录所有操作支持多种数据库最好既支持Oracle,又支持MySQLQGuard软件架构QGuardMaster模块中心节点,负责其它模块的通讯QGuardMonitor模块监控数据库(Oracle/MySQL)集群支持多套集群发现问题,通知QGuardWorker发起switchover/failover随着集群数量的增长,Monitor模块可线性扩展QGuardWorker模块接受请求,完成switchover/failover随着集群数量的增长,Worker模块可线性扩展QGuard软件架构图结束