数据库集群的搭建

1 海量数据的存储问题

如今随着互联网的发展,数据的量级也是呈指数的增长,从GBTBPB。对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。

但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系型数据库。如果使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储。

当数据太多,以至于数据库存不下的时候,我们要做数据库分片。

2 什么是数据库分片

简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。

数据的切分根据其切分规则的类型,可以分为两种切分模式。

(1)一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分。数据量比较大,是因为有几张表中存放的数据量比较大,比如商品表、订单表、商品表等,我把不同的表放到不同的数据库中,订单库、商品库、用户库等。将不同的表放到不同的数据库中,这就是所谓的垂直切割。这种思路是可行的,但是假如我只是单张表数据量特别大,即便是水平切分之后,存这张表的数据库性能也会很低。

(2)另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。大多数的互联网网站采取的是水平切割,因为垂直切割解决不了单表数据量过大的问题。

当数据库分片后(水平切割),数据由一个数据库分散到多个数据库中。此时系统要查询时需要切换不同的数据库进行查询,那么系统如何知道要查询的数据在哪个数据库中?当添加一条记录时要向哪个数据库中插入呢?这些问题处理起来都是非常的麻烦。

这种情况下可以使用一个数据库中间件mycat来解决相关的问题。接下来了解一下什么是mycat

3 什么是Mycat

Mycat背后是阿里曾经开源的知名产品——CobarCobar的核心功能和优势是MySQL数据库分片,此产品曾经广为流传,据说最早的发起者对Mysql很精通,后来从阿里跳槽了,阿里随后将Cobar开源,并维持到2013年年初。然后,就没有然后了。

Cobar的思路和实现路径的确不错。基于Java开发的,实现了MySQL公开的二进制传输协议,巧妙地将自己伪装成一个MySQL Server,目前市面上绝大多数MySQL客户端工具和应用都能兼容。比自己实现一个新的数据库协议要明智的多,因为生态环境在那里摆着。

Mycat是基于cobar演变而来,对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合、Join等基本特性,同时兼容绝大多数数据库称为通用的数据库中间件。

简单的说,Mycat就是:一个新颖的数据库中间件产品,支持mysql集群,或者marisdb cluster,提供高可用性数据分片集群。你可以像使用mysql一样使用mycat。对于开发人员来说根本感觉不到mycat的存在。

 

4 Mycat具体是如何进行数据库分片的呢?

答:这一块不是我做的,我并不太清楚内部实现原理。

 

5 Mycat读写分离

数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常是1-3个读节点的配置

 

Mycat读写分离和自动切换机制,需要mysql的主从复制机制配合。

 

6 Mysql的主从复制

 

主从复制需要注意的地方

1、主DB server和从DB server数据库的版本一致

2、主DB server和从DB server数据库数据名称一致

3、主DB server开启二进制日志,DB server和从DB serverserver_id都必须唯一

 

注意:面试的时候经常会问,你是如何解决项目中的分布式事务问题的?

:我们项目中使用Mycat管理数据库集群,Mycat本身支持分布式事务。

 

 

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kingbase是一款国产的关系型数据库管理系统,基于PostgreSQL二次开发而来,具有高性能、高可用、高可靠性和易于管理等特点。下面介绍如何搭建Kingbase数据库集群。 1. 安装Kingbase 首先需要安装Kingbase数据库管理系统。可以从官网下载安装包进行安装。安装过程中需要注意选择安装路径和安装组件,如需安装Kingbase集群版,则需要选择“集群版”组件。 2. 配置Kingbase集群 在安装完成后,需要对Kingbase集群进行配置。具体步骤如下: (1)创建Kingbase集群配置文件 在Kingbase安装目录下创建一个新的目录,例如“/data/kingbase/cluster”,然后在该目录下创建一个新的配置文件,例如“kingbase.conf”。 (2)配置Kingbase集群参数 在配置文件中添加如下配置参数: shared_buffers = 128MB work_mem = 4MB max_connections = 1000 max_prepared_transactions = 100 listen_addresses = '*' port = 5432 wal_level = hot_standby max_wal_senders = 8 wal_keep_segments = 8 synchronous_commit = off max_standby_archive_delay = 30s max_standby_streaming_delay = 30s 其中,shared_buffers表示共享缓冲区大小,work_mem表示每个会话使用的内存大小,max_connections表示最大连接数,listen_addresses表示允许连接的IP地址,port表示监听的端口,wal_level表示WAL日志记录级别,max_wal_senders表示最大WAL发送者数,wal_keep_segments表示保留的WAL日志段数,synchronous_commit表示同步提交方式,max_standby_archive_delay和max_standby_streaming_delay表示主备延迟时间。 (3)初始化Kingbase集群 执行如下命令初始化Kingbase集群: initdb -D /data/kingbase/cluster (4)启动Kingbase集群 执行如下命令启动Kingbase集群: pg_ctl -D /data/kingbase/cluster -l /data/kingbase/cluster/logfile start 3. 配置Kingbase主备复制 Kingbase支持主备复制功能,可以实现数据的备份和高可用性。具体步骤如下: (1)创建主备复制用户 在Kingbase中创建一个新用户,用于主备复制。例如: create user repl with replication password 'repl123'; (2)配置主数据库 在主数据库中修改配置文件“kingbase.conf”,添加如下配置参数: wal_level = hot_standby max_wal_senders = 8 wal_keep_segments = 8 archive_mode = on archive_command = 'cp %p /data/archive/%f' 其中,archive_mode表示开启归档模式,archive_command表示归档命令。 (3)配置备份数据库 在备份数据库中修改配置文件“kingbase.conf”,添加如下配置参数: hot_standby = on primary_conninfo = 'host=192.168.1.100 port=5432 user=repl password=repl123' restore_command = 'cp /data/archive/%f %p' 其中,hot_standby表示开启热备模式,primary_conninfo表示主数据库连接信息,restore_command表示恢复命令。 (4)启动备份数据库 执行如下命令启动备份数据库: pg_ctl -D /data/kingbase/cluster -l /data/kingbase/cluster/logfile start (5)测试主备复制 在主数据库中创建一个测试表,并插入一条记录: create table test(id int, name varchar(20)); insert into test values(1, 'kingbase'); 然后在备份数据库中查询该表: select * from test; 可以看到备份数据库中已经同步了主数据库中的数据。 4. 配置Kingbase集群负载均衡 Kingbase集群可以通过负载均衡实现高可用和高性能。可以使用HAProxy等工具进行负载均衡配置。 具体步骤如下: (1)安装HAProxy 在Linux系统中执行如下命令安装HAProxy: yum install haproxy (2)配置HAProxy 在HAProxy配置文件“/etc/haproxy/haproxy.cfg”中添加如下配置: listen kingbase_cluster bind 192.168.1.100:5432 mode tcp balance roundrobin server kingbase1 192.168.1.101:5432 check server kingbase2 192.168.1.102:5432 check 其中,192.168.1.100为HAProxy的IP地址,192.168.1.101和192.168.1.102为Kingbase集群中两个节点的IP地址。 (3)重启HAProxy 执行如下命令重启HAProxy: systemctl restart haproxy 5. 总结 通过以上步骤,我们可以搭建一个基于Kingbase的数据库集群,实现数据备份、高可用和负载均衡等功能,提高数据库的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值