MySQL主从配置的一些总结

发表于:2011-12-01 10:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:余洪春    来源:51Testing软件测试网采编

  二、现在手上蛮多项目的数据库用的是MySQL,由于权限等原因,暂时不方便部署Nagios监控MySQL主从复制,所以我一般在从机上配置了SHELL脚本用来监控MySQL的主从状态(设置为每十分钟运行一次),并且每次出问题时将确切日期写进错误日志,方便事后排查原因,脚本内容如下:

  • #!/bin/bash 
  • #check MySQL_Slave Status 
  • #crontab time 00:10 
  • MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'
  • MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'
  • STATUS=$(/usr/local/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running"
  • IO_env=`echo $STATUS | grep IO | awk ' {print $2}'
  • SQL_env=`echo $STATUS | grep SQL | awk '{print $2}'
  • if [ "$MYSQLPORT" == "3306" ] 
  • then 
  • echo "mysql is running" 
  • else 
  • mail -s "warn!server: $MYSQLIP mysql is down" yuhongchun027@163.com 
  • fi 
  • if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ] 
  • then 
  • echo "Slave is running!" 
  • else 
  • echo "####### $date #########">> /data/data/check_mysql_slave.log 
  • echo "Slave is not running!" >> /data/data/check_mysql_slave.log 
  • mail -s "warn! $MySQLIP_replicate_error" yuhongchun027@163.com << /data/data/check_mysql_slave.log 
  • fi
  •   建议每十分钟运行一次。

    */10 * * * * root /bin/sh /root/mysql_slave.sh

      记得在每台MySQL从机上分配一个yuhongchun的用户,权限大些也没关系,只限定在本地运行,如下所示:

  • grant all privileges on *.* to "yuhongchun"@"127.0.0.1" identified by "yuhongchun101"
  • grant all privileges on *.* to "yuhongchun"@"localhost" identified by "yuhongchun101";
  •   脚本设计思路:

      1、此脚本应该能适应各种各样不同的内外网环境,即IP不同的环境;

      2、让脚本也顺便监控下MySQL是否正常运行;

      三、innodb_buffer_pool_size的设置。

      这个参数定义了InnodDB存储引擎的表数据和索引数据的最大内存缓冲区大小。和MyISAM存储引擎不同,MyISAM的key_buffer_size只缓存索引键,而innodb_buffer_pool_size却是同时为数据块和索引块 做缓存,这个特征和Oracle是一样的,这个值设得越高,访问表中数据需求的I/O就越少。在一个专用的数据库服务器,可以设置这个参数达机器物理内存的80%,我现在一般的做法是配置成物理内存的 1/4,比如8G内存的生产数据库,我一般会配置成2G左右。

      四、测试了很长一段时间的MySQL的负载均衡,最后综合了老男孩和其它技术高手的意见,最终决定还是用LVS+Keepalived来作为MySQL的负载均衡,这是因为后端机器超过10台时,LVS的性能还是最好的;如果在3-5台左右,HAProxy也可以很轻松的搞定工作。

      五、大家都很清,磁盘I/O总会成为数据库的性能瓶颈,这时候我们应该如何在生产环境下选择合适的RAID级别呢?

      1、如果数据读写都很频繁,可靠性要求也很高,最好选择RAID10;

      2、如果数据读很频繁,写相对较少,对可靠性有一定要求,可以选择RAID5;

      3、如果数据读写都很频繁,但可靠性要求不高,可以选择RAID0。

      4、对于核心业务的数据库主从同步,建议从机的备份时间往后延迟一段时间,通常的做法是延迟一天左右。

    22/2<12
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号