• 负载均衡的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下

       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

  • 相关阅读:
    【题解】Luogu P3217 [HNOI2011]数矩形
    【题解】 Luogu P4312 / SP4155 [COCI 2009] OTOCI / 极地旅行社
    珂朵莉树详解
    数学手法之线性基
    【题解】luogu P3386 【模板】二分图匹配
    【题解】Luogu P2146 [NOI2015]软件包管理器
    css 垂直居中方法汇总
    css3中什么时候用transition什么时候用animation实现动画
    前端进阶(8)
    前端进阶(12)
  • 原文地址:https://www.cnblogs.com/guoyuanwei/p/4509475.html
Copyright © 2020-2023  润新知