服务器技术

 首页 > 服务器技术 > Linux > 负载均衡的mariadb集群搭建[转]

负载均衡的mariadb集群搭建[转]

分享到:
【字体:
导读:
          集群介绍: Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。 主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员...

集群介绍:

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


      上一篇:linux下Apache+PHP+mysql+phpMyAdmin源码包安装配置[转]
      下一篇:linux 删除乱码文件夹或文件方法
    分享到:
    linux下Apache+PHP+mysql+phpMyAdmin源码...
    一、安装Apache2.2.221、到官网下载  http://httpd.apache.org/download.cgi    2、解压    tar  -zxvf httpd-2.2.22.tar.gz3、建立目标文件夹(注意以下所有操作都时在root用户下执行的)    mkdir /usr/local/apache2    也就是说等下安装的apache2要安装到这个文件夹里面4、配置    回到原来解压之后产...
    linux 删除乱码文件夹或文件方法
    有一种比较土的办法是把有用的数据拷贝出来,然后直接删除文件夹,这样达到删除乱码文件的效果。 第二种办法是: 一些乱码文件不可以通过普通的rm命令进行管理。可以通过删除i节点的方式删除。[root@192_168_100_35 musicwap]# ls??,?K?k?ͨa*.?J]?k?Φ??P???Z?b?A?R???X??u??.?????*H@B?T???xS*查看乱码文件的i结点[root@1...
    •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
    • 在这里……