当前位置: 首页 > news >正文

【金仓数据库产品体验官】Mycat适配KES分库分表体验

来了,来了,社区活动之金仓数据库产品体验官第四期开始了,本次在介绍产品体验的同时也希望感兴趣的朋友们一起来参加:

image.png

本文将深入探讨金仓数据库接口的多兼容特性,通过实际测试体验其兼容程度,为考虑数据库迁移或国产化替代的企业提供参考。话不多说,我们接下来开启体验之旅:

开启体验之旅

首先进行下载安装包:
下载地址:(https://www.kingbase.com.cn/download.html)
PS:下载安装包的同时,记得下载授权文件哦。

image.png

一、安装部署KingbaseES

查看Kingbase支持的OS版本:

image.png

KingbaseES支持各种主流的Linux操作系统64位发行版本,包括CentOS、中标麒麟、银河麒麟、统信UOS、Deepin、凝思、中科方德、欧拉等操作系统。

本次使用OS版本及配置:

image.png

1、新建kingbase用户
安装前必须创建 kingbase 用户,禁止使用 root 用户安装数据库。
创建用户所在的组:
groupadd dinstall -g 2001
创建用户:
useradd -G dinstall -m -d /home/kingbase -s /bin/bash -u 2001 kingbase
修改用户密码:
passwd kingbase

2、配置内核参数

cat >> /etc/sysctl.conf<<EOF
fs.aio-max-nr= 1048576
fs.file-max= 6815744
kernel.shmall= 2097152
kernel.shmmax= 4294967295
kernel.shmmni= 4096
kernel.sem= 250 32000 100 128
net.ipv4.ip_local_port_range= 9000 65500
net.core.rmem_default= 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
EOF

#生效配置

sysctl -p

3、修改文件打开最大数在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。

#设置永久生效:

vi /etc/security/limits.conf

  • soft nofile 65536 #*表示所有用户,可只设置root和kingbase用户,注意:设置nofile的hard limit不能大于/proc/sys/fs/nr_open,否则注销后将无法正常登陆
  • hard nofile 65535
  • soft nproc 65536
  • hard nproc 65535 #unlimited表示无限制
  • soft core unlimited
  • hard core unlimited
    登录Kingbase用户验证是否生效:

    image.png

4、RemoveIPC参数
systemd-logind服务中引入的一个特性,是当一个用户退出系统后,会删除所有有关的IPC对象。该特性由/etc/systemd/logind.conf文件中的RemoveIPC参数控制。某些操作系统会默认打开,会造成程序信号丢失等问题(只有redhat7及以上和一些特殊的国产Linux的版本需要修改,改之前可先查看此项是否为默认yes)。设置RemoveIPC=no。 设置后重启服务:
systemctl daemon-reload
systemctl restart systemd-logind.service

image.png

5、创建目录并授权
mkdir /data/kdb
chown -R kingbase:kingbase /data/kdb
6、设置环境变量:
cat >>~/.bash_profile<<eof<></eof<>
export PATH=/data/kdb/V9/Server/bin:$PATH
export KINGBASE_DATA=/data/kdb/V9/data
EOF

二、安装部署KingbaseES V9R1C10

因为前面我们写过一篇体验文章了,所以本次不过多介绍安装了,直接用kconsole.sh工具进行新建mysql兼容模式数据库:

image.png

image.png

image.png

image.png

image.png

sh /home/kingbase/.kes_dbca/root-service-kes_mysql.sh

image.png

image.png

Mysql模式已创建完成。

三、进行配置mycat

MyCat 是一款强大的开源数据库中间件,它本质上是一个模拟 MySQL 协议和行为的数据库代理。其核心价值在于,将对单一数据库的操作,透明地扩展为对一个由多个物理数据库节点组成的集群的操作。它解决了单机数据库在数据量、并发量和可用性上的瓶颈,为应用提供了近乎无限水平扩展的能力,同时保持了与原生 MySQL 高度兼容的使用体验。

前端连接(应用侧):

MyCat 对外完全伪装成一个独立的 MySQL 数据库。
应用程序无需任何代码修改,只需将数据库连接地址、端口、用户名和密码指向 Mycat 服务器(默认端口 8066)。
支持所有的 MySQL 命令和协议,如连接建立、SQL 执行、预处理语句、事务等,使得应用“无感知”地接入分布式架构。

后端路由(数据侧):

接收到应用发来的 SQL 后,MyCat 的 SQL 解析器会对其进行词法、语法分析。
路由器根据解析结果和预定义的分片规则,计算出该 SQL 应该被路由到哪个(或哪些)后端物理数据库节点。
执行器负责与这些后端数据库建立连接(支持连接池),并发起真实的 SQL 操作。
最后,对多个节点返回的结果进行数据合并、排序等聚合操作,再将最终结果返回给前端应用。

JDBC 扩展:除了原生支持的 MySQL 和 PostgreSQL,通过 JDBC 驱动,MyCat 理论上可以连接任何具有 JDBC 驱动的数据库(如 Oracle、SQL Server、金仓、达梦等),但非 MySQL 协议数据库在功能和性能上可能需要进行额外的适配和优化。

检查环境:

image.png

上传安装包并解压:

image.png


mv mycat /data/mycat

配置环境变量及驱动

export MYCAT_HOME=/data/mycat/mycat
export PATH=MYCATHOME/bin:MYCATH​OME/bin:PATH
将KES驱动放入 $MYCAT_HOME/lib 目录下;
cp /data/soft/kingbase8-9.0.0.jar .

image.png

金仓数据库准备数据库:

create database shanjian1;
create database shanjian2;

image.png

修改配置文件

在 $MYCAT_HOME/conf/server.xml 中配置对外提供的端口、用户名、密码等,提供了一个默认的用户root,密码是123456;
本次为测试环境,所以密码等配置默认保持不变。
PS:新增参数:<property name="defaultSchema">TESTDB</property>

image.png

在 $MYCAT_HOME/conf/rule.xml 中配置分片算法

image.png

image.png

在$MYCAT_HOME/conf/schema.xml 中配置数据库节点和表分片规则:
PS:本次mycat和金仓数据库在一台机器。

具体文件内容:

image.png

参数调整:wrapper.conf

image.png

后台启动服务

使用 mycat start 命令后台开启mycat服务,需手动创建logs目录,日志默认写入logs目录下的文件;

image.png

image.png


日志路径/data/mycat/logs/

image.png

进行测试数据:

drop table if exists customer cascade;
drop table if exists customer_addr cascade;
create table customer(id INT PRIMARY KEY,name VARCHAR(20));
create table customer_addr(id INT PRIMARY KEY,customer_id INT NOT NULL,address VARCHAR(255) NOT NULL,FOREIGN KEY (customer_id) REFERENCES customer(id));
insert into customer(id,name) values(1,‘aaa’);
insert into customer(id,name) values(2,‘bbb’);
insert into customer_addr(id,customer_id,address) values(1,1,‘Anhui’);
insert into customer_addr(id,customer_id,address) values(1,2,‘Shanghai’);
insert into customer_addr(id,customer_id,address) values(2,2,‘Sichuan’);
insert into customer_addr(id,customer_id,address) values(2,1,‘Yunnan’);
select * from customer;
select * from customer_addr;

image.png

金仓数据库进行验证:

image.png

image.png

说明已正常分库分表插入数据到金仓数据库。

总结

MyCat的核心思想在于 “分而治之” 。它通过精巧的代理与路由机制,将分布式数据库的复杂性封装于内,为上层的应用程序提供了一个统一、标准化的数据库访问入口。

通过体验得知金仓数据库可以有效地使用MyCat实现分库分表,在满足版本兼容、配置得当、并充分测试SQL兼容性的前提下,能够达到生产环境可用的‘准完美’状态。

它特别适合以下场景:
传统系统改造:使用金仓替代Oracle/MySQL,且需要分库分表的现有系统。
新系统架构:在项目初期就规划了分布式架构,并选择金仓作为底层存储。
最终建议:在正式上线前,必须进行全面的功能、性能和压力测试,尤其要模拟真实业务中最高频和最复杂的SQL操作,以验证该组合在特定业务场景下的稳定性和性能表现。

http://www.dtcms.com/a/474353.html

相关文章:

  • Unified AI Container
  • 接口测试(一)
  • 建设企业网站企业网上银行打死都不想干电商运营了
  • 汇编语言程序设计
  • python中进程和线程
  • 非对称加密使用举例
  • 多视图几何--密集匹配--patchmatchstereo翻译
  • Visual Basic 概述
  • redis项目知识体系
  • C++11(列表初始化、右值引用和移动语义)
  • 北京规划建设 杂志 官方网站多说与网站账号绑定
  • 网站建站外包公司产品做网站如何谁来维护价格
  • 电子商务网站开发文档济宁seo优化公司
  • 提效工具推荐-任务关系和状态自动转为 UML图
  • 集合(Set)的使用场景与习惯养成指南
  • 【每日一题】3186. 施咒的最大总伤害
  • 如何做新网站php 资讯网站
  • 专门做推广的网站吗哪个网站可以改字体
  • 小迪安全v2023学习笔记(一百零三讲)—— 漏扫项目篇PoC开发Rule语法反链判断不回显检测Yaml生成
  • MySQL的练习题二----创建表的练习题
  • 设备技术支持东莞网站建设大连模板网站制作多少钱
  • Dockerfile 指令详解与实战指南
  • 10.1 快速排序(排序(下))
  • 前端梳理体系从常问问题去完善-框架篇(Vue2Vue3)
  • 【数据分享】青藏高原10米分辨率DEM数据集
  • 网站正在建设中空白模板网站建设调查通知
  • 【星闪】Hi2821 | 低功耗开发 + 低功耗管理及按键唤醒例程
  • 怎么做网站的网盘品牌网站建设公司有哪些
  • 【Linux】Socket编程基础
  • 长春建网站wordpress 图片打开慢