1. 首页 > 软件安装教程 > 正文

XuguDB安装配置-XuguDB数据库安装配置_升级迁移详细过程

1. XuguDB概述与环境规划

XuguDB(虚谷数据库)是一款国产的高性能关系型数据库管理系统,由成都虚谷伟业科技有限公司自主研发。XuguDB具有高性能、高可用、高安全、易扩展等特点,支持SQL标准,兼容Oracle语法,广泛应用于政府、金融、电信、能源等行业。更多学习教程www.fgedu.net.cn

1.1 XuguDB版本说明

XuguDB目前主要版本为V12,本教程以XuguDB V12.1为例进行详细讲解。

# 查看XuguDB版本
$ xgconsole -v
XuguDB V12.1.0 Build 20240315

# 查看服务状态
$ xg_ctl status
xg_ctl: server is running (PID: 12345)
/usr/local/xugudb/bin/xugu -D /data/xugudb/data

# 查看集群状态
$ xg_ctl cluster status
Node ID | Node Name | IP Address | Port | Status
———|————-|—————|——–|———-
1 | xg_node1 | 192.168.1.51 | 5138 | Online
2 | xg_node2 | 192.168.1.52 | 5138 | Online

1.2 环境规划

本次安装环境规划如下:

主机名:fgedudb01.fgedu.net.cn
IP地址:192.168.1.51
XuguDB端口:5138
管理端口:5139
数据目录:/data/xugudb/data
配置目录:/data/xugudb/conf
日志目录:/data/xugudb/log
备份目录:/backup/xugudb

存储规划:
数据库名:fgedudb
表名前缀:fgedu
表空间:fgedu_tbs
数据文件:/data/xugudb/data/fgedudb.dbf

1.3 XuguDB核心特性

主要特点:
1. 国产自主可控:完全自主研发,安全可靠
2. Oracle兼容:高度兼容Oracle语法和特性
3. 高性能:支持大规模并发访问
4. 高可用:支持主备复制、集群部署
5. 分布式架构:支持分布式部署和水平扩展
6. 多存储引擎:支持行存储和列存储
7. 完善的安全机制:支持审计、加密、访问控制
8. 丰富的管理工具:提供图形化管理界面

2. 硬件环境要求与检查

在安装XuguDB之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com

2.1 最低硬件要求

最低配置:
CPU:4核心
内存:8GB
磁盘:100GB

推荐配置(生产环境):
CPU:16核心以上
内存:32GB以上
磁盘:500GB以上SSD

大规模部署配置:
CPU:32核心以上
内存:128GB以上
磁盘:2TB以上SSD

2.2 系统环境检查

# 检查操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)

# 检查内核版本
# uname -a
Linux fgedudb01 4.18.0-477.10.1.el8_8.x86_64 #1 SMP Fri Apr 4 10:00:00 CST 2026 x86_64 x86_64 x86_64
GNU/Linux

# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 31Gi 1.0Gi 30Gi 256Mi 1.0Gi 30Gi
Swap: 7Gi 0B 7Gi

# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 50G 2.5G 48G 5% /
/dev/sda2 1014M 150M 865M 15% /boot
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data

2.3 内核参数配置

# 配置内核参数
# vi /etc/sysctl.d/99-xugudb.conf

# 添加以下参数
# 共享内存参数
kernel.shmmax = 17179869184
kernel.shmall = 4194304
kernel.shmmni = 4096

# 信号量参数
kernel.sem = 250 32000 100 128

# 文件描述符限制
fs.file-max = 6815744

# 网络参数
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304

# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-xugudb.conf

# 配置用户限制
# vi /etc/security/limits.conf

# 添加以下配置
xugudb soft nproc 16384
xugudb hard nproc 16384
xugudb soft nofile 65536
xugudb hard nofile 65536
xugudb soft stack 10240
xugudb hard stack 32768

生产环境建议:XuguDB对共享内存和文件描述符有较高要求。建议关闭透明大页和NUMA以获得更好的性能。

3. XuguDB安装步骤

本节详细介绍XuguDB V12.1的安装过程。学习交流加群风哥QQ113257174

3.1 创建用户和目录

