热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

利用Heartbeat和drbd做mysql的高可用性,lvs做slave负载均衡

 650)this.width650;border0altsrchttps:img2021.freeaihub.comff80689b3d7d0b7ff5e07215ea391de


 







 


 


 




使用drbd,对于mysql存储引擎的选择最好使用
innodb
,因为这个存储引擎可以要求每次写操作立即写入磁盘,而不是放在内存中,myisam的写操作基本上是先放在内存中,然后定期写入磁盘。




实验证明,
drbd+innodb+heartbeat
可以实现无缝故障转移,不中断服务,实验中,很多次我进行了写数据时掉电处理,或者断网处理,或者关掉服务等,都能正常进行故障转移,而且故障时间控制在3秒内,就可以进行切换。


 


 




其实用keepalived也同样可以实现高可用性的~


 




keepalived变为主节点的时候运行的脚本


 






  1. #!/bin/bash 



  2. while : 


  3. do 



  4. drbd_status
    =`service drbd status|grep Inconsistent | gawk '{print $4}'` 



  5. if [ -n "$drbd_status" ]; then 


  6. echo "drbd's status is inconsisten,waiting..." 


  7. sleep 1 


  8. else 


  9. echo "drbd's status is ok,namenode will be changing" 


  10. break 


  11. fi 


  12. done 


  13.  


  14. while : 


  15. do 


  16. if [ -d /data/mysql ]; then 


  17. #service mysqld stop 


  18. service mysqld start 


  19. break 


  20. else 


  21. drbdadm primary r0 


  22. mount /dev/drbd0 /data 


  23. sleep 1 


  24. service mysqld start 


  25. fi 


  26. done 


  27.  


  28.  



  29. drbd_status
    =`service drbd status|grep StandAlone | gawk '{print $2}'` 



  30. if [ -n "$drbd_status" ]; then 



  31. vip_status
    =`ip addr |grep eth0|grep "192.168.100.7"` 



  32.    if [[ ! -z ${vip_status} ]];then 


  33.      for i in $(seq 3) 


  34.        do  


  35.         drbdadm connect all 


  36.         sleep 2 


  37.      done 


  38.    fi 


  39. fi 





keepalived变为备用机器的时候,运行的脚本



 






  1. #!/bin/bash 



  2. if [ -d /data/mysql ];then 


  3. service mysqld stop 


  4. pkill -9 mysql 


  5. sleep 1 


  6. fuser -ck /data/ 


  7. umount -l /dev/drbd0 


  8. drbdadm secondary all 


  9. else 



  10. drbd_status
    =`service drbd status|grep StandAlone | gawk '{print $2}'` 



  11. if [ -n "$drbd_status" ]; then 


  12. drbdadm secondary all 


  13.  


  14. fi 


  15. fi 


 


 


 


 


 




推荐阅读
author-avatar
Sheen2602906613
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有