前言
随着我国计算机技术的发展,国产服务器、数据库产品也逐渐趋于成熟,作为政府行业,采用国内自主研发的服务器和数据库意义重大。北京市委已经率先采用国产化系统,相信不久的未来,政府行业将逐渐普及国产化系统和数据库。
然而,对于熟悉了Linux、MySQL或者Oracle的开发者或者运维来说,可能并不能很快的上手国产环境。而且关于国产系统和数据库的生态圈还不完善,有一些问题网上也查不到。本片文章就国内比较成熟的操作系统和数据库展开说明,以快速了解和上手国产化开发,并减少大家后续在国产化开发中的困难。下面会介绍中科方德操作系统和人大金仓数据库
正文
中科方德操作系统
界面大概如上图,国产化环境开发的难点,一方面就是在于这个操作系统
整体命令行操作类似CentOS。为了安全起见,该系统做了很多方面的限制:
- 由于禁止接入外网,所以安装部署只能通过RPM包或者Docker镜像的方式进行安装
- 该系统需要通过光盘刻录的方式,进行上传RPM或者Docker镜像,为了信息安全,也就是只能往机器上拷贝文件而不能把文件拷贝下来
- 不能通过命令后直接安装RPM软件,必须要通过类似软件管理图形化界面的方式进行安装,安装前必须填写软件的签名信息(比如联系人电话等信息、软件安装包本身的信息)
- 不能直接在机器上执行直接拷贝进来的外来可执行文件。例如通过光盘拷贝的shell脚本、以及免安装的软件、以及通过编译安装的软件等都没有权限执行
- 安装软件(例如数据库)等过程会缺少一些依赖库(C语言、C++的)。这些库文件一般也需要自行下载RPM包进行光盘刻录
- Docker必须使用厂商提供的安装软件,制作镜像推荐使用CentOS8,否者启动容器会没有权限
中科方德最佳实践
对于环境的部署,直接通过RPM或者Docker镜像的方式
对于 MySQL、Redis、Nginx、Zookeeper、ElasticSearch 等软件、官网有提供对应的RPM包,推荐直接通过软件管理器RPM的方式进行安装
找不到RPM包,推荐使用Docker部署
Docker部署注意事项
需要找一台CentOS8系统的服务器,用来制作镜像
制作好的镜像,通过 docker save命令保存,并通过光盘刻录到中科方德机器,再通过load命令安装镜像
以上就是中科方德操作系统需要注意的点,剩下的就是要求使用者熟练掌握Linux
人大金仓数据库
人大金仓(KingbaseES)是北京人大金仓信息技术股份有限公司自主研制开发的关系型数据库。下面重点介绍一下人大金仓的常用的运维和开发技巧
1. 安装人大金仓
1.1. 人大金仓安装必须通过普通用户安装,这里创建了一个kingbase用户
useradd kingbase passwd kingbase
1.2. 使用kingbase用户上传安装包,并进行解压
tar -zxvf KingbaseES_V008R003C002B0140_Lin64_install.tar.gz
1.3 执行setup.sh进行安装
1.4 选择安装集
默认是完全安装,即server和client全部安装
1.5 选择授权文件
安装过程必须指定厂商提供的授权文件,当然也可以自行到官网下载一个月试用版
1.6 选择安装文件夹
这里注意推荐使用默认文件夹,因为后面厂商提供的压测工具默认指定的是默认文件夹
1.7 大小写敏感
一般选择大小写不敏感,因为我们已有系统采用的数据大多是大小写不敏感的,根据自己目前的数据库进行选择
安装后的目录如下
进入Server文件夹,执行root.sh脚本即可启动数据库
2. 人大金仓操作
2.1. 启动与停止
systemctl start kingbase8d systemctl stop kingbase8d
2.2. 登录
进入Server/bin目录下
执行如下命令登录
- 其中SYSTEM为用户名
- 密码为123456
- TEST为数据库名
./ksql -USYSTEM-W123456-p54321 TEST
TEST为默认数据库,用于管理其他数据库
例如想查看当前机器kingbase总连接数,可以用以上命令进入TEST,执行
select connections(); //查看连接数 select * from SYS_STAT_ACTIVITY; //查看连接客户端
3. 开发方式
3.1 可以在安装目录下的Jdbc文件夹找到驱动jar包
3.2 然后在工程中集成jar包,测试连接
importjava.sql.Connection; importjava.sql.DatabaseMetaData; importjava.sql.DriverManager; importjava.sql.SQLException; publicclassTestConnection { publicstaticvoidmain(String[] args) throwsSQLException, ClassNotFoundException { Connectioncon; Class.forName("com.kingbase8.Driver"); Stringurl="jdbc:kingbase8://127.0.0.1:54321/MYDB"; con=DriverManager.getConnection("jdbc:kingbase8://127.0.0.1:54321/TEST","SYSTEM","123456"); System.out.println(con.getClientInfo()); DatabaseMetaDatametaData=con.getMetaData(); StringdriverVersion=metaData.getDriverVersion(); System.out.println(driverVersion); } }
3.3 图形化客户端使用
windows推荐使用官方工具,可以直接到官网下载安装,直接可以使用。操作跟Navicat差不多,官方工具支持很多功能如下:
- SQL语句到导入导出
- 数据迁移,将MySQL数据库迁移到人大金仓(需要使用人大金仓数据转换工具,同时连接MySQL,进行数据迁移操作)
- 建表操作,推荐使用官方图形化工具
mac推荐使用DataGrip,需要手动集成驱动
3.4 SQL适配
已有MySQL系统,迁移到人大金仓SQL语句需要一些改造
- 主要是函数适配
- 剔除不支持的特殊符号
- group by字段要跟查找字段保持一致
4. 人大金仓性能压测
4.1 定制化的sysbench使用
为了检测数据库性能,我们在中科方德机器上部署人大金仓和MySQL,并使用Sysbench进行数据库对比基准测试。
该sysbench由厂商定制,使用方式如下
//配置sysbench路径 exportPATH=`pwd`:$PATH//配置数据库lib路径 exportLD_LIBRARY_PATH=/home/v8.3-build/kliao/v8.2_with_history/postgres/release/lib //生成数据 sysbench oltp_common --kes-host=192.168.4.80 --kes-port=5433--kes-connect_timeout=10--kes-user=SYSTEM --kes-password=123--kes-db=TEST --table-size=1000 prepare //执行read_only sysbench oltp_read_only --kes-host=192.168.4.80 --kes-port=5433--kes-connect_timeout=10--kes-user=SYSTEM --kes-password=123--kes-db=TEST --table-size=1000--time=10--threads=8 run //执行oltp_write_only sysbench oltp_write_only --kes-host=192.168.4.80 --kes-port=5433--kes-connect_timeout=10--kes-user=SYSTEM --kes-password=123--kes-db=TEST --table-size=1000--time=10--threads=8 run
4.2 压测指标与结果分析
我们在16核心 64G的中科方德机器上进行压测。使用sysbench分别生成5000w数据,分别对这两个库表进行只读压测。线程数设置为10、50、60、70、80、90、100、150、200、300、500、600、700、800等,每个并发压测三次,每次并发测试的时长为180S,同一并发压测结果取平均值进行分析
可以看到如下结果
- 线程数在100以内,两者各项指标相当
- 线程数大于100,且继续增加线程的过程中,相比MySQL,人大金仓TPS、QPS均有明显下降