集群介绍:

Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。

主要功能:

  • 同步复制
  • 真正的multi-master,即所有节点可以同时读写数据库
  • 自动的节点成员控制,失效节点自动被清除
  • 新节点加入数据自动复制
  • 真正的并行复制,行级
  • 用户可以直接连接集群,使用感受上与MySQL完全一致

优势:

  • 因为是多主,所以不存在Slave lag(延迟)
  • 不存在丢失交易的情况
  • 同时具有读和写的扩展能力
  • 更小的客户端延迟
  • 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

实现技术:

Galera集群的复制功能基于Galera library实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。

实践操作:负载均衡集群搭建

1 .下载mariadb集群

wget http://mirrors.opencas.cn/mariadb/mariadb-galera-10.0.17/bintar-linux-x86_64/mariadb-galera-10.0.17-linux-x86_64.tar.gz

2. 添加mariadb用户和组

groupadd mariadb

useradd -g mariadb mariadb

3. 将下载的文件拷贝到目录/usr/src下

4. 解压并拷贝解压后的文件到/usr/local/mysql下

root@ubuntu:/usr/src# tar -zxvf mariadb-galera-10.0.17-linux-x86_64.tar.gz

root@ubuntu:/usr/local# cp -R mariadb-galera-10.0.17-linux-x86_64 /usr/local/mysql

5. 修改文件夹的所属用户和组

root@ubuntu:/usr/local# chown -R mariadb:mariadb mysql/

6. 安装mariadb字典数据库,确保数据库安装成功

mariadb@ubuntu:/usr/local/mysql$ ./scripts/mysql_install_db

在数据库中创建一个专门用来在各节点间进行复制的节点

7. 配置集群中节点1的启动参数文件,my1.cnf

主要在[mysqld]选项下面,加入如下配置:

log-bin=mysql-bin

binlog_format = ROW

server-id       = 1

innodb_autoinc_lock_mode = 2

wsrep_provider = /usr/local/mysql/lib/libgalera_smm.so

wsrep_cluster_name = "my_mariadb_cluster"

wsrep_cluster_address="gcomm://"

wsrep_node_name = "cluster_node1"

wsrep_node_address = 127.0.0.1:4406

启动节点1:

./bin/mysqld --defaults-file=my1.cnf --wsrep-new-cluster

8. 配置集群中节点2的启动参数文件,my2.cnf

主要在[mysqld]选项下面,加入如下配置:

log-bin=mysql-bin

binlog_format = ROW

datadir = /usr/local/mysql/data1

server-id   = 2

innodb_autoinc_lock_mode = 2

wsrep_provider = /usr/local/mysql/lib/libgalera_smm.so

wsrep_cluster_name = "my_mariadb_cluster"

wsrep_cluster_address="gcomm://127.0.0.1:4406"

wsrep_node_name = "cluster_node2"

wsrep_node_address = 127.0.0.1:4407

9. 配置集群中节点3的启动参数文件,my3.cnf

主要在[mysqld]选项下面,加入如下配置:

log-bin=mysql-bin

binlog_format = ROW

datadir = /usr/local/mysql/data2

server-id  = 3

innodb_autoinc_lock_mode = 2

wsrep_provider = /usr/local/mysql/lib/libgalera_smm.so

wsrep_cluster_name = "my_mariadb_cluster"

wsrep_cluster_address="gcomm://127.0.0.1:4407"

wsrep_node_name = "cluster_node3"

wsrep_node_address = 127.0.0.1:4408

10. 检查并测试集群是否启动成功

观察命令show status like 'wsrep%'; 的输出信息,看是否有3个节点。

连接到集群中的任何一个节点:

./bin/mysql --host 127.0.0.1 --port 3307 -umycluster -p123456

在test数据库下创建一个表goods

create table goods (id int(11) not null, name varchar(20));

插入一条记录:

insert into goods(id,name) value(1,'iphone7');

然后登录到另外一个节点检查刚才创建的表和记录是否存在:

./bin/mysql --host 127.0.0.1 --port 3306 -umycluster -p12345

MariaDB [test]> select * from goods;

+----+---------+

| id | name    |

+----+---------+

|  1 | iphone7 |

+----+---------+

我们看到记录已经存在,再次证明集群已经搭配好。

11.配置haproxy

下载:wget http://down1.chinaunix.net/distfiles/haproxy-1.4.21.tar.gz

编译:make TARGET=linux26 PREFIX=/usr/local/haproxy

安装:make install PREFIX=/usr/local/haproxy

在/usr/local/haproxy下添加配置文件haproxy.cfg

修改配置文件内容如下:

global

log            127.0.0.1        local0

log            127.0.0.1        local1 notice

#log loghost    local0 info

maxconn         4096

user            haproxy      #所属运行的用户

group           haproxy      #所属运行的组

nbproc          1

pidfile         /usr/local/haproxy/haproxy1.pid

#debug

#quiet

defaults

log            global

option         tcplog

option         dontlognull

retries         3

option          redispatch

maxconn         4096

timeout         connect  50000ms

