问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MariaDB集群,数据库起不来?

发布网友 发布时间:2022-04-07 17:50

我来回答

2个回答

懂视网 时间:2022-04-07 22:12

集群介绍:

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集群搭建

    标签:

    热心网友 时间:2022-04-07 19:20

    操作:

    1、创建/data目录
    mkdir /data
    chmod 777 /data(要给这个目录至少要附加读写权限)

    2、把mariadb服务停掉:
      systemctl stop mariadb.service

    3、把/var/lib/mysql整个目录复制到/data
      cp -r /var/lib/mysql/* /data/
      这样就把MySQL的数据文档复制到了/data下

    4、编辑mariadb的配置文档/etc/my.cnf

    在[client]下添加:
    把原来的socket=/var/lib/mysql/mysql.sock,前边加#注释掉,添加socket=/data/mysql.sock(以防有问题再改回来)。

    在[mysqld]下添加:
     把原来的socket=/var/lib/mysql/mysql.sock,前边加#注释掉,添加socket=/data/mysql.sock(以防有问题再改回来)。

     datadir =/datal   (这行没有,需要自己加上)

    保存后退出。

    5、 chown -R mysql:mysql /data/mysql

    6、重新启动mariadb服务
      systemctl start mariadb.service。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 一级建造师四本书的复习顺序最好是怎样的? 二级建造师,施工管理、法规、实物,这三本教材的学习顺序?(以及二建考试心得)多谢了!!! 考一级建造师,学习顺序要怎么规划? 一建建筑自学,四本教材该从哪本教材开始学习?烦请排列个先后顺序。 一建学习顺序 一级建造师科目学习顺序建议 为什么 vivo 手机每次系统升级之后闹钟就不响或响的时间不对? Vivo s10闹钟版本经常不一样 2014年江苏高三历史试题小论文范文 ViVo手机闹钟在哪里调?? 怎样找回今日头条的帐号 高中历史专题总结 历史课堂小结怎样做? 在光大银行网银中可以添加什么类型的账户? 写历史总结怎么写? 光大银行怎么在网上查询账户?没有开通网银 我没有开通光大银行网银,请问怎么在网上查询账户 谁有大学生新学期计划以及上学期总结范文啊?帮帮忙啊,马上要交了。谢谢大家啊 光大银行网银账户查询中的光大亲友账户是什么意思? 光大银行网银登陆用户名是什么? 沥青路面工程量计算 沥青路面用量计算? 路面工程量计算方法有哪些 沥青砂浆和沥青木板的工程量怎么计算? 沥青混凝土道路怎么算每层的工程量 怎么算一条沥青道路的路基挖、装土方及清表土 寻找手绘妖孽古装美男 铣刨4cm旧沥青路面(1000㎡)表示什么意思 亲,请发给我几张银发古装妖孽美男图(越多越好啊,一定要是古代的,头发是银色的) 求古代美男(妖孽的,冷酷的,开朗的)服装外貌描写 看到紫衣黑发的同人图片,长得妖孽的美男,请问是哪个古风吧画的? 计算沥青路面清单工程量是否应该扣除路缘石所占面积,谢谢! 农行转账多久才能到账 你好,草酸可以洗玻璃吗 关于工程预算编制说明 求古代冰山美男,妖孽美男,小正太的外貌描写,最好是原创,谢谢各位了 农业银行转账多久到账啊,已经25个小时了,还没有到怎么回事? 草酸能去除汽车前挡风玻璃的水印吗 描写古代妖孽美男的句子 草酸能去透明胶布痕迹吗