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