mysql 主从同步 架构设计方案.ppt
Mysql架构设计方案,目录,(1)整体的架构拓扑(2)硬件选择(3)读写分离方案(4)同步方案(5)备份方案(6)监控方案(7)优化(8)集群+负载均衡(后期在做),服务器硬件设计,(1)硬盘使用RAID-0+1或者RAID-5磁盘阵列,适硬盘数量而定(2)CPU 可以使用两颗2.4GHz 以上的CPU。(3)物理内存:对于一台使用MySQL的Database Server来说,服务器内存不要小于2GB综上所述,硬件选择如下(服务器品牌在议):CPU:2颗Intel Xeon 2.4GHz 内存:2GB DDR2 硬盘:三个或者四个73GB SCSI,读写分离方案,读写分离是有效的减轻数据库负载的一种方案,结合同步复制,以达到数据的统一采用MySQL Proxy 虚拟连接池来实现,对外给定一个连接池,当客户请求发往该连接池的时候,将读请求和写请求分别指定到各个预先规定的多个只读只写服务器,同步方案,实现数据库同步复制是分布式数据库系统必不可少的一项技术,采用master,slave双向热备通过主配置文件/etc/f连实现,而且是实时的在这里所有的写服务器都作为master服务器并且互相同步,其他三个读服务器作为slave来同步写服务器的数据以达到数据的统一性,备份方案,为保证数据的完整性,备份是必不可少的采用每天定时完整备份+增量备份的方式超过三天的备份自动删除以保证服务器硬盘空间本机,异地交叉备份,性能优化,在指定了硬件条件的前提下MySQL的优化是通过修改主配置文件:/etc/f来实现的主要从以下几个方面考虑(1)查询缓存(2)索引缓存(3)表缓冲区的限制(4)连接数限定(5)等待时间限定,(1)查询缓存,Query Cache对于繁更新的表,查询缓存是不适合的,而对于一些不常改变数据且有大量相同sql查询的表,查询缓存会节约很大的性能查询缓存相关参数(1)query_cache_limit允许进入查询缓冲区的最小数据大小,默认值是1MB(2)query_cache_size决定分配给缓存的内存数量,单位是字节。,默认是0(3)query_cache_type OFF|ON指定查询缓冲的类型,0是关闭,1为开启缓默认为1.(4)read_buffer_size=n 为从数据表顺序读取数据的读操作保留的缓存区的长度(默认设置是128KB);(5)read_rnd_buffer_size=n 类似于read_buffer_size选项,但针对的是按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果(默认设置是256K)(6)join_buffer_size=n 在参加JOIN操作的数据列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)。,查询缓存的性能评估,(1)用这个命令查看:mysql SHOW VARIABLES LIKE%query_cache%;have_query_cache YES-查询缓存是否可用query_cache_limit 1048576-可缓存具体查询结果的最大值query_cache_size 599040-查询缓存的大小query_cache_type YES-阻止或是支持查询缓存(2)在 SHOW STATUS 中,你可以监视查询缓存的性能:变量 含义Qcache_queries_in_cache 在缓存中已注册的查询数目Qcache_inserts 被加入到缓存中的查询数目Qcache_hits 缓存命中的次数Qcache_lowmem_prunes 因为缺少内存而被从缓存中删除的查询数目Qcache_not_cached 没有被缓存的查询数目(不能被缓存的,或由于 QUERY_CACHE_TYPE)Qcache_free_memory 查询缓存的空闲内存总数Qcache_free_blocks 查询缓存中的空闲内存块的数目Qcache_total_blocks 查询缓存中的块的总,(2)索引缓存,key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。对于内存在2GB左右的服务器该参数可设置为128M,性能由一下几个参数决定(1)Key_read_requests:是从cache中读索引的请求(2)Key_reads:是从物理硬盘上读索引的次数 通过二者的比值即key_reads/key_read_requests来决定,其比值越小性能就越优,至少是1:100 状态值可以使用SHOW STATUS LIKE key_read%获得 key_buffer_size 128M key_read_requests 650759289 key_reads-79112 比例接近1:8000 健康状况非常好,(3)表缓冲区的限制,table_cache指定表高速缓存的大小,值在2G内存以下的机器中的值默认时256到512可通过以下两个参数来衡量其性能(1)Open_tables:表示当前打开的表数目(2)opened_tables:表示累计已经打开的表数目 通过二者的比值来调整性能,如果Opened_tables远大于Open_tables,并且Open_tables很接近table_cache,那么就说明table_cache偏小 可用该命令查看:mysql show variables like%open%,(4)连接数限定,(1)back_log:指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中,默认值为50。对于Linux系统推荐设置为小于512的整数。(2)max_connections:允许并发连接的数量,该值过小你将经常看到 Too many connections 错误。默认数值是100,我把它改为1024。,(5)等待时间限制,(1)interactive_timeout:对后续起的交互链接有效。默认数值是28800(2)wait_timeout:对当前交互链接有效,服务器在关闭连接之前在一个连接上等待行动的秒数,默认数值是28800,即如果没有事情发生,服务器在 8个小时后关闭连接注意二者的值要相等否则不生效,分布式集群+负载均衡设计,随着后期客户的增多数据库将采用集群(cluster)和负载均衡技术整个服务器群可以看成是一台虚拟的服务器,请求发往该虚拟服务器时会按照指定的算法,把响应分配到负载最小的数据库,从而达到均衡负载的目的,监控方案,利用nagios监控MySQL运行状况,达到状态预警,短信通知等7*24小时不间断监控,谢谢!,