热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql高可用方案几种方案

Mysql-mmm就是mysql主主复制管理器,实现的功能有:高可用性(类似keepalived的vip浮动技术)同个时间只提供一台数据库写操作,保证数据库的一致性。提升slave为mas

Mysql-mmm就是mysql主主复制管理器,实现的功能有:

高可用性(类似keepalivedvip浮动技术)

同个时间只提供一台数据库写操作,保证数据库的一致性。

提升slavemaster,延续双主的架构

 

 

首先先搭建好数据库主主,主从架构:类似图:(不再叙述)

在每台数据库中为monitor的机器来监控当前的同步情况:

Grant replivation client to ‘user@’ip’ identified by ‘password’   创建一个mmm-monitor的账户,主要用于监控和同步

Grant super, replication client ,process on *.* to  ‘user’@’ip’ identified by ‘password’

创建一个mmm-agent的账户,用于客户端的各种操作

 

Mysql-mmm的下载地址为Mysql-mmm下载网址http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

由于使用的是epel的方式需要把/etc/yum.repos.d/epel.repo中的mirrorlist换为baseurl

 

 

 

===========================================================================

配置mmm_common.conf的文件:所有节点的配置都是一样的包括监控端

active_master_role      writer
 
    cluster_interface       eth0
    pid_path                /var/run/mysql-mmm/mmm_agentd.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        ccd      //同步的账户
    replication_password    ccd
    agent_user              ccd       //大一点的权限
    agent_password          ccd
     ip 172.20.138.212
     mode master
     peer db2
  ip  172.20.138.209
  mode  master
  peer  db1
    hostsdb1,db2
    ips  172.20.138.100
    mode exclusive    //exclusive为单写
 
    Hosts b1,db2
    ips 172.20.138.250  //可以有多个ip,每个数据库可以单独有一个vip
    mode balanced    //读取为负载均衡

============================================================================

修改mmm_agent.conf文件中不同的db

 

最后配置一下mmm_mon.conf

主要修改的地方有:

Ping_ips 为监控的主机的真实ip

Monitor 修改为数据库赋予的账户

Monitor_assword   密码

 

/etc/init.d/中启动服务,在监控服务器中输入命令:

Mmm_control checks 检查所有的数据库同步情况和运行情况

Mmm_control show 查看vip绑定情况,类似ipvsadm

 

 

Mysql-mmm不适合用于mysql主从的高负载

验证vip均可以跳转,但是发现读ip也具有写入数据的功能。。。。如果加上读写分离的话就可以实现读取的vip不具备写入的功能

 

 

 

 

 

 

Mysql-proxy实现负载均衡和读写分离

目前的mysql-proxy的版本为0.8.5aplha

 

在安装mysql-proxy之前需要安装lua

到官网下载lua的源文件

yum -y install readline-devel ncurses-devel

安装readline-develncurses-devel   否则安装会出现readline寻找不到的问题

tar zxvf luaxxxxx

make linux

make install

这时候输入lua可以进入编译模式表示lua安装成功

 

安装所需要的依赖包

yum install gcc* gcc-c++* autoconf*automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*

 

mysql-proxy官网下载最新的mysql-proxy源文件

安装十分简单解压之后即可使用

mysql-proxy添加到相对应的环境变量中

export PATH =$PATH:/usr/local/mysql-proxy

source /etc/profile

 

 

修改mysql-proxy的配置文件

常用的命令参数如下:

--daemon daemon的模式启动

--admin-address=:4401  默认端口为4401

-help查看所有命令

-default-file 可以配置启动的配置文件

--proxy-backend-addresses=$host:$port  多个以逗号隔开

--proxy-address=:3307

--proxy-backend-addresses=:3306  mysql主机的端口

--proxy-read-only-backend-address=xxx13306   只读mysql主机的端口

-- proxy-read-only-backend-address=xxx23306   可以指定多个只读mysql主机的端口

--proxy-lua-script=/usr/local/xxx/rw-splitting.lua   使用系统只带的lua脚本实现读写分离的功能

 

 

