负载均衡的mariadb集群搭建

集群介绍:

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下

[email protected]:/usr/src# tar -zxvf mariadb-galera-10.0.17-linux-x86_64.tar.gz

[email protected]:/usr/local# cp -R mariadb-galera-10.0.17-linux-x86_64 /usr/local/mysql

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

[email protected]:/usr/local# chown -R mariadb:mariadb mysql/

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

[email protected]:/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是否配置正确:

先连接上: [email protected]:/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

时间: 2024-10-13 06:14:54

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

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

随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实施linux集群架构,才能既有效保证网站健康运行,又能节省运维成本呢?下面依据近几年的运维经历,简单梳理下自己的一点感悟. (1)机房的选择如果有自己公司的机房那是再好不过的了:如果没有,建议放在BGP机房内托管,如果有选择的话,最好是选择带有硬件防火墙的机房,这样在安全方面也有保障:网站如若是放在

【转】高可用性、负载均衡的mysql集群解决方案

高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么是负载均衡 七.mysql集群部署和实现方法 八.负载均衡的配置和测试 九.Mysql集群系统的测试(测试方案+测试脚本+测试结果分析) l mysql的市场占有率 MySQL是世界上最流行的开源数据库,已有1100多万的击活安装,每天超过五万的下 载.MySQL为全球开发者.DBA和IT管理者在可

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

一.为什么需要mysql集群? 一个庞大的分布式系统的性能瓶颈中,最脆弱的就是连接.连接有两个,一个是客户端与后端的连接,另一个是后端与数据库的连接.简单如图下两个蓝色框框(其实,这张图是我在悟空问答解答别人的时候用Windows的自带画板画的,勿喷啊..) 版权归作者所有,哈哈 在客户端与后端中可以利用类似nginx的负载均衡解决(本专题是mysql优化,后面出高并发专题再详细讲解连接1的负载均衡),而数据库层是最脆弱的一层,一般在应用设计时在上游就需要把请求拦截掉,数据库层只承担"能力范围内

linux(ubuntu12.04)下搭建负载均衡和tomcat集群

上一篇博客我们搭建了nginx+tomcat的服务器配置,可是实现静态和动态分离,但是只有一个tomcat. 所以,接下来在我们的机器上搭建多个tomcat,首先我们先复制一份以前的tomcat(我的tomcat是在/usr/local/下),执行命令 cp /usr/local/tomcat1 /usr/local/tomcat2 应为要两个不同的tomcat使用不同的环境变量,所以我们需要修改/etc/profile的文件配置信息 sudo gedit /etc/profile 然后修改成这

lvs+heartbeat搭建负载均衡高可用集群

[172.25.48.1]vm1.example.com [172.25.48.4]vm4.example.com 集群依赖软件: 1.安装heartbeat集群软件 2.生成heartbeat配置文件. 3.配置heartbeat配置文件.

05.haproxy+mysql负载均衡 整合 redis集群+ssm

本篇重点讲解haproxy+mysql负载均衡,搭建完成后与之前搭建的redis+ssm进行整合 (注:这里用到了两台mysql数据库,分别安装两台虚拟机上,已经成功实现主主复制,如果有需要,请查看我另外一篇博客:http://www.cnblogs.com/cuijiale/p/8039421.html) 1.首先下载最新的的haproxy安装包:haproxy-1.7.9.tar.gz 下载完成后cp到特定的目录下/usr/local 2.安装haproxy 解压"tar -zxvf hap

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

一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么是负载均衡 七.mysql集群部署和实现方法 八.负载均衡的配置和测试 九.Mysql集群系统的测试(测试方案+测试脚本+测试结果分析) l mysql的市场占有率 MySQL是世界上最流行的开源数据库,已有1100多万的击活安装,每天超过五万的下 载.MySQL为全球开发者.DBA和IT管理者在可靠性.性能.易用性方面提供了选 择. 第三方

Haproxy+keepalived实现双主负载均衡高可用集群

项目说明 1.         使用LVS负载均衡用户请求到后端web服务器,并且实现健康状态检查 2.         使用keepalived高可用LVS,避免LVS单点故障 3.         集群中分别在LK-01和LK-02运行一个VIP地址,实现LVS双主 4.         用户通过DNS轮训的方式实现访问集群的负载均衡(不演示) 实验拓扑 环境介绍: IP地址 功能描述 HK-01 172.16.4.100 调度用户请求到后端web服务器,并且和LK-02互为备份 HK-02

nginx负载均衡实现tomcat集群方案简要小结

重点两部分:一.负载均衡二.tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问. nginx是一个常用的反向代理服务,可自定义模块,实现请求转发及负载均衡(根具体采用策略有关).为了tomcat集群的高可用性,还需要实现nginx的双机热备.  一,如果仅是对外提供一个页面访问,不用区分单一用户(不区分每个访问session,不涉及用户权限,用户资料等内容),仅仅配置nginx负载均衡策略即可. ng