kingbase教程FG088-金仓数据库核心业务部署实战
内容简介
本文档介绍金仓数据库在核心业务系统中的部署实战,包括核心业务系统的特点、部署规划、实施步骤以及性能优化。风哥教程参考金仓官方文档《金仓数据库系统管理员手册》和《金仓数据库高可用解决方案》等相关文档。
核心业务系统对数据库的要求主要体现在高可用性、高性能、高安全性和可扩展性等方面,本文档将详细介绍金仓数据库如何满足这些要求,并通过实际案例展示其在核心业务系统中的应用价值。
目录大纲
Part01-基础概念与理论知识
1.1 核心业务系统特点
核心业务系统具有以下特点:,风哥提示:
- 高可用性要求:核心业务系统需要7*24小时稳定运行,确保服务不中断
- 高性能要求:面对大量并发访问,需要快速响应
- 高安全性要求:核心业务数据需要严格的安全防护措施
- 可扩展性要求:随着业务发展,需要灵活扩展
- 数据一致性要求:确保数据的一致性和完整性
- 容灾要求:需要具备完善的灾备方案
风哥提示:核心业务系统数据库选型时,高可用性和高性能是首要考虑因素,其次是安全性和可扩展性。
1.2 金仓数据库核心业务解决方案
金仓数据库针对核心业务系统特点,提供了以下解决方案:
- 高可用架构:支持主备复制、集群部署等高可用方案
- 性能优化:针对核心业务特点进行参数调优,学习交流加群风哥微信: itpux-com
- 安全加固:支持数据加密、访问控制、审计等安全特性
- 可扩展性:支持水平扩展和垂直扩展
- 容灾方案:支持异地灾备和多活架构
- 国产化支持:完全自主可控,支持国产操作系统和硬件
Part02-生产环境规划与建议
2.1 硬件环境规划
根据核心业务系统的特点,硬件环境规划建议如下:
| 组件 | 建议配置 |
|---|---|
| CPU | 至少32核,推荐64核或更高 |
| 内存 | 至少128GB,推荐256GB或更高 |
| 存储 | 使用SSD,容量根据数据量确定,推荐至少2TB |
| 网络 | 万兆网络或更高 |
2.2 软件环境规划
软件环境规划建议如下:
- 操作系统:推荐使用Oracle Linux 9.3或RHEL 9.3
- 数据库版本:KingbaseES V8.6及以上
- 中间件:根据业务需求选择合适的中间件
- 监控系统:Zabbix或Prometheus+Grafana
2.3 网络环境规划
网络环境规划建议如下:,学习交流加群风哥QQ113257174
- 网络隔离:生产环境与测试环境隔离
- 防火墙配置:严格控制访问权限
- VPN接入:远程管理使用VPN
- 负载均衡:前端使用负载均衡
- 网络冗余:配置双网卡和多路径
Part03-生产环境项目实施方案
3.1 部署架构设计
核心业务系统推荐使用以下部署架构:
- 集群架构:适用于核心业务系统,提供高可用性和负载均衡
- 主备架构:一主多备,确保数据安全和服务连续性
- 异地灾备:实现跨机房容灾,确保业务连续性
3.2 安装与配置
安装金仓数据库的步骤如下:,更多视频教程www.fgedu.net.cn
# 检查系统环境
# 检查系统版本
cat /etc/os-release
# 检查系统架构
uname -m
# 检查内存
free -h
# 检查磁盘
df -h
NAME=”Oracle Linux Server”
VERSION=”9.3″
ID=”ol”
ID_LIKE=”fedora”
VERSION_ID=”9.3″
PLATFORM_ID=”platform:el9″
PRETTY_NAME=”Oracle Linux Server 9.3″
ANSI_COLOR=”0;31″
x86_64
total used free shared buff/cache available
Mem: 251G 2.0G 247G 10M 2.0G 247G
Swap: 125G 0B 125G
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 6.0G 41G 13% /
/dev/sda3 2TB 5.0G 1.9T 1% /kingbase
# 安装依赖
dnf install -y gcc gcc-c++ make perl readline-devel zlib-devel
Last metadata expiration check: 0:00:00 ago on Thu 01 Jul 2023 10:00:00 AM CST.
Package gcc-11.3.1-4.3.el9.x86_64 is already installed.
Package gcc-c++-11.3.1-4.3.el9.x86_64 is already installed.
Package make-1:4.3-7.el9.x86_64 is already installed.
Package perl-5.32.1-482.el9.x86_64 is already installed.
Package readline-devel-8.1-3.el9.x86_64 is already installed.
Package zlib-devel-1.2.11-19.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
# 创建用户和目录
useradd -m kingbase
mkdir -p /kingbase/app
mkdir -p /kingbase/fgdata
chown -R kingbase:kingbase /kingbase
# 切换到kingbase用户
su – kingbase
# 解压安装包
tar -zxvf KingbaseES_V8R6_centos7_x86_64.tar.gz
# 运行安装脚本
./setup.sh
KingbaseES Setup Wizard
欢迎使用金仓数据库安装向导
请选择安装语言 [zh_CN]: zh_CN
请选择安装类型:
1. 图形化安装
2. 命令行安装
请选择: 1
…
安装完成!
# 主库配置
# 编辑kingbase.conf
vi /kingbase/fgdata/kingbase.conf
# 主库配置
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
synchronous_commit = on
listen_addresses = ‘*’
# 编辑pg_hba.conf
vi /kingbase/fgdata/pg_hba.conf
# 主库pg_hba.conf配置
host replication kingbase 192.168.1.2/32 md5
host replication kingbase 192.168.1.3/32 md5
# 重启主库
systemctl restart kingbase
# 在主库创建复制用户
ksql -U system -d fgedudb -c “CREATE USER kingbase REPLICATION LOGIN ENCRYPTED PASSWORD ‘Kingbase123!'”;
CREATE ROLE
# 备库1配置
# 停止备库
systemctl stop kingbase
# 清空数据目录
rm -rf /kingbase/fgdata/*
# 从主库同步数据
pg_basebackup -h 192.168.1.1 -p 54321 -U kingbase -D /kingbase/fgdata -F p -X stream -P
25362/25362 kB (100%), 1/1 tablespace
# 创建recovery.conf文件
vi /kingbase/fgdata/recovery.conf
# 备库1recovery.conf配置
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.1.1 port=54321 user=kingbase password=Kingbase123! application_name=standby1’
recovery_target_timeline = ‘latest’
# 启动备库1
systemctl start kingbase
# 检查复制状态
ksql -U system -d fgedudb -c “SELECT * FROM pg_stat_replication;”
pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state
——-+———-+———-+——————+—————+—————–+————-+——————————-+————–+———–+————+————+————+————+———–+———–+————+—————+————
12345 | 16384 | kingbase | standby1 | 192.168.1.2 | | 54321 | 2023-07-01 10:00:00.000000+08 | | streaming | 0/12345678 | 0/12345678 | 0/12345678 | 0/12345678 | | | | 1 | sync
(1 row)
# 调整数据库参数
vi /kingbase/fgdata/kingbase.conf
# 性能优化参数
shared_buffers = 64GB
work_mem = 128MB
maintenance_work_mem = 8GB
effective_cache_size = 192GB
temp_buffers = 1GB
max_connections = 1000
checkpoint_completion_target = 0.9
effective_io_concurrency = 200
random_page_cost = 1.1
# 重启数据库
systemctl restart kingbase
# 1. 环境准备
# 检查服务器状态
ping -c 3 192.168.1.1
ping -c 3 192.168.1.2
ping -c 3 192.168.1.3
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.123 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.112 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.105 ms
— 192.168.1.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.105/0.113/0.123/0.008 ms
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.135 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.121 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.118 ms
— 192.168.1.2 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.118/0.125/0.135/0.007 ms
PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.128 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.115 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.122 ms
— 192.168.1.3 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.115/0.121/0.128/0.005 ms
# 2. 安装数据库
# 在主库安装
su – kingbase
./setup.sh
安装完成!
# 3. 配置主备复制
# 主库配置
vi /kingbase/fgdata/kingbase.conf
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
synchronous_commit = on
listen_addresses = ‘*’
# 备库配置
pg_basebackup -h 192.168.1.1 -p 54321 -U kingbase -D /kingbase/fgdata -F p -X stream -P
25362/25362 kB (100%), 1/1 tablespace
# 4. 数据迁移
# 从原系统导出数据
pg_dump -h 192.168.2.1 -p 5432 -U postgres -d olddb -F c -f /backup/olddb.backup
# 导入到金仓数据库
pg_restore -h 192.168.1.1 -p 54321 -U system -d fgedudb -F c /backup/olddb.backup
pg_restore: connecting to database for restore
pg_restore: creating TABLE “public.fgedu_order”
pg_restore: creating TABLE “public.fgedu_inventory”
…
pg_restore: processing data for table “public.fgedu_order”
pg_restore: processing data for table “public.fgedu_inventory”
…
pg_restore: finished successfully
# 5. 应用集成
# 配置应用连接
vi /app/config/database.yml
database:
adapter: postgresql
host: 192.168.1.1
port: 54321
database: fgedudb
username: fgedu
password: Password123!
pool: 500
# 监控系统状态
ksql -U system -d fgedudb -c “SELECT pg_is_in_recovery(), pg_postmaster_start_time();”
pg_is_in_recovery | pg_postmaster_start_time
——————-+——————————————
f | 2023-07-01 00:00:00.000000+08
(1 row)
# 查看连接数
ksql -U system -d fgedudb -c “SELECT count(*) FROM pg_stat_activity;”
count
——-
1256
(1 row)
# 查看当前参数
ksql -U system -d fgedudb -c “SHOW shared_buffers;”
ksql -U system -d fgedudb -c “SHOW work_mem;”
ksql -U system -d fgedudb -c “SHOW maintenance_work_mem;”
shared_buffers
—————-
64GB
(1 row)
work_mem
———-
128MB
(1 row)
maintenance_work_mem
———————-
8GB
(1 row)
# 查看日志
tail -n 100 /kingbase/fgdata/log/kingbase.log
2023-07-01 10:00:00.000 CST [12345] LOG: starting KingbaseES V8R6C3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
2023-07-01 10:00:00.000 CST [12345] LOG: listening on IPv4 address “0.0.0.0”, port 54321
2023-07-01 10:00:00.000 CST [12345] LOG: listening on IPv6 address “::”, port 54321
2023-07-01 10:00:00.000 CST [12345] LOG: listening on Unix socket “/tmp/.s.KINGBASE.54321”
2023-07-01 10:00:00.000 CST [12346] LOG: database system was shut down at 2023-07-01 09:59:59 CST
2023-07-01 10:00:00.000 CST [12346] LOG: database system is ready to accept connections
# 检查系统版本
cat /etc/os-release
# 检查系统架构
uname -m
# 检查内存
free -h
# 检查磁盘
df -h
NAME=”Oracle Linux Server”
VERSION=”9.3″
ID=”ol”
ID_LIKE=”fedora”
VERSION_ID=”9.3″
PLATFORM_ID=”platform:el9″
PRETTY_NAME=”Oracle Linux Server 9.3″
ANSI_COLOR=”0;31″
x86_64
total used free shared buff/cache available
Mem: 251G 2.0G 247G 10M 2.0G 247G
Swap: 125G 0B 125G
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 6.0G 41G 13% /
/dev/sda3 2TB 5.0G 1.9T 1% /kingbase
# 安装依赖
dnf install -y gcc gcc-c++ make perl readline-devel zlib-devel
Last metadata expiration check: 0:00:00 ago on Thu 01 Jul 2023 10:00:00 AM CST.
Package gcc-11.3.1-4.3.el9.x86_64 is already installed.
Package gcc-c++-11.3.1-4.3.el9.x86_64 is already installed.
Package make-1:4.3-7.el9.x86_64 is already installed.
Package perl-5.32.1-482.el9.x86_64 is already installed.
Package readline-devel-8.1-3.el9.x86_64 is already installed.
Package zlib-devel-1.2.11-19.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
# 创建用户和目录
useradd -m kingbase
mkdir -p /kingbase/app
mkdir -p /kingbase/fgdata
chown -R kingbase:kingbase /kingbase
# 切换到kingbase用户
su – kingbase
# 解压安装包
tar -zxvf KingbaseES_V8R6_centos7_x86_64.tar.gz
# 运行安装脚本
./setup.sh
KingbaseES Setup Wizard
欢迎使用金仓数据库安装向导
请选择安装语言 [zh_CN]: zh_CN
请选择安装类型:
1. 图形化安装
2. 命令行安装
请选择: 1
…
安装完成!
3.3 高可用配置
配置主备复制的步骤如下:
# 主库配置
# 编辑kingbase.conf
vi /kingbase/fgdata/kingbase.conf
# 主库配置
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
synchronous_commit = on
listen_addresses = ‘*’
# 编辑pg_hba.conf
vi /kingbase/fgdata/pg_hba.conf
# 主库pg_hba.conf配置
host replication kingbase 192.168.1.2/32 md5
host replication kingbase 192.168.1.3/32 md5
# 重启主库
systemctl restart kingbase
# 在主库创建复制用户
ksql -U system -d fgedudb -c “CREATE USER kingbase REPLICATION LOGIN ENCRYPTED PASSWORD ‘Kingbase123!'”;
CREATE ROLE
# 备库1配置
# 停止备库
systemctl stop kingbase
# 清空数据目录
rm -rf /kingbase/fgdata/*
# 从主库同步数据
pg_basebackup -h 192.168.1.1 -p 54321 -U kingbase -D /kingbase/fgdata -F p -X stream -P
25362/25362 kB (100%), 1/1 tablespace
# 创建recovery.conf文件
vi /kingbase/fgdata/recovery.conf
# 备库1recovery.conf配置
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.1.1 port=54321 user=kingbase password=Kingbase123! application_name=standby1’
recovery_target_timeline = ‘latest’
# 启动备库1
systemctl start kingbase
# 检查复制状态
ksql -U system -d fgedudb -c “SELECT * FROM pg_stat_replication;”
pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state
——-+———-+———-+——————+—————+—————–+————-+——————————-+————–+———–+————+————+————+————+———–+———–+————+—————+————
12345 | 16384 | kingbase | standby1 | 192.168.1.2 | | 54321 | 2023-07-01 10:00:00.000000+08 | | streaming | 0/12345678 | 0/12345678 | 0/12345678 | 0/12345678 | | | | 1 | sync
(1 row)
3.4 性能优化
性能优化的步骤如下:
# 调整数据库参数
vi /kingbase/fgdata/kingbase.conf
# 性能优化参数
shared_buffers = 64GB
work_mem = 128MB
maintenance_work_mem = 8GB
effective_cache_size = 192GB
temp_buffers = 1GB
max_connections = 1000
checkpoint_completion_target = 0.9
effective_io_concurrency = 200
random_page_cost = 1.1
# 重启数据库
systemctl restart kingbase
Part04-生产案例与实战讲解
4.1 案例背景
某大型企业需要构建一个核心业务系统,涉及订单管理、库存管理、财务管理等多个模块,要求数据库系统具有高可用性、高性能和高安全性。经过选型,最终选择了金仓数据库作为核心数据库系统。
4.2 实施过程
实施过程分为以下几个阶段:
4.2.1 需求分析
- 业务系统数量:1个核心业务系统,包含5个模块
- 并发用户数:10000+
- 数据量:5TB+
- 性能要求:响应时间<0.5秒
- 可用性要求:99.999%
4.2.2 架构设计
- 部署架构:一主两备
- 存储:SAN存储,更多学习教程公众号风哥教程itpux_com
- 网络:万兆网络
- 监控:Zabbix+Grafana
4.2.3 实施步骤
# 1. 环境准备
# 检查服务器状态
ping -c 3 192.168.1.1
ping -c 3 192.168.1.2
ping -c 3 192.168.1.3
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.123 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.112 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.105 ms
— 192.168.1.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.105/0.113/0.123/0.008 ms
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.135 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.121 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.118 ms
— 192.168.1.2 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.118/0.125/0.135/0.007 ms
PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.128 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.115 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.122 ms
— 192.168.1.3 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.115/0.121/0.128/0.005 ms
# 2. 安装数据库
# 在主库安装
su – kingbase
./setup.sh
安装完成!
# 3. 配置主备复制
# 主库配置
vi /kingbase/fgdata/kingbase.conf
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
synchronous_commit = on
listen_addresses = ‘*’
# 备库配置
pg_basebackup -h 192.168.1.1 -p 54321 -U kingbase -D /kingbase/fgdata -F p -X stream -P
25362/25362 kB (100%), 1/1 tablespace
# 4. 数据迁移
# 从原系统导出数据
pg_dump -h 192.168.2.1 -p 5432 -U postgres -d olddb -F c -f /backup/olddb.backup
# 导入到金仓数据库
pg_restore -h 192.168.1.1 -p 54321 -U system -d fgedudb -F c /backup/olddb.backup
pg_restore: connecting to database for restore
pg_restore: creating TABLE “public.fgedu_order”
pg_restore: creating TABLE “public.fgedu_inventory”
…
pg_restore: processing data for table “public.fgedu_order”
pg_restore: processing data for table “public.fgedu_inventory”
…
pg_restore: finished successfully
# 5. 应用集成
# 配置应用连接
vi /app/config/database.yml
database:
adapter: postgresql
host: 192.168.1.1
port: 54321
database: fgedudb
username: fgedu
password: Password123!
pool: 500
4.3 运行效果
系统上线后,运行效果如下:
- 性能指标:
- 平均响应时间:0.3秒
- 并发处理能力:10000+用户
- 数据处理能力:50000+ transactions/秒
- 可靠性指标:
- 系统可用性:99.999%
- 故障恢复时间:<30秒
- 安全指标:
- 通过安全等级保护三级认证
- 无安全漏洞,from DB视频:www.itpux.com
# 监控系统状态
ksql -U system -d fgedudb -c “SELECT pg_is_in_recovery(), pg_postmaster_start_time();”
pg_is_in_recovery | pg_postmaster_start_time
——————-+——————————————
f | 2023-07-01 00:00:00.000000+08
(1 row)
# 查看连接数
ksql -U system -d fgedudb -c “SELECT count(*) FROM pg_stat_activity;”
count
——-
1256
(1 row)
Part05-风哥经验总结与分享
5.1 实施建议
- 前期规划:充分了解核心业务需求,制定详细的实施方案
- 环境准备:确保硬件和网络环境满足要求
- 测试验证:在正式上线前进行充分的测试,包括压力测试和故障演练
- 培训与文档:为运维人员提供培训和详细的文档
- 监控体系:建立完善的监控体系,及时发现和解决问题
5.2 性能优化
- 参数调优:根据核心业务特点调整数据库参数
- 索引优化:为频繁查询的字段创建索引
- SQL优化:优化复杂查询语句
- 存储优化:使用SSD存储,合理规划表空间
- 分区表:对大表进行分区,提高查询性能
- 连接池:使用连接池管理数据库连接
# 查看当前参数
ksql -U system -d fgedudb -c “SHOW shared_buffers;”
ksql -U system -d fgedudb -c “SHOW work_mem;”
ksql -U system -d fgedudb -c “SHOW maintenance_work_mem;”
shared_buffers
—————-
64GB
(1 row)
work_mem
———-
128MB
(1 row)
maintenance_work_mem
———————-
8GB
(1 row)
5.3 故障处理
- 故障监测:使用监控系统及时发现故障
- 故障定位:根据日志和监控信息定位故障原因
- 故障恢复:制定详细的故障恢复流程
- 演练:定期进行故障演练,提高应对能力
- 备份策略:制定完善的备份策略,确保数据安全
- 容灾方案:建立异地灾备,确保业务连续性
# 查看日志
tail -n 100 /kingbase/fgdata/log/kingbase.log
2023-07-01 10:00:00.000 CST [12345] LOG: starting KingbaseES V8R6C3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
2023-07-01 10:00:00.000 CST [12345] LOG: listening on IPv4 address “0.0.0.0”, port 54321
2023-07-01 10:00:00.000 CST [12345] LOG: listening on IPv6 address “::”, port 54321
2023-07-01 10:00:00.000 CST [12345] LOG: listening on Unix socket “/tmp/.s.KINGBASE.54321”
2023-07-01 10:00:00.000 CST [12346] LOG: database system was shut down at 2023-07-01 09:59:59 CST
2023-07-01 10:00:00.000 CST [12346] LOG: database system is ready to accept connections
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