使用系统自带的rw.split.lua脚本需要修改两个参数

min_idle_cOnnections=1

max_idle_cOnnections= 3

 

 

启动脚本:

#!/bin/bash

mode=$1

if [ -z "$mode" ] ;then

  mode="start"

fi

case $mode in

'start')

   mysql-proxy --daemon --proxy-address=:3307 --proxy-backend-addresses=172.20.138.209:3306;172.20.138.212:3306 --proxy-read-only-backend-addresses=172.20.138.212:3306  --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

  ;;

'stop')

   killall mysql-proxy

   ;;

esac

exit 0

 

 

 

 

 

 

 

 

或者使用配置方式的方法来启动

Vim /etc/mysql-proxy.cnf

admin-username = ccd

admin-password = ccd

daemon = true

keepalive = true

proxy-backend-addresses =172.20.138.209:3306;172.20.138.212:3306

proxy-read-only-backend-addresses =172.20.138.212:3306

proxy-lua-script =/usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua

admin-lua-script =/usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lua

log-file = /usr/local/proxy-mysql/cn.log

log-level = debug

修改相对应的脚本即可:

Mysql-proxy Cdefaults-file =/etc/mysql-proxy.cnf

 

 

 

 

对于数据库的测试可以使用sysbench工具来进行测试

 

利用keepalived实现对mysql主主/主从的高可用

配置keepalived.conf文件:

Vrrp_instatance  HA_1{

State BACKUP  #配置为slave,也可以是master

Interface eth0

Virtual_router_id 80  //主从配置的虚拟路由标识需要一样

Priority 100  #配置不同的优先级

Advert_int 1   #配置主备之间同步检查的周期

Authenication{

Auth_type PASS

Auth_pass 1111

}

Virtual_ipaddress {

    vip/24 dev eth0

}

}

Virtual_server  xxxxxx  3306{

Delay_loop 2

lb_algo wrr        //lvs算法为加权轮询

lb_kind DR     //lvs的模式为DR模式

protocol TCP

reall_server   xxxx 3306 {

weight  1

TCP_CHECK {

Connect_timeout  3

nb_get_retry    3

delay_before_retry  3

connect_port  3306

}

 

Real  server xxxx  3306{

   同上

}

}

 

DRreal serverloop端口需要绑定vip的地址脚本为:

#!/bin/bash

SNS_VIP=172.138.20.244

./etc/rc.d/init.d/functions

case"$1" in

start)

       ifconfig lo:0 $SNS_VIP netmask255.255.255.255 broadcast $SNS_VIP

 

       /sbin/route add -host $SNS_VIP dev lo:0

 

       echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore

 

       echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce

 

       echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

 

       echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

 

       sysctl -p >/dev/null 2>&1

 

       echo "RealServer Start OK"

 

 

 

       ;;

 

stop)

 

       ifconfig lo:0 down

 

       route del $SNS_VIP >/dev/null2>&1

 

       echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore

 

       echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce

 

       echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore

 

       echo "0">/proc/sys/net/ipv4/conf/all/arp_announce

 

       echo "RealServer Stoped"

 

       ;;

 

*)

 

       echo "Usage: $0 {start|stop}"

 

       exit 1

 

esac

 

 

 

exit 0

 

 

 

授权远程主机可以通过vip来连接登录vip

Grant allprivileges to  on *.* to xxxx identifiedby xxxxx

    Flushprivileges

由此可以实现mysql数据库的高可用

 

 

 

 

使用keepalived的方式有两种 一种为keepalived加脚本实现vip的切换,另外一种是keepalived+lvs的方式来实现数据库的高可用

================================================================================


本文出自 “东神要一打五” 博客,谢绝转载!


推荐阅读
  • Server Installation for Jitsi Meet
    2019独角兽企业重金招聘Python工程师标准ServerInstallationforJitsiMeetThisdescribesconfiguringaserverji ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
author-avatar
帅呆了2014_329
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有