负载均衡的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集群
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集群搭建的更多相关文章
- apache、mod_jk负载均衡与tomcat集群
最近需要搭建apache和tomcat的集群,实现静态网站直接通过apache访问,动态网站转交给tomcat处理,实现负载均衡和tomcat集群配置. apache安装 wget http://ap ...
- LVS+Keepalived-DR模式负载均衡高可用集群
LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...
- linux系统下对网站实施负载均衡+高可用集群需要考虑的几点
随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...
- 高可用性、负载均衡的mysql集群解决方案
高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么 ...
- Apache+Tomcat部署负载均衡(或集群)
本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...
- 「mysql优化专题」高可用性、负载均衡的mysql集群解决方案(12)
一.为什么需要mysql集群? 一个庞大的分布式系统的性能瓶颈中,最脆弱的就是连接.连接有两个,一个是客户端与后端的连接,另一个是后端与数据库的连接.简单如图下两个蓝色框框(其实,这张图是我在悟空问答 ...
- Linux下"负载均衡+高可用"集群的考虑点 以及 高可用方案说明(Keepalive/Heartbeat)
当下Linux运维技术越来越受到企业的关注和追捧, 在某些企业, 尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案.那么如何实施Llinux集群架构,才能既有效 ...
- 3.dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?
作者:中华石杉 面试题 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 面试官心理分析 继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议 ...
- Lvs+keepAlived实现负载均衡高可用集群(DR实现)
第1章 LVS 简介 1.1 LVS介绍 LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能. ...
随机推荐
- Nginx-->基础-->排错-->nginx错误总结
一.启动时错误 1.错误提示: 2016/11/16 17:36:41 [emerg] 2458#2458: getpwnam("nginx") failed 查看错误日志文件内容 ...
- ORACLE 日常处理办法
Oracle删除当前用户下所有的表的方法 1.如果有删除用户的权限,则可以: drop user user_name cascade; 加了cascade就可以把用户连带的数据全部删掉. 删除后再创建 ...
- keepalived高可用
keepalived介绍 Keepalived是一个基于vrrp协议的高可用方案,vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务. 1. vrrp协议 VRRP是一种容错协议,它通过把几 ...
- 以太坊只能合约摸索——第一关,ubuntu开发环境部署
1. 安装“eth”命令行工具 sudo add-apt-repository ppa:ethereum/ethereum-qt sudo add-apt-repository ppa:ethereu ...
- net软件自动生成开发编程框架编程机器人
有一个.net自动生成平台(编程机器人)推荐给大家,常规几天十几天的工作,机器人几分钟搞定,不写一行代码,留下大把休闲时光,适应于聪明人:不想太累的程序员(看看风景泡泡妞),不想多请人的老板(有限资金 ...
- 在Xcode中使用Git进行源码版本控制
http://www.cocoachina.com/ios/20140524/8536.html 资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册 iOS开发 Swift Ap ...
- JSP日期时间转C#
DateTime.ParseExact("Wed Aug 03 16:46:24 CST 2016", "ddd MMM dd HH:mm:ss CST yyyy&quo ...
- 给angularJs的service建模
先回顾一下我们遇到的问题: 通过一个dialogService创建对话框,并将该service的参数数据通过resolve的方式传递给对话框的controller. controller解析数据后放置 ...
- 远程访问MySQL遇到的一些问题
一.access deny GRANT ALL PRIVILEGES ON *.* TO '用户名'@'IP地址' IDENTIFIED BY '密码' with grant option;
- tomcat 假死现象(转)
1.1 编写目的 为了方便大家以后发现进程假死的时候能够正常的分析并且第一时间保留现场快照. 1.2编写背景 最近服务器发现tomcat的应用会偶尔出现无法访问的情况.经过一段时间的观察最近又发现有台 ...