mysql负载均衡怎么做 数据库做负载均衡( 三 )


对于大型的Web服务器的时候可以使用haproxy;
对性能有严格要求的时候可以使用lvs,就单纯从负载均衡的角度来说,lvs也许会成为主流,更适合现在大型的互联网公司 。
注:lvs,nginx,haproxy要实现高可用,都需要借助keepalived软件
怎样给访问量过大的mysql数据库减压单机MySQL数据库的优化
一、服务器硬件对MySQL性能的影响
 ①磁盘寻道能力(磁盘I/O),我们现在上的都是SAS15000转的硬盘 。MySQL每秒钟都在进行大量、复杂的查询操作,对磁盘的读写量可想而知 。
所以,通常认为磁盘I/O是制约MySQL性能的最大因素之一,对于日均访
问量在100万PV以上的Discuz!论坛 , 由于磁盘I/O的制约,MySQL的性能会非常低下!解决这一制约因素可以考虑以下几种解决方案:
使用RAID1+0磁盘阵列 , 注意不要尝试使用RAID-5 , MySQL在RAID-5磁盘阵列上的效率不会像你期待的那样快 。
②CPU 对于MySQL应用,推荐使用DELL R710,E5620 @2.40GHz(4 core)* 2,我现在比较喜欢DELL R710,也在用其作Linuxakg 虚拟化应用;
③物理内存对于一台使用MySQL的Database Server来说,服务器内存建议不要小于2GB , 推荐使用4GB以上的物理内存,不过内存对于现在的服务器而言可以说是一个可以忽略的问题,工作中遇到高端服务器基本上内存都超过了32G 。
我们工作中用得比较多的数据库服务器是HP DL580G5和DELL R710,稳定性和性能都不错;特别是DELL R710 , 我发现许多同行都是采用它作数据库的服务器,所以重点推荐下 。
 二、MySQL的线上安装我建议采取编译安装的方法,这样性能上有较大提升,服务器系统我建议用64bit的Centos5.5,源码包的编译参数会默
认以Debgu模式生成二进制代码,而Debug模式给MySQL带来的性能损失是比较大的,所以当我们编译准备安装的产品代码时,一定不要忘记使用“—
without-debug”参数禁用Debug模式 。而如果把—with-mysqld-ldflags和—with-client-ldflags二
个编译参数设置为—all-static的话,可以告诉编译器以静态方式编译和编译结果代码得到最高的性能 。使用静态编译和使用动态编译的代码相比,性能
差距可能会达到5%至10%之多 。我参考了简朝阳先生的编译参数,特列如下,供大家参考
./configure
–prefix=/usr/local/mysql –without-debug –without-bench
–enable-thread-safe-client –enable-assembler –enable-profiling
–with-mysqld-ldflags=-all-static –with-client-ldflags=-all-static
–with-charset=latin1 –with-extra-charset=utf8,gbk –with-innodb
–with-csv-storage-engine –with-federated-storage-engine
–with-mysqld-user=mysql –without-我是怎么了ded-server
–with-server-suffix=-community
–with-unix-socket-path=/usr/local/mysql/sock/mysql.sock
三、MySQL自身因素当解决了上述服务器硬件制约因素后,让我们看看MySQL自身的优化是如何操作的 。对 MySQL自身的优化主要是对其配置文件my.cnf中的各项参数进行优化调整 。下面我们介绍一些对性能影响较大的参数 。
下面 , 我们根据以上硬件配置结合一份已经优化好的my.cnf进行说明:
#vim /etc/my.cnf
以下只列出my.cnf文件中[mysqld]段落中的内容,其他段落内容对MySQL运行性能影响甚微,因而姑且忽略 。
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
#避免MySQL的外部锁定,减少出错几率增强稳定性 。
skip-name-resolve
#禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间 。但需要注意,如果开启该选项 , 则所有远程主机连接授权都要使用IP地址方式 , 否则MySQL将无法正常处理连接请求!

推荐阅读