# 创建xugudb用户
# groupadd -g 1001 xugudb
# useradd -u 1001 -g xugudb -d /home/xugudb -s /bin/bash xugudb
# passwd xugudb

# 创建安装目录
# mkdir -p /usr/local/xugudb
# mkdir -p /data/xugudb/{data,conf,log,backup}
# mkdir -p /backup/xugudb

# 设置目录权限
# chown -R xugudb:xugudb /usr/local/xugudb
# chown -R xugudb:xugudb /data/xugudb
# chown -R xugudb:xugudb /backup/xugudb

# 设置目录权限
# chmod 755 /usr/local/xugudb
# chmod 750 /data/xugudb
# chmod 750 /backup/xugudb

3.2 安装XuguDB软件

# 切换到xugudb用户
# su – xugudb

# 解压安装包
$ cd /usr/local/src
$ tar -xzf XuguDB_V12.1_Linux_x86_64.tar.gz

# 执行安装脚本
$ cd XuguDB_V12.1
$ ./install.sh

# 输出示例:
欢迎使用XuguDB安装程序
========================
安装目录 [/usr/local/xugudb]:
数据目录 [/data/xugudb/data]:
配置目录 [/data/xugudb/conf]:
日志目录 [/data/xugudb/log]:

正在安装XuguDB…
安装完成!

# 验证安装
$ ls -la /usr/local/xugudb/
总用量 0
drwxr-xr-x. 2 xugudb xugudb 6 4月 4 10:00 bin
drwxr-xr-x. 2 xugudb xugudb 6 4月 4 10:00 lib
drwxr-xr-x. 2 xugudb xugudb 6 4月 4 10:00 doc
drwxr-xr-x. 2 xugudb xugudb 6 4月 4 10:00 demo

# 配置环境变量
$ vi ~/.bash_profile

# 添加以下内容
export XUGU_HOME=/usr/local/xugudb
export PATH=$XUGU_HOME/bin:$PATH
export LD_LIBRARY_PATH=$XUGU_HOME/lib:$LD_LIBRARY_PATH

# 使环境变量生效
$ source ~/.bash_profile

3.3 初始化数据库

# 初始化数据库实例
$ xg_ctl initdb -D /data/xugudb/data

# 输出示例:
属于此数据库系统的文件宿主为”xugudb”。
此用户也必须为服务器进程的宿主。
数据库簇将使用简体中文语言初始化。
默认的数据库编码为”UTF8″。
默认的数据库排序规则为”Chinese_PRC.UTF8″。

创建目录 /data/xugudb/data … 成功
正在创建子目录 … 成功
选择默认最大连接数 … 100
选择默认共享缓冲区 … 128MB
选择默认动态共享内存类型 … posix
创建配置文件 … 成功
运行引导脚本 … 成功
执行引导后初始化 … 成功
同步数据到磁盘 … 成功

警告:为本地连接启用”trust”身份验证。
你可以通过编辑xg_hba.conf更改或下次运行initdb时使用-A选项。

成功。你现在可以用下面的命令开启数据库服务器:

xg_ctl start -D /data/xugudb/data

3.4 启动数据库服务

# 启动数据库
$ xg_ctl start -D /data/xugudb/data

# 输出示例:
等待服务器进程启动…. 完成
服务器进程已经启动

# 检查服务状态
$ xg_ctl status
xg_ctl: server is running (PID: 12345)
/usr/local/xugudb/bin/xugu -D /data/xugudb/data

# 查看端口
$ netstat -tlnp | grep xugu
tcp6 0 0 :::5138 :::* LISTEN 12345/xugu
tcp6 0 0 :::5139 :::* LISTEN 12345/xugu

# 设置开机自启动
# vi /etc/systemd/system/xugudb.service

[Unit]
Description=XuguDB Database Server
After=network.target

[Service]
Type=forking
User=xugudb
Group=xugudb
Environment=XUGU_HOME=/usr/local/xugudb
ExecStart=/usr/local/xugudb/bin/xg_ctl start -D /data/xugudb/data
ExecStop=/usr/local/xugudb/bin/xg_ctl stop -D /data/xugudb/data
ExecReload=/usr/local/xugudb/bin/xg_ctl reload -D /data/xugudb/data

