一、 开篇前言本篇学习目标咱们这是《KingbaseES数据库零基础入门到高阶实战全教程》专栏的第一篇。其实也就是个开头。今天这篇咱们不搞那些特别虚的。主要目标就三个第一搞明白现在为什么大家都在弄国产数据库第二弄清楚KingbaseES到底是个啥东西它能干嘛第三咱们手把手在电脑上把安装前的环境给查验一遍。前篇知识回顾衔接因为这是第一篇前面没啥可回顾的。咱们就当是从零起步。如果你以前是搞开发的或者是搞运维的甚至你是个刚毕业的计算机学生都没关系。只要你对数据库有点概念比如知道数据是存在表里的这就够了。接下来的500篇我会带你一点点把这个国产数据库给啃下来。本篇适用场景通常来说你要是去了国企、事业单位或者说你们公司要搞信创项目领导突然丢给你一个任务“小王啊咱们明年要把数据库换成国产的你先去调研一下。”这时候你看这篇就对了。还有的情况是你以前一直用Oracle或者MySQL现在要转型做国产化适配这篇文章就是你的引路人。学完能掌握什么技能学完这篇你能在同事或者领导面前把信创和KingbaseES的门道说出个一二三来。也就是说你不会一听“国产数据库”就觉得心里没底。而且咱们文章最后带了实操你能自己在Linux服务器上把安装KingbaseES的前置条件给搞定。这对于后面咱们真正安装数据库是非常关键的一步。二、 核心概念超详细讲解2.1 到底什么是信创为什么现在要搞国产化数据库其实这两年的情况大家也都看到了。很多企事业单位都在搞替换。那为什么要替换呢原因其实很简单底层的核心技术不能一直攥在别人手里。以前咱们用国外的数据库比如Oracle用着是挺爽的功能也强。但是一旦人家不卖给你了或者说给你断供了你的业务就停了。这对国家层面的信息安全来说是个大问题。那么这个替换的过程我们就叫它信创。全称是信息技术应用创新。说白了就是从底层的芯片、操作系统到上层的数据库、中间件、应用软件全都用咱们国产的。那么数据库这一层其实是非常核心的。因为所有的业务数据不管是财务数据、人员档案还是交易记录全都存在数据库里。如果数据库这一层没搞定信创其实就是个空壳子。也就是说国产数据库是整个信创替换里最难啃的骨头之一。重点知识点信创不是某一个具体的技术它是一个生态替换的动作。咱们搞IT的以后会越来越多地碰到信创项目。KingbaseES就是在这样的背景下被推到台前的。2.2 KingbaseES是个什么东西KingbaseES到底是个啥呢说白了它就是一个关系型数据库管理系统。通常来说在企业层级里的项目当中用它来存数据。它不是开源的大家千万别去网上瞎找什么源码包找不到的。这是电科金仓出的商业数据库产品。电科金仓这公司背景挺硬的属于中国电科集团下面的在国产数据库圈子里算是老牌子了。那么这个数据库有啥特点呢其实最核心的一点就是它的兼容性特别好。它专门针对Oracle做了很深的兼容适配。以前很多企业用Oracle存储过程写了一大堆PL/SQL语法用得飞起。现在要换数据库如果换个语法完全不兼容的那开发人员不得把代码重写一遍这成本太大了。KingbaseES就考虑到了这一点它支持很多Oracle的语法和特性。也就是说你以前写Oracle的那套东西放到KingbaseES上稍微改改甚至不用改就能跑起来。这对国产化迁移来说是个巨大的优势。⚠️注意事项KingbaseES是闭源商业软件。咱们后续学习的所有操作都是基于官方提供的安装包来的。不要去信网上那些所谓的“破解版”或者“开源版”那些往往都带了后门或者被篡改过企业里用是要出大安全事故的。2.3 KingbaseES的核心优势有哪些咱们用大白话来拆解一下为什么信创项目里经常能看到KingbaseES的身影。①兼容性极强就像前面说的它对Oracle的兼容性做得非常细。不光是基础的SQL语法包括Oracle里的序列、触发器、包、存储过程甚至是一些系统函数它都做了兼容。其实很多时候开发人员迁移代码就是冲着这个去的。②安全性高国产化项目往往对安全要求极高。KingbaseES在安全这块下了很多功夫。比如它支持三权分立安全管理员、审计管理员、系统管理员分开支持强制访问控制MAC还有数据加密存储等等。这些特性在国企的等保测评里是非常吃香的。③高可用和集群方案成熟企业里的数据库不能宕机。KingbaseES有自己的集群管理工具能搞主从同步、读写分离。其实也就是一台机器挂了另一台马上能顶上去保证业务不断。后面咱们到了高阶阶段会专门讲这些集群怎么搭。④本地化服务好买商业数据库买的不仅仅是软件还有服务。电科金仓在国内有很多原厂的技术支持。出了问题能找到人这对于核心业务系统来说往往比技术本身还重要。2.4 和传统商业数据库Oracle的区别在哪既然说它兼容Oracle那它和Oracle到底有啥区别其实区别还是很大的。首先底层架构不一样。Oracle是一套完全自己搞的体系非常庞大装起来也费劲吃硬件。KingbaseES的架构相对轻量一些安装部署要快得多。其次使用习惯上。虽然KingbaseES兼容Oracle但不可能做到百分之百一模一样。有些Oracle里特有的Hint或者某些特别偏门的系统包在KingbaseES里可能就没有对应的东西。那么在迁移的时候就需要人工去改这些地方。咱们这个专栏后面会专门有一个阶段讲迁移适配到时候会把那些坑点一个个给你揪出来。最后就是成本。Oracle的授权费那是天价而且还要按CPU核数算。KingbaseES作为国产数据库价格上就有优势得多而且符合国家政策导向。重点知识点KingbaseES不是Oracle的简单翻版。它有自己的内核体系。它是在自身强大的基础上向外提供了一套类似Oracle的使用接口和语法糖让开发者能平滑过渡。2.5 KingbaseES的整体架构是怎样的咱们用一张图来看看KingbaseES大概是个什么结构。其实你不用怕看不懂很正常我先给你脑子里建个大概的印象就行。发送SQL请求解析SQL语法生成执行计划读写数据返回结果集返回给客户端写入操作日志客户端/应用程序KingbaseES服务端进程查询优化器执行器物理存储: 表空间/数据文件WAL日志文件咱们简单过一下这个图。客户端发个SQL过来比如SELECT * FROM user。服务端进程接到这个请求了。接着解析器会看看这个SQL语法对不对。如果不对直接给你报错退回去。语法没问题就交给查询优化器。优化器是个聪明东西它会想我是全表扫描快呢还是走索引快呢它选定一条最快的路生成一个执行计划。然后执行器就按照这个计划去物理存储里把数据翻出来。如果是修改数据的操作它还会顺手把操作记录写到WAL日志里这个日志非常重要是数据库宕机后恢复数据用的。最后数据原路返回给客户端。其实就是这么个流程。三、 手把手实操教学安装前的环境检查咱们学数据库光说不练假把式。虽然这是第一篇还没到真正安装那一步但咱们得把安装前的环境给准备好。其实很多新手装数据库失败90%都是环境没弄好。咱们今天就拿最常见的Linux环境CentOS/OpenCloudOS/Kylin等基于RedHat的发行版来演示。3.1 操作系统版本检查KingbaseES对操作系统是有要求的。太老的系统肯定不行。咱们得先看看机器上是个什么系统。① 登录到你的Linux服务器输入下面的命令cat/etc/os-release⌨️控制台输出结果说明[rootlocalhost ~]# cat /etc/os-releaseNAMECentOS LinuxVERSION7 (Core)IDcentosID_LIKErhel fedoraVERSION_ID7PRETTY_NAMECentOS Linux 7 (Core)ANSI_COLOR0;31CPE_NAMEcpe:/o:centos:centos:7看到这个输出说明咱们这台机器是CentOS 7。通常来说KingbaseES V8版本是支持CentOS 7的。如果你看到的是CentOS 6那就不行了太老了得换系统。现在国产化项目里经常用的是麒麟OS或者统信UOS其实命令都差不多你只要看VERSION_ID别太低就行。3.2 检查系统内存和磁盘空间数据库是最吃内存和磁盘的。内存太小跑起来卡死你磁盘太小数据存不下就崩溃了。① 检查内存使用情况输入命令free-h⌨️控制台输出结果说明[rootlocalhost ~]# free -htotal usedfreeshared buff/cache available Mem:3.7G 142M3.3G 12M 241M3.3G Swap:2.0G 0B2.0G咱们主要看total这一列。物理内存Mem有3.7G。其实对于测试学习来说2G是底线最好能有个4G或者8G。如果你连2G都没有我建议你还是换个机器吧别折腾了。另外Swap交换分区最好也有个2G左右当做缓冲用。② 检查磁盘空间输入命令df-h⌨️控制台输出结果说明[rootlocalhost ~]# df -hFilesystem Size Used Avail Use% Mounted on devtmpfs2.0G02.0G0% /dev tmpfs2.0G02.0G0% /dev/shm tmpfs2.0G 12M2.0G1% /run tmpfs2.0G02.0G0% /sys/fs/cgroup /dev/mapper/centos-root 50G2.5G 48G6% /...咱们重点看挂载在/根目录下的这个分区。Size是50GAvail可用还有48G。其实装数据库软件本身大概也就1-2个G但是你得给数据留地方啊。以后建表、导数据空间嗖嗖就没了。建议根目录至少留个20G以上的空闲空间。如果你这只有几个G赶紧去扩容磁盘。3.3 检查网络和端口情况数据库装好后是要对外提供服务的。咱们得看看默认的端口通常是54321有没有被别的程序占用。① 检查端口占用情况netstat-tulnp|grep54321⌨️控制台输出结果说明[rootlocalhost ~]# netstat -tulnp | grep 54321如果像上面这样敲完命令什么都没输出直接回到了命令行提示符。✅这就说明54321端口是空闲的没被占用非常好。如果输出了类似tcp 0 0 0.0.0.0:54321 0.0.0.0:* LISTEN 1234/xxx这样的内容那说明端口被占了你得找到那个占用端口的进程把它杀掉或者等会儿装数据库的时候换个端口。3.4 关闭防火墙和SELinux测试环境其实在生产环境里防火墙是不能关的而是要配置放行数据库端口。但是咱们这是学习环境为了省事防止安装过程中各种莫名其妙的网络拦截问题通常来说我们会把防火墙和SELinux先关掉。① 临时关闭防火墙systemctl stop firewalld② 永久关闭防火墙防止机器重启后又起来了systemctl disable firewalld⌨️控制台输出结果说明[rootlocalhost ~]# systemctl stop firewalld[rootlocalhost ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.看到输出了Removed symlink✅说明防火墙已经成功关闭并且开机也不会自启了。③ 永久关闭SELinuxSELinux是个安全子系统经常会挡住数据库访问文件。咱们得改它的配置文件。sed-is/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/config这个命令其实就是把配置文件里的SELINUXenforcing替换成SELINUXdisabled。敲完之后咱们得重启机器才能生效。为了不重启咱们可以临时关一下setenforce0⌨️控制台输出结果说明[rootlocalhost ~]# setenforce 0setenforce: SELinux is disabled看到SELinux is disabled✅这就说明当前SELinux已经被关掉了。接下来的安装就不会受它干扰了。四、 常见报错与问题排查其实在这个前置环境准备阶段新手也经常踩坑。我把几个最常见的给你列出来。4.1 报错使用netstat命令提示 command not found❌错误现象你在终端敲netstat -tulnp结果报错了bash: netstat:commandnot found原因分析那为什么会这样呢原因在于现在的Linux发行版特别是最小化安装的默认不自带net-tools这个网络工具包了。解决方案咱们得手动装一下。只要你的机器能连外网敲下面这个命令就行yuminstallnet-tools-y装完之后再敲netstat命令就能正常用了。4.2 报错关闭SELinux时报错 setenforce: SELinux is disabled❌错误现象有时候你敲setenforce 0它直接给你返回一句setenforce: SELinux is disabled你以为报错了。原因分析其实这不是报错。✅这恰恰说明你的SELinux当前已经是关闭状态了。也就是说你之前可能已经关过一次了或者系统默认就是关的。遇到这个提示直接忽略就行不用管它。4.3 问题磁盘空间不足怎么扩容❌错误现象在执行df -h的时候发现根目录/的Avail可用空间只剩几百兆了。原因分析**这种情况往往是因为你分配的虚拟机磁盘太小了或者系统日志把空间撑爆了。数据库是绝对装不下的。解决方案如果是虚拟机先在虚拟机软件里把虚拟磁盘扩容然后进系统用fdisk和resize2fs命令把分区扩容。这个操作比较复杂属于Linux运维的基础知识。如果你不会最简单的办法就是重新建一台大磁盘的虚拟机。咱们学数据库别在系统运维的坑里卡太久。五、 本篇总结咱们今天这篇算是开胃菜。其实主要讲了这么几点信创大背景下的国产数据库替换趋势这是个不可逆的过程。咱们搞IT的必须顺应趋势。KingbaseES是电科金仓的核心产品是闭源商业数据库。它最大的卖点是高度兼容Oracle非常适合做平滑迁移。它的架构其实也是客户端/服务端模式有解析器、优化器、执行器这套标准流程。咱们实操了安装前的环境检查。包括看系统版本、看内存磁盘、关防火墙、关SELinux。这些都是装数据库的前置条件不弄好后面全是坑。其实学数据库最重要的就是动手。你光看文档是学不会的。今天讲的那些Linux命令建议你自己在机器上多敲几遍看看输出是什么。六、 下一篇预告环境检查完了接下来是不是就可以装了还不行。KingbaseES不像有些软件双击就能装。它需要做一系列的系统内核参数配置比如调整最大文件句柄数、调整共享内存等等。如果不调这些参数数据库装上了一跑高并发业务就崩了。那么咱们第2篇文章《【KingbaseES数据库教程】安装前必做系统内核参数与资源限制深度调优》就会手把手带你改sysctl.conf和limits.conf文件。把这些底层的地基打牢了后面装数据库才能顺风顺水。咱们下篇见