timeout         client   50000ms

timeout         server   50000ms

listen  mariadb-galera

bind 127.0.0.1:3399  #客户端监听端口

mode tcp

balance  leastconn  #最少连接的负载均衡算法

server   db1  127.0.0.1:3306 check

server   db1  127.0.0.1:3307 check

server   db1  127.0.0.1:3308 check

启动haproxy:

./sbin/haproxy -f haproxy.cfg

根据最少连接的负载均衡算法,haproxy将读写请求重定向到最少连接的数据库服务器上。

检查haproxy是否配置正确:

先连接上: mariadb@ubuntu:/usr/local/mysql$ ./bin/mysql --host 127.0.0.1 --port 3399 -umycluster -p123456 #注意连接端口为3399,是haproxy服务器的监听端口

插入一条记录试试:insert into goods(id,name) value (2,'lumia');

Query OK, 1 row affected (0.19 sec)

成功,说明haproxy配置ok

负载均衡的mariadb集群搭建的更多相关文章

  1. apache、mod_jk负载均衡与tomcat集群

    最近需要搭建apache和tomcat的集群,实现静态网站直接通过apache访问,动态网站转交给tomcat处理,实现负载均衡和tomcat集群配置. apache安装 wget http://ap ...

  2. LVS+Keepalived-DR模式负载均衡高可用集群

    LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...

  3. linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

    随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...

  4. 高可用性、负载均衡的mysql集群解决方案

    高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么 ...

  5. Apache+Tomcat部署负载均衡(或集群)

    本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...

  6. 「mysql优化专题」高可用性、负载均衡的mysql集群解决方案(12)

    一.为什么需要mysql集群? 一个庞大的分布式系统的性能瓶颈中,最脆弱的就是连接.连接有两个,一个是客户端与后端的连接,另一个是后端与数据库的连接.简单如图下两个蓝色框框(其实,这张图是我在悟空问答 ...

  7. Linux下"负载均衡+高可用"集群的考虑点 以及 高可用方案说明(Keepalive/Heartbeat)

    当下Linux运维技术越来越受到企业的关注和追捧, 在某些企业, 尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案.那么如何实施Llinux集群架构,才能既有效 ...

  8. 3.dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

    作者:中华石杉 面试题 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 面试官心理分析 继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议 ...

  9. Lvs+keepAlived实现负载均衡高可用集群(DR实现)

    第1章 LVS 简介 1.1 LVS介绍 LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能. ...

随机推荐

  1. 清除oracle中的缓存(具体细节未知, 慎用)

    oracle中的缓存主要是指SGA中的:1.share pool2.database buffer cache清空命令如下:首先要登录到sqlplus命令下,输入如下命令即可:SQL> alte ...

  2. LSD-SLAM深入学习(4)-非ROS改造

    前言 没错,距离上一次博客的发布已经俩月了,今天是圣诞节,圣诞快乐. 在前几篇中已经完成了ROS下面的一系列操作.如有任何问题,feel free to contact me at robotsmin ...

  3. lvs + keepalived 介绍及安装

    LVS介绍 lvs 核心ipvs      Ipvs(IP Virtual Server)是整个负载均衡的基础,如果没有这个基础,故障隔离与失败切换就毫无意义了.Ipvs 具体实现是由ipvsadm ...

  4. Robot Framework入门学习2 创建第一个测试用例

    本文章部分内容引自以下网址,感谢作者的辛苦分享 http://www.cnblogs.com/fnng/p/3871712.html http://blog.csdn.net/tulituqi/art ...

  5. TCP/IP详解系列 --- 概念总结01

    UDP协议  .vs.  TCP协议:  原理上:(TCP报文段. vs . UDP用户数据报) TCP协议的特性: TCP是面向连接的运输层协议,应用程序在使用TCP协议之前,必须先建立TCP连接. ...

  6. 主机使用代理上网,虚拟机Linux如何连外网

    VMware虚拟机的三种联网方法及原理 一.Brigde--桥接  :默认使用VMnet0 1.原理: Bridge  桥"就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时在& ...

  7. PhoneGap--001 入门 安装

    PhoneGap 百度百科 PhoneGap 中文网 3.0 安装使用 今天也配置好phonegap3.0 android开发环境了,操作系统是win7,就楼主文章做些补充. 我是按phonegap官 ...

  8. php设计模式--单例模式

    单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式是一种常见的设计模式,在计算机系统中,线程池.缓 ...

  9. javacript实现不被浏览器拦截打开新窗口

    情景: 1.用户发送数据到服务器 2.服务器根据用户的数据生成文档 3.服务器把所生成的文档的下载地址提供给用户 4.用户使用的浏览器自动根据下载地址下载文件 实现: 网上搜索查找了下实现方式,就我查 ...

  10. MIUI系统安全中心之自启动管理解密

    迄今为止,Android系统的手机已经在整个手机市场中占有很大的比重.其中小米手机更是因为它的性价比和销售模式普遍的出现在了人们的日长生活中. 废话不多说,进入正题.作为一个Android的开发者,避 ...