[Install]
WantedBy=multi-user.target

# 启用服务
# systemctl enable xugudb
# systemctl start xugudb

3.5 创建数据库和用户

# 连接数据库
$ xgconsole -h 192.168.1.51 -p 5138 -d system -u sysdba -w xugudb

# 输出示例:
XuguDB V12.1.0 控制台
输入 “help” 获取帮助信息。

# 创建数据库
SQL> CREATE DATABASE fgedudb;

# 输出示例:
CREATE DATABASE

# 创建用户
SQL> CREATE USER fgedu IDENTIFIED BY ‘fgedu123’ DEFAULT TABLESPACE fgedu_tbs;

# 输出示例:
CREATE USER

# 授权
SQL> GRANT DBA TO fgedu;

# 输出示例:
GRANT

# 查看数据库
SQL> SHOW DATABASES;

# 输出示例:
Database | Owner | Encoding | Collation
————|———|————|————-
system | sysdba | UTF8 | Chinese_PRC
fgedudb | sysdba | UTF8 | Chinese_PRC

风哥提示:XuguDB初始化时会创建system数据库。生产环境建议创建独立的数据库和用户,并合理分配权限。

4. XuguDB参数配置

XuguDB参数配置是数据库性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com

4.1 内存参数配置

# 编辑配置文件
$ vi /data/xugudb/conf/xugu.conf

# 共享缓冲区大小(建议设置为物理内存的25%-40%)
shared_buffers = 8GB

# 有效缓存大小(建议设置为物理内存的50%-75%)
effective_cache_size = 16GB

# 工作内存(用于排序和哈希操作)
work_mem = 256MB

# 维护工作内存(用于VACUUM、CREATE INDEX等)
maintenance_work_mem = 1GB

# 动态共享内存类型
dynamic_shared_memory_type = posix

4.2 连接和并发配置

# 编辑配置文件
$ vi /data/xugudb/conf/xugu.conf

# 最大连接数
max_connections = 500

# 超级用户保留连接
superuser_reserved_connections = 10

# 最大并行工作者数
max_parallel_workers = 8
max_parallel_workers_per_gather = 4

# 最大工作进程数
max_worker_processes = 16

# 重启数据库使配置生效
$ xg_ctl restart -D /data/xugudb/data

4.3 WAL和日志配置

# 编辑配置文件
$ vi /data/xugudb/conf/xugu.conf

# WAL缓冲区大小
wal_buffers = 64MB

# 检查点段大小
max_wal_size = 4GB
min_wal_size = 1GB

# 检查点完成目标
checkpoint_completion_target = 0.9

# 日志配置
logging_collector = on
log_directory = ‘/data/xugudb/log’
log_filename = ‘xugu-%Y-%m-%d_%H%M%S.log’
log_rotation_age = 1d
log_rotation_size = 100MB
log_min_duration_statement = 1000

# 重启数据库
$ xg_ctl restart -D /data/xugudb/data

生产环境建议:根据服务器硬件配置合理调整内存参数。建议开启慢查询日志,便于性能分析。

5. 数据库管理

XuguDB支持标准的SQL操作,本节介绍常用的数据库管理命令。from:www.itpux.com

5.1 表空间管理

# 连接数据库
$ xgconsole -h 192.168.1.51 -p 5138 -d fgedudb -u fgedu -w fgedu123

# 创建表空间
SQL> CREATE TABLESPACE fgedu_tbs
DATAFILE ‘/data/xugudb/data/fgedu_tbs01.dbf’ SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 100G;

# 输出示例:
CREATE TABLESPACE

# 查看表空间
SQL> SELECT tablespace_name, file_name, bytes/1024/1024/1024 GB
FROM dba_data_files;

# 输出示例:
TABLESPACE_NAME | FILE_NAME | GB
—————-|—————————————-|—-
SYSTEM | /data/xugudb/data/system01.dbf | 10
FGEDU_TBS | /data/xugudb/data/fgedu_tbs01.dbf | 10

