现如今,当我们谈到关键核心技术,自主创新等话题,很多人都会非常关注芯片,但是还有一种IT的核心技术,它的重要性丝毫不在芯片之下,那就是数据库。
中国有十四亿人口,每秒钟都产生海量的数据,从日常的水电费的记录缴纳, 到日常的网络购物,再到时下流行的数字货币交易,乃至物联网技术应用等方面,都跟数据库有着密切的联系,息息相关。由此可见,数据库的处理能力、安全及可靠性等等要求之高可想而知。
数据库的任务就是确保交易过程要高效准确的被记录。尤其是移动支付的普及,金融支付手段的移动化和碎片化,使数据量激增。大量的交易记录和金额,不仅关乎国计民生,还涉及到国家安全和社会稳定。
银行的业务系统经常会在短时间内出现海量高并发的交易需求,那这样的存钱、取钱、贷款等交易过程。属于银行核心交易系统。因此支撑核心交易数据库非常的重要。
近年来,在中国金融科技创新的大环境,给了一批敢于坚持自主创新,探索分布式数据库发展道路的先行者探索的机会。其中,新一代分布式数据库OceanBase就是其中的代表。
近年来,我们已经看到了芯片和操作系统等关键基础技术的创新成果。一批批未来之星正在冉冉升起。正在不断夯实底层技术的创新实力,也给中国其他企业带来丰富的成功经验。
面对未来,中国自主研发仍然需要厚积薄发,更多的IT企业正在走自主创新之路。相信国产数据库的明天会更加美好。
「DB-Engines 排名」是按流行程度对数据库管理系统进行排名,涵盖 380 多个系统,每月更新一次。 排名标准包括搜索数据库名称时的搜索引擎结果的数量、Google 趋势、Stack Overflow、社交网络和提及数据库的工作机会等数据,综合比较排名。
参考链接🔗:https://hellogithub.com/report/db-engines
国内数据库流行排行榜以TiDB、OceanBase、达梦、openGauss等为首。
参考链接🔊:中国数据库排行 - 墨天轮
OceanBase 始创于 2010 年,是完全自主研发的企业级原生分布式数据库。2020年 OceanBase 成立北京奥星贝斯科技有限公司并开始独立商业化运作,目前是分布式数据库的领军企业之一。致力于为企业提供一站式的数据管理解决方案和服务,为企业核心系统提供稳定可靠的数据底座。
OceanBase 社区版是一款开源分布式 HTAP(Hybrid Transactional/Analytical Processing)数据库管理系统,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 内核通过大规模商用场景的考验,已服务众多行业客户,现面向未来持续构建内核技术竞争力。
稳定可信赖:经历双 11 共 9 年的验证,蚂蚁集团百万规模使用,单服务器故障自愈,跨城多机房容灾,数据多副本存储,创新推出“三地五中心”城市级容灾新标准,最高可达金融 6 级标准(RPO=0,RTO<=30 秒)。
高性能数据:海量数据下, 支持在线事务处理 OLTP 和在线分析处理 OLAP 业务线性扩展, 并相互隔离。
更低的存储和运维成本:支持部署运行在 PC 服务器和低端 SSD,高存储压缩率降低存储成本,无中心化设计和多租户混部大幅提升计算资源利用率。
兼容MySQL 开源生态:与 MySQL生态高度兼容,提供数据库全生命周期的工具产品,组件化架构全面开放生态,从开发调试到生产运维及数据传输全方位护航。
实验说明:本实验是基于Anolis OS 8.6 版本系统搭建 OceanBase 数据库。
操作系统 | Anolis OS 8.X 版本(内核 Linux 3.10.0 版本及以上) |
---|---|
CPU | 最低要求 2 核,推荐 8 核及以上 |
内存 | 最低要求 8G,推荐 32G 及以上 |
磁盘类型 | 推荐使用 SSD |
磁盘存储空间 | 内存大小的 4 倍及以上 |
文件系统 | EXT4 戓 XFS,当数据超过 16T 时,使用 XFS |
注:若选择使用 Docker 部署 OceanBase 数据库,则最低要求 10G。
数据库部署工具 OceanBase Deployer(简称 OBD),使用此工具可以快速部署OceanBase。
依次执行以下命令:
# 添加第三方YUM软件源
sudo yum install -y yum-utils
# 添加 OceanBase 的官方软件源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
# 执行命令安装 OBD
sudo yum install -y ob-deploy
2.1 下载 OceanBase 快速体验示例配置文件quick_start_demo.yaml
# This is a quick start demo config file for ob-deploy
# Please refer to https://github.com/oceanbase/obdeploy/tree/master/example for more examples
# You must change the config item `home_path` to deploy an oceanbase instance
# You can use the shell commands below to deploy an oceanbase instance:
# yum install -y yum-utils
# yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
# yum install -y ob-deploy
# obd cluster autodeploy obcluster -c quick_start.yaml
oceanbase-ce:
servers:
# Please don't use hostname, only IP can be supported
- name: 127.0.0.1
# Please don't use hostname, only IP can be supported
ip: 127.0.0.1
global:
# The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
home_path: /home/xyb/observer
# The directory for data storage. The default value is $home_path/store.
# data_dir: /data
# The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
# redo_dir: /redo
# Please set devname as the network adaptor's name whose ip is in the setting of severs.
# if set severs as "127.0.0.1", please set devname as "lo"
# if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
devname: lo
mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
zone: zone1
cluster_id: 1
# please set memory limit to a suitable value which is matching resource.
memory_limit: 8G # The maximum running memory for an observer
system_memory: 4G # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
stack_size: 512K
cpu_count: 16
cache_wash_threshold: 1G
__min_full_resource_pool_memory: 268435456
workers_per_cpu_quota: 10
schema_history_expire_time: 1d
# The value of net_thread_count had better be same as cpu's core number.
net_thread_count: 4
sys_bkgd_migration_retry_num: 3
minor_freeze_times: 10
enable_separate_sys_clog: 0
enable_merge_by_turn: false
datafile_size: 5G
# datafile_disk_percentage: 20 # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
syslog_level: INFO # System log level. The default value is INFO.
enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
# root_password: # root user password, can be empty
appname: XYBOB
2.2 在配置文件中添加 home_path
oceanbase-ce:
global:
# The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
home_path: /xyb/observer
3.1 运行以下命令部署集群:
obd cluster autodeploy XYBOB -c quick_start_demo.yaml -A
- 其中,
xybOB
为集群名称,可自行定义集群名称。
- 一个集群只能有一个名称,且集群名称不能重复。
- 增加 -A 参数后,将自动用系统剩余资源创建 test 租户。
[root@Anolis ~]# obd cluster autodeploy XYBOB -c quick_start_demo.yaml -A
oceanbase-ce-3.1.4 already installed.
Cluster param config check ok
Open ssh connection ok
Generate observer configuration ok
oceanbase-ce-3.1.4 already installed.
+-------------------------------------------------------------------------------------------+
| Packages |
+--------------+---------+-----------------------+------------------------------------------+
| Repository | Version | Release | Md5 |
+--------------+---------+-----------------------+------------------------------------------+
| oceanbase-ce | 3.1.4 | 10000092022071511.el8 | 6e37b476af77b883861e2e334bc0fcb5080a2290 |
+--------------+---------+-----------------------+------------------------------------------+
Repository integrity check ok
Parameter check ok
Open ssh connection ok
Cluster status check ok
Initializes observer work home ok
Remote oceanbase-ce-3.1.4-10000092022071511.el8-6e37b476af77b883861e2e334bc0fcb5080a2290 repository install ok
Remote oceanbase-ce-3.1.4-10000092022071511.el8-6e37b476af77b883861e2e334bc0fcb5080a2290 repository lib check !!
Try to get lib-repository
oceanbase-ce-libs-3.1.4 already installed.
Remote oceanbase-ce-libs-3.1.4-10000092022071511.el8-b2b744a809402059b38ce99265ced33db09860d4 repository install ok
Remote oceanbase-ce-3.1.4-10000092022071511.el8-6e37b476af77b883861e2e334bc0fcb5080a2290 repository lib check ok
XYBOB deployed
Get local repositories ok
Search plugins ok
Open ssh connection ok
Load cluster param plugin ok
Check before start observer ok
[WARN] (127.0.0.1) The recommended value of fs.aio-max-nr is 1048576 (Current value: 65536)
[WARN] (127.0.0.1) clog and data use the same disk (/home)
Start observer ok
observer program health check ok
Connect to observer ok
Initialize cluster
Cluster bootstrap ok
Create tenant test ok
Wait for observer init ok
+---------------------------------------------+
| observer |
+-----------+---------+------+-------+--------+
| ip | version | port | zone | status |
+-----------+---------+------+-------+--------+
| 127.0.0.1 | 3.1.4 | 2881 | zone1 | active |
+-----------+---------+------+-------+--------+
XYBOB running
[root@Anolis ~]#
3.2、运行以下命令查看集群状态:
obd cluster display XYBOB
[root@Anolis ~]# obd cluster display XYBOB
Get local repositories and plugins ok
Open ssh connection ok
Cluster status check ok
Connect to observer ok
Wait for observer init ok
+---------------------------------------------+
| observer |
+-----------+---------+------+-------+--------+
| ip | version | port | zone | status |
+-----------+---------+------+-------+--------+
| 127.0.0.1 | 3.1.4 | 2881 | zone1 | active |
+-----------+---------+------+-------+--------+
[root@Anolis ~]#
4.1 运行以下命令启动XYBOB集群:
obd cluster start XYBOB
❌报错❌
[root@Anolis ~]# obd cluster start XYBOB
Get local repositories ok
Search plugins ok
Open ssh connection ok
Load cluster param plugin ok
Check before start observer x
[WARN] (127.0.0.1) The recommended value of fs.aio-max-nr is 1048576 (Current value: 65536)
[ERROR] OBD-1007: (127.0.0.1) open files must not be less than 20000 (Current value: 1024)
[WARN] (127.0.0.1) clog and data use the same disk (/)
See https://open.oceanbase.com/docs/obd-cn/V1.4.0/10000000000436999 .
✅解决✅
[root@Anolis ~]# echo 1048576 > /proc/sys/fs/file-max
[root@Anolis ~]# ulimit -HSn 1048576
启动XYBOB集群:
[root@Anolis ~]# obd cluster start XYBOB
Get local repositories ok
Search plugins ok
Open ssh connection ok
Load cluster param plugin ok
Check before start observer ok
[WARN] (127.0.0.1) The recommended value of fs.aio-max-nr is 1048576 (Current value: 65536)
[WARN] (127.0.0.1) clog and data use the same disk (/)
Start observer ok
observer program health check ok
Connect to observer ok
Initialize cluster
Cluster bootstrap ok
Create tenant test ok
Wait for observer init ok
+---------------------------------------------+
| observer |
+-----------+---------+------+-------+--------+
| ip | version | port | zone | status |
+-----------+---------+------+-------+--------+
| 127.0.0.1 | 3.1.4 | 2881 | zone1 | active |
+-----------+---------+------+-------+--------+
XYBOB running
[root@Anolis ~]# yum install -y obclient
[root@Anolis ~]# obd cluster start XYBOB
Get local repositories ok
Search plugins ok
Open ssh connection ok
Load cluster param plugin ok
Cluster status check ok
Deploy "XYBOB" is running
5.1 通过宿主机查看 OBServer 状态
# 登录 OBServer 所在的宿主机。在命令行工具中运行以下命令查看 observer 进程。
[root@Anolis ~]# ps -ef | grep observer
root 1520 1 99 08:25 ? 00:20:14 /home/xyb/observer/bin/observer -r 127.0.0.1:2882:2881 -p 2881 -P 2882 -z zone1 -n XYBOB -c 1 -d /home/xyb/observer/store -i lo -l INFO -o __min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=5G,enable_syslog_wf=True,enable_syslog_recycle=True,max_syslog_file_count=4
root 2189 1429 0 08:44 pts/0 00:00:00 grep --color=auto observer
5.2 通过视图查看 OBServer 租户信息
use oceanbase;
select * from gv$tenant;
7.1 安装 OceanBase 数据库客户端 OBClient:
sudo yum install -y obclient
7.2 运行以下命令,使用 OBClient 客户端连接 OceanBase 数据库:
obclient -h127.0.0.1 -P2881 -uroot@test
SELECT SYSDATE();
8.1 安装Go环境
构建 OBAgent 需要
Go 1.14
版本及以上。
下载地址
🎁:Downloads - The Go Programming Language
下载链接
🎨:https://golang.google.cn/dl/go1.19.2.linux-amd64.tar.gz
[root@Anolis ~]# go version
go version go1.19.2 linux/amd64
安装Go环境具体过程参考此文章: 采用『Prometheus+Grafana』安装部署方式实现对Linux系统主机监控管理
8.2 安装OBAgent
rpm -ivh obagent-1.1.2-9.el7.x86_64.rpm
[root@Anolis ~]# rpm -ivh obagent-1.1.2-9.el7.x86_64.rpm
Verifying... ################################# [100%]
准备中... ################################# [100%]
软件包 obagent-1.1.2-9.el7.x86_64 已经安装
[root@Anolis ~]#
9.1 下载 Prometheus 软件。
9.2 解压并安装 Prometheus 软件。
tar -zxvf Prometheus-2.30.3.linux-amd64.tar.gz -C /usr/local/
9.3 复制 OBAgent 生成的 prometheus 配置文件到 prometheus 安装目录中。
说明:OBAgent 携带了 prometheus 配置文件的模版,使用 OBD 部署 OBAgent, 会自动填充模版中的内容。该配置文件被放在 OBAgent 安装目录下,如
/home/admin/obagent/conf/Prometheus_config/
。这个配置文件可以供 Prometheus 软件直接使用。
mv /home/admin/obagent/conf/prometheus_config/ /usr/local/prometheus-2.39.1.linux-amd64/
9.4 新建 Prometheus 服务文件。
sudo mkdir /var/lib/Prometheus
sudo vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
[Service]
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/Prometheus --web.enable-lifecycle --web.external-url=http://192.168.200.55:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target
9.5 启动 Prometheus 服务。
sudo systemctl daemon-reload
sudo systemctl start prometheus.service
sudo systemctl status prometheus.service
9.6 查看 prometheus 是否启动
[root@Anolis ~]# netstat -ntlp | grep 9090
tcp6 0 0 :::9090 :::* LISTEN 3772/prometheus
9.7 访问WEB界面,查看数据库告警
使用浏览器访问:http://192.168.200.55:9090/