kingbase教程FG086-金仓数据库政府行业生产案例
内容简介
本文档介绍金仓数据库在政府行业的生产案例,包括政府行业数据库的特点、需求分析、实施方案以及实际应用效果。风哥教程参考金仓官方文档《金仓数据库系统管理员手册》和《金仓数据库高可用解决方案》等相关文档。
政府行业对数据库的要求主要体现在安全性、可靠性、高性能和合规性等方面,本文档将详细介绍金仓数据库如何满足这些要求,并通过实际案例展示其在政府行业的应用价值。
目录大纲
Part01-基础概念与理论知识
1.1 政府行业数据库特点
政府行业数据库具有以下特点:
- 高安全性要求:政府数据涉及国家机密和公民个人信息,需要严格的安全防护措施
- 高可靠性要求:政府系统需要7*24小时稳定运行,确保服务不中断
- 高性能要求:面对大量并发访问,需要快速响应
- 合规性要求:需要符合国家相关法律法规和标准
- 可扩展性要求:随着业务发展,需要灵活扩展
风哥提示:政府行业数据库选型时,安全性和可靠性是首要考虑因素,其次是性能和可扩展性。
1.2 金仓数据库政府行业解决方案
金仓数据库针对政府行业特点,提供了以下解决方案:
- 安全加固:支持数据加密、访问控制、审计等安全特性,学习交流加群风哥微信: itpux-com
- 高可用架构:支持主备复制、集群部署等高可用方案
- 性能优化:针对政府业务特点进行参数调优
- 合规性:符合国家相关标准和要求
- 国产化支持:完全自主可控,支持国产操作系统和硬件
Part02-生产环境规划与建议
2.1 硬件环境规划
根据政府行业的特点,硬件环境规划建议如下:
| 组件 | 建议配置 |
|---|---|
| CPU | 至少8核,推荐16核或更高 |
| 内存 | 至少32GB,推荐64GB或更高 |
| 存储 | 使用SSD,容量根据数据量确定,推荐至少500GB |
| 网络 | 千兆或万兆网络 |
2.2 软件环境规划
软件环境规划建议如下:
- 操作系统:推荐使用国产麒麟操作系统 Kylin v10 SP3
- 数据库版本:KingbaseES V8.6及以上
- 中间件:根据业务需求选择合适的中间件,学习交流加群风哥QQ113257174
- 监控系统:Zabbix或Prometheus+Grafana
2.3 网络环境规划
网络环境规划建议如下:
- 网络隔离:生产环境与测试环境隔离
- 防火墙配置:严格控制访问权限
- VPN接入:远程管理使用VPN
- 负载均衡:前端使用负载均衡
Part03-生产环境项目实施方案
3.1 部署架构设计
政府行业推荐使用以下部署架构:
- 主备架构:一主一备或一主多备
- 集群架构:适用于核心业务系统
- 异地灾备:实现跨机房容灾,更多视频教程www.fgedu.net.cn
3.2 安装与配置
安装金仓数据库的步骤如下:
# 检查系统环境
# 检查系统版本
cat /etc/os-release
# 检查系统架构
uname -m
# 检查内存
free -h
# 检查磁盘
df -h
NAME=”Kylin Linux Advanced Server”
VERSION=”V10 (Sword)”
ID=”kylin”
VERSION_ID=”v10″
PRETTY_NAME=”Kylin Linux Advanced Server V10 (Sword)”
ANSI_COLOR=”0;31″
x86_64
total used free shared buff/cache available
Mem: 62G 1.2G 60G 9.5M 1.2G 60G
Swap: 31G 0B 31G
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 5.2G 42G 11% /
/dev/sda3 400G 1.2G 380G 1% /kingbase
# 安装依赖
yum install -y gcc gcc-c++ make perl readline-devel zlib-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
…
已安装:
gcc.x86_64 0:7.3.0-20.el7 gcc-c++.x86_64 0:7.3.0-20.el7
make.x86_64 1:3.82-24.el7 perl.x86_64 4:5.16.3-292.el7
readline-devel.x86_64 0:6.2-10.el7 zlib-devel.x86_64 0:1.2.7-18.el7
完毕!
# 创建用户和目录
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
# 重启主库
systemctl restart kingbase
# 在主库创建复制用户
ksql -U system -d fgedudb -c “CREATE USER kingbase REPLICATION LOGIN ENCRYPTED PASSWORD ‘Kingbase123!'”;
CREATE ROLE
# 备库配置
# 停止备库
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
# 备库recovery.conf配置
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.1.1 port=54321 user=kingbase password=Kingbase123! application_name=standby1’
recovery_target_timeline = ‘latest’
# 启动备库
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)
# 创建最小权限用户
ksql -U system -d fgedudb -c “CREATE USER fgedu_read WITH PASSWORD ‘Password123!’ NOSUPERUSER NOCREATEDB NOCREATEROLE;”
ksql -U system -d fgedudb -c “CREATE ROLE fgedu_read_role;”
ksql -U system -d fgedudb -c “GRANT SELECT ON ALL TABLES IN SCHEMA public TO fgedu_read_role;”
ksql -U system -d fgedudb -c “GRANT fgedu_read_role TO fgedu_read;”
CREATE ROLE
CREATE ROLE
GRANT
GRANT
# 配置审计
vi /kingbase/fgdata/kingbase.conf
# 审计配置
audit_enabled = on
audit_directory = ‘audit’
audit_filename = ‘audit.log’
audit_rotation_size = 10MB
audit_rotation_age = 1d
audit_system_object = on
audit_dml = on
audit_ddl = on
audit_role = on
# 重启数据库
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_user”
pg_restore: creating TABLE “public.fgedu_orders”
…
pg_restore: processing data for table “public.fgedu_user”
pg_restore: processing data for table “public.fgedu_orders”
…
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: 100
# 监控系统状态
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
——-
256
(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
—————-
16GB
(1 row)
work_mem
———-
32MB
(1 row)
maintenance_work_mem
———————-
2GB
(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=”Kylin Linux Advanced Server”
VERSION=”V10 (Sword)”
ID=”kylin”
VERSION_ID=”v10″
PRETTY_NAME=”Kylin Linux Advanced Server V10 (Sword)”
ANSI_COLOR=”0;31″
x86_64
total used free shared buff/cache available
Mem: 62G 1.2G 60G 9.5M 1.2G 60G
Swap: 31G 0B 31G
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 5.2G 42G 11% /
/dev/sda3 400G 1.2G 380G 1% /kingbase
# 安装依赖
yum install -y gcc gcc-c++ make perl readline-devel zlib-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
…
已安装:
gcc.x86_64 0:7.3.0-20.el7 gcc-c++.x86_64 0:7.3.0-20.el7
make.x86_64 1:3.82-24.el7 perl.x86_64 4:5.16.3-292.el7
readline-devel.x86_64 0:6.2-10.el7 zlib-devel.x86_64 0:1.2.7-18.el7
完毕!
# 创建用户和目录
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
# 重启主库
systemctl restart kingbase
# 在主库创建复制用户
ksql -U system -d fgedudb -c “CREATE USER kingbase REPLICATION LOGIN ENCRYPTED PASSWORD ‘Kingbase123!'”;
CREATE ROLE
# 备库配置
# 停止备库
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
# 备库recovery.conf配置
standby_mode = ‘on’
primary_conninfo = ‘host=192.168.1.1 port=54321 user=kingbase password=Kingbase123! application_name=standby1’
recovery_target_timeline = ‘latest’
# 启动备库
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 安全加固
安全加固的步骤如下:
# 创建最小权限用户
ksql -U system -d fgedudb -c “CREATE USER fgedu_read WITH PASSWORD ‘Password123!’ NOSUPERUSER NOCREATEDB NOCREATEROLE;”
ksql -U system -d fgedudb -c “CREATE ROLE fgedu_read_role;”
ksql -U system -d fgedudb -c “GRANT SELECT ON ALL TABLES IN SCHEMA public TO fgedu_read_role;”
ksql -U system -d fgedudb -c “GRANT fgedu_read_role TO fgedu_read;”
CREATE ROLE
CREATE ROLE
GRANT
GRANT
# 配置审计
vi /kingbase/fgdata/kingbase.conf
# 审计配置
audit_enabled = on
audit_directory = ‘audit’
audit_filename = ‘audit.log’
audit_rotation_size = 10MB
audit_rotation_age = 1d
audit_system_object = on
audit_dml = on
audit_ddl = on
audit_role = on
# 重启数据库
systemctl restart kingbase
Part04-生产案例与实战讲解
4.1 案例背景
某省政府部门需要构建一个统一的政务服务平台,涉及多个业务系统的数据整合,要求数据库系统具有高安全性、高可靠性和高性能。经过选型,最终选择了金仓数据库作为核心数据库系统。
4.2 实施过程
实施过程分为以下几个阶段:
4.2.1 需求分析
- 业务系统数量:10个
- 并发用户数:5000+
- 数据量:500GB+
- 性能要求:响应时间<1秒,更多学习教程公众号风哥教程itpux_com
- 可用性要求:99.99%
4.2.2 架构设计
- 部署架构:一主两备
- 存储:SAN存储
- 网络:万兆网络
- 监控: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_user”
pg_restore: creating TABLE “public.fgedu_orders”
…
pg_restore: processing data for table “public.fgedu_user”
pg_restore: processing data for table “public.fgedu_orders”
…
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: 100
4.3 运行效果
系统上线后,运行效果如下:
- 性能指标:
- 平均响应时间:0.5秒
- 并发处理能力:5000+用户
- 数据处理能力:10000+ transactions/秒
- 可靠性指标:
- 系统可用性:99.99%,from DB视频:www.itpux.com
- 故障恢复时间:<30秒
- 安全指标:
- 通过安全等级保护三级认证
- 无安全漏洞
# 监控系统状态
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
——-
256
(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
—————-
16GB
(1 row)
work_mem
———-
32MB
(1 row)
maintenance_work_mem
———————-
2GB
(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