# 扩展表空间
SQL> ALTER TABLESPACE fgedu_tbs
ADD DATAFILE ‘/data/xugudb/data/fgedu_tbs02.dbf’ SIZE 10G AUTOEXTEND ON;

# 输出示例:
ALTER TABLESPACE

5.2 表管理

# 创建表
SQL> CREATE TABLE fgedu_employees (
emp_id NUMBER PRIMARY KEY,
emp_name VARCHAR2(100) NOT NULL,
dept_id NUMBER,
salary NUMBER(10,2),
hire_date DATE DEFAULT SYSDATE,
status VARCHAR2(20) DEFAULT ‘ACTIVE’
) TABLESPACE fgedu_tbs;

# 输出示例:
CREATE TABLE

# 创建索引
SQL> CREATE INDEX idx_fgedu_emp_dept ON fgedu_employees(dept_id);

# 输出示例:
CREATE INDEX

# 插入数据
SQL> INSERT INTO fgedu_employees (emp_id, emp_name, dept_id, salary)
VALUES (1, ‘张三’, 10, 8000.00);

SQL> INSERT INTO fgedu_employees (emp_id, emp_name, dept_id, salary)
VALUES (2, ‘李四’, 20, 9000.00);

SQL> COMMIT;

# 查询数据
SQL> SELECT * FROM fgedu_employees;

# 输出示例:
EMP_ID | EMP_NAME | DEPT_ID | SALARY | HIRE_DATE | STATUS
——-|———-|———|———|————|——–
1 | 张三 | 10 | 8000.00 | 2026-04-04 | ACTIVE
2 | 李四 | 20 | 9000.00 | 2026-04-04 | ACTIVE

# 更新数据
SQL> UPDATE fgedu_employees SET salary = 8500 WHERE emp_id = 1;
SQL> COMMIT;

# 删除数据
SQL> DELETE FROM fgedu_employees WHERE emp_id = 2;
SQL> COMMIT;

5.3 用户和权限管理

# 创建用户
SQL> CREATE USER app_user IDENTIFIED BY ‘app123456’
DEFAULT TABLESPACE fgedu_tbs
QUOTA 100M ON fgedu_tbs;

# 输出示例:
CREATE USER

# 授予权限
SQL> GRANT CREATE SESSION TO app_user;
SQL> GRANT CREATE TABLE TO app_user;
SQL> GRANT CREATE VIEW TO app_user;
SQL> GRANT CREATE SEQUENCE TO app_user;
SQL> GRANT CREATE TRIGGER TO app_user;

# 授予对象权限
SQL> GRANT SELECT, INSERT, UPDATE, DELETE ON fgedu_employees TO app_user;

# 查看用户权限
SQL> SELECT * FROM dba_sys_privs WHERE grantee = ‘APP_USER’;

# 输出示例:
GRANTEE | PRIVILEGE | ADMIN_OPTION
———-|—————-|————-
APP_USER | CREATE SESSION | NO
APP_USER | CREATE TABLE | NO

# 撤销权限
SQL> REVOKE DELETE ON fgedu_employees FROM app_user;

# 删除用户
SQL> DROP USER app_user CASCADE;

风哥提示:XuguDB高度兼容Oracle语法,熟悉Oracle的DBA可以快速上手。建议根据业务需求合理规划用户和权限。

6. 网络连接配置

网络连接配置是客户端访问XuguDB的关键,需要正确配置监听和防火墙规则。更多学习教程www.fgedu.net.cn

6.1 配置监听

# 编辑监听配置文件
$ vi /data/xugudb/conf/xugu.conf

# 监听地址和端口
listen_addresses = ‘*’
port = 5138

# 最大连接数
max_connections = 500

# 重启数据库
$ xg_ctl restart -D /data/xugudb/data

# 查看监听状态
$ netstat -tlnp | grep xugu
tcp6 0 0 :::5138 :::* LISTEN 12345/xugu
tcp6 0 0 :::5139 :::* LISTEN 12345/xugu

# 配置防火墙
# firewall-cmd –permanent –add-port=5138/tcp
success
# firewall-cmd –permanent –add-port=5139/tcp
success
# firewall-cmd –reload
success

6.2 配置访问控制

# 编辑访问控制文件
$ vi /data/xugudb/conf/xg_hba.conf

# 添加以下配置
# TYPE DATABASE USER ADDRESS METHOD

# 本地连接
local all all trust

# IPv4本地连接
host all all 127.0.0.1/32 trust

# IPv6本地连接
host all all ::1/128 trust

# 允许192.168.1.0/24网段访问
host all all 192.168.1.0/24 md5

# 允许特定IP访问
host fgedudb fgedu 192.168.1.52/32 md5

# 重新加载配置
$ xg_ctl reload -D /data/xugudb/data

6.3 使用JDBC连接

// Maven依赖
//
// com.xugudb
// xugu-jdbc
// 12.1.0
//

// Java连接示例
import java.sql.*;

public class XuguDBExample {
public static void main(String[] args) {
String url = “jdbc:xugu://192.168.1.51:5138/fgedudb”;
String user = “fgedu”;
String password = “fgedu123”;

try (Connection conn = DriverManager.getConnection(url, user, password)) {
// 查询数据
String sql = “SELECT * FROM fgedu_employees”;
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
System.out.println(“ID: ” + rs.getInt(“emp_id”) +
“, Name: ” + rs.getString(“emp_name”));
}
}

// 插入数据
String insertSql = “INSERT INTO fgedu_employees (emp_id, emp_name, dept_id, salary) VALUES (?, ?, ?, ?)”;
try (PreparedStatement pstmt = conn.prepareStatement(insertSql)) {
pstmt.setInt(1, 3);
pstmt.setString(2, “王五”);
pstmt.setInt(3, 30);
pstmt.setDouble(4, 10000.00);
pstmt.executeUpdate();
}

conn.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

生产环境建议:建议使用连接池管理数据库连接。对于高并发场景,可以配置读写分离或集群部署。

7. 备份恢复配置

备份恢复是数据库管理的重要环节,XuguDB提供了多种备份方式。学习交流加群风哥微信: itpux-com

7.1 逻辑备份

# 使用xg_dump进行逻辑备份
$ xg_dump -h 192.168.1.51 -p 5138 -d fgedudb -u fgedu -f /backup/xugudb/fgedudb_$(date +%Y%m%d).sql

# 输出示例:
— XuguDB database dump
— Dumped from database version 12.1.0
— Dumped by xg_dump version 12.1.0

SET client_encoding = ‘UTF8’;

— 备份特定表
$ xg_dump -h 192.168.1.51 -p 5138 -d fgedudb -t fgedu_employees -u fgedu -f /backup/xugudb/employees_$(date
+%Y%m%d).sql

# 备份整个数据库(包括创建语句)
$ xg_dump -h 192.168.1.51 -p 5138 -d fgedudb -u fgedu -C -c -f /backup/xugudb/fgedudb_full_$(date
+%Y%m%d).sql

# 压缩备份
$ gzip /backup/xugudb/fgedudb_$(date +%Y%m%d).sql

7.2 逻辑恢复

# 解压备份文件
$ gunzip /backup/xugudb/fgedudb_20260404.sql.gz

# 恢复数据库
$ xgconsole -h 192.168.1.51 -p 5138 -d fgedudb -u fgedu -f /backup/xugudb/fgedudb_20260404.sql

# 或者使用命令行
$ xg_restore -h 192.168.1.51 -p 5138 -d fgedudb -u fgedu -f /backup/xugudb/fgedudb_20260404.sql

# 输出示例:
— 恢复完成
— 已恢复 10 个表
— 已恢复 1000 行数据

# 恢复到新数据库
$ xgconsole -h 192.168.1.51 -p 5138 -d system -u sysdba -w xugudb
SQL> CREATE DATABASE fgedudb_new;
SQL> \q

$ xg_restore -h 192.168.1.51 -p 5138 -d fgedudb_new -u sysdba -f /backup/xugudb/fgedudb_20260404.sql

7.3 物理备份

# 使用xg_basebackup进行物理备份
$ xg_basebackup -h 192.168.1.51 -p 5138 -D /backup/xugudb/base_$(date +%Y%m%d) -U fgedu -P

# 输出示例:
事务日志起始位置: 0/1000000
100000/100000 kB (100%), 表空间 1/1
事务日志结束位置: 0/1000100
xg_basebackup: 基础备份完成

# 压缩物理备份
$ tar -czf /backup/xugudb/base_$(date +%Y%m%d).tar.gz -C /backup/xugudb base_$(date +%Y%m%d)

# 清理临时目录
$ rm -rf /backup/xugudb/base_$(date +%Y%m%d)

7.4 自动备份脚本

# 创建备份脚本
$ vi /usr/local/bin/xugudb_backup.sh

#!/bin/bash
BACKUP_DIR=/backup/xugudb
DATE=$(date +%Y%m%d)
LOG_FILE=/data/xugudb/log/backup.log

echo “=== Backup started at $(date) ===” >> $LOG_FILE

# 逻辑备份
xg_dump -h 192.168.1.51 -p 5138 -d fgedudb -u fgedu -f ${BACKUP_DIR}/fgedudb_${DATE}.sql >> $LOG_FILE 2>&1
gzip ${BACKUP_DIR}/fgedudb_${DATE}.sql >> $LOG_FILE 2>&1

# 物理备份(每周日执行)
if [ $(date +%w) -eq 0 ]; then
xg_basebackup -h 192.168.1.51 -p 5138 -D ${BACKUP_DIR}/base_${DATE} -U fgedu -P >> $LOG_FILE 2>&1
tar -czf ${BACKUP_DIR}/base_${DATE}.tar.gz -C ${BACKUP_DIR} base_${DATE} >> $LOG_FILE 2>&1
rm -rf ${BACKUP_DIR}/base_${DATE}
fi

# 清理30天前的备份
find ${BACKUP_DIR} -name “*.gz” -mtime +30 -delete >> $LOG_FILE 2>&1

echo “=== Backup finished at $(date) ===” >> $LOG_FILE
echo “” >> $LOG_FILE

# 设置脚本权限
$ chmod +x /usr/local/bin/xugudb_backup.sh

# 配置定时任务
$ crontab -e

# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /usr/local/bin/xugudb_backup.sh

风哥提示:生产环境建议同时使用逻辑备份和物理备份。逻辑备份便于数据迁移,物理备份恢复速度更快。

8. 升级与迁移

XuguDB升级和迁移是运维工作中的重要环节,需要仔细规划和执行。更多学习教程公众号风哥教程itpux_com

8.1 版本升级

# 检查当前版本
$ xgconsole -V
xgconsole (XuguDB) 12.1.0

# 执行完整备份
# 参见7.1和7.3节备份步骤

# 停止数据库
$ xg_ctl stop -D /data/xugudb/data

# 备份数据目录
$ tar -czf /backup/xugudb/data_backup_$(date +%Y%m%d).tar.gz /data/xugudb/data

# 升级软件
$ cd /usr/local/src
$ tar -xzf XuguDB_V12.2_Linux_x86_64.tar.gz
$ cd XuguDB_V12.2
$ ./upgrade.sh -D /data/xugudb/data

# 输出示例:
正在升级数据库…
检查数据库版本… 12.1.0
执行升级脚本…
升级完成,当前版本: 12.2.0

# 启动数据库
$ xg_ctl start -D /data/xugudb/data

# 验证版本
$ xgconsole -V
xgconsole (XuguDB) 12.2.0

8.2 迁移到新服务器

# 在源服务器执行备份
$ xg_dump -h 192.168.1.51 -p 5138 -d fgedudb -u fgedu -f /backup/xugudb/fgedudb_migrate.sql
$ gzip /backup/xugudb/fgedudb_migrate.sql

# 传输备份文件
$ scp /backup/xugudb/fgedudb_migrate.sql.gz new-server:/backup/xugudb/

# 在新服务器安装XuguDB
# 参见3.1-3.4节安装步骤

# 创建数据库
$ xgconsole -h 192.168.1.52 -p 5138 -d system -u sysdba -w xugudb
SQL> CREATE DATABASE fgedudb;
SQL> CREATE USER fgedu IDENTIFIED BY ‘fgedu123’;
SQL> GRANT DBA TO fgedu;
SQL> \q

# 恢复数据
$ gunzip /backup/xugudb/fgedudb_migrate.sql.gz
$ xg_restore -h 192.168.1.52 -p 5138 -d fgedudb -u fgedu -f /backup/xugudb/fgedudb_migrate.sql

# 验证迁移
$ xgconsole -h 192.168.1.52 -p 5138 -d fgedudb -u fgedu -w fgedu123
SQL> SELECT COUNT(*) FROM fgedu_employees;

# 输出示例:
COUNT(*)
———-
1000

生产环境建议:升级前必须执行完整备份。跨大版本升级需要仔细阅读升级文档,确认兼容性。

9. 生产环境实战案例

本节提供一个完整的生产环境配置案例,帮助读者更好地理解XuguDB的实际应用。from:www.itpux.com

9.1 高可用架构部署

# XuguDB主备架构部署
# 主库: fgedudb01 (192.168.1.51)
# 备库: fgedudb02 (192.168.1.52)

# 主库配置
$ vi /data/xugudb/conf/xugu.conf

# 启用归档模式
archive_mode = on
archive_command = ‘cp %p /data/xugudb/archive/%f’
archive_timeout = 300

# 配置流复制
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
max_replication_slots = 10

# 创建复制用户
$ xgconsole -h 192.168.1.51 -p 5138 -d fgedudb -u sysdba
SQL> CREATE USER repl_user REPLICATION LOGIN ENCRYPTED PASSWORD ‘repl123’;

# 备库配置
$ vi /data/xugudb/conf/xugu.conf

# 配置主库连接
primary_conninfo = ‘host=192.168.1.51 port=5138 user=repl_user password=repl123’
recovery_target_timeline = ‘latest’

# 启动备库
$ xg_ctl start -D /data/xugudb/data

# 查看复制状态
SQL> SELECT * FROM pg_stat_replication;

9.2 性能监控

# 查看数据库统计
SQL> SELECT * FROM v$database;

# 查看表统计
SQL> SELECT table_name, num_rows, blocks
FROM user_tables
WHERE table_name LIKE ‘FGEDU_%’;

# 查看当前连接
SQL> SELECT pid, usename, application_name, client_addr, state
FROM pg_stat_activity;

# 查看锁信息
SQL> SELECT * FROM pg_locks WHERE NOT granted;

# 查看慢查询
SQL> SELECT query, calls, total_time, mean_time
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;

# 系统监控命令
# 查看进程
$ ps aux | grep xugu

# 查看资源使用
$ top -p $(pgrep xugu)

# 查看磁盘I/O
$ iostat -x 1

9.3 性能优化

# 更新统计信息
SQL> ANALYZE fgedu_employees;

# 重建索引
SQL> REINDEX INDEX idx_fgedu_emp_dept;

# 清理表空间
SQL> VACUUM FULL fgedu_employees;

# 配置自动清理
$ vi /data/xugudb/conf/xugu.conf

autovacuum = on
autovacuum_max_workers = 3
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50

# 查询优化
# 使用EXPLAIN分析执行计划
SQL> EXPLAIN SELECT * FROM fgedu_employees WHERE dept_id = 10;

# 输出示例:
QUERY PLAN
————————————————–
Seq Scan on fgedu_employees (cost=0.00..35.50 rows=10 width=100)
Filter: (dept_id = 10)

# 创建合适的索引
SQL> CREATE INDEX idx_fgedu_emp_dept ON fgedu_employees(dept_id);

# 再次查看执行计划
SQL> EXPLAIN SELECT * FROM fgedu_employees WHERE dept_id = 10;

# 输出示例:
QUERY PLAN
————————————————–
Index Scan using idx_fgedu_emp_dept on fgedu_employees (cost=0.29..8.30 rows=10 width=100)
Index Cond: (dept_id = 10)

# 重启数据库使配置生效
$ xg_ctl restart -D /data/xugudb/data

风哥提示:XuguDB作为国产数据库,在安全性和自主可控方面具有优势。建议定期检查数据库性能,及时优化慢查询。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息