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

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

1. AntDB概述与环境规划

AntDB是亚信科技自主研发的一款高性能、高可用的分布式关系型数据库,基于PostgreSQL深度优化开发。AntDB支持分布式事务、在线扩容、读写分离等特性,广泛应用于电信、金融、政务等行业。更多学习教程www.fgedu.net.cn

1.1 AntDB版本说明

AntDB目前主要版本为7.2,本教程以AntDB 7.2为例进行详细讲解。

# 查看AntDB版本
$ antdb –version
antdb (AntDB) 7.2.0

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

# 查看集群状态
$ antdb_ctl cluster status
Node ID | Node Name | IP Address | Port | Role | Status
———|————-|—————|——–|———-|——–
1 | antdb_01 | 192.168.1.51 | 5432 | Master | Online
2 | antdb_02 | 192.168.1.52 | 5432 | Slave | Online

1.2 环境规划

本次安装环境规划如下:

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

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

1.3 AntDB核心特性

主要特点:
1. 分布式架构:支持水平扩展,自动分片
2. 高可用性:支持主备复制、自动故障切换
3. 兼容PostgreSQL:完全兼容PostgreSQL协议和语法
4. 分布式事务:支持ACID分布式事务
5. 读写分离:自动路由读写请求
6. 在线扩容:支持不停机扩容
7. 并行查询:支持并行执行复杂查询
8. 多租户:支持资源隔离的多租户架构

2. 硬件环境要求与检查

在安装AntDB之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: 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-antdb.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-antdb.conf

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

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

生产环境建议:AntDB基于PostgreSQL开发,内核参数配置与PostgreSQL类似。建议关闭透明大页和NUMA以获得更好的性能。

3. AntDB安装步骤

本节详细介绍AntDB 7.2的安装过程。学习交流加群风哥QQ113257174

3.1 创建用户和目录

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

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

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

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

3.2 安装AntDB软件

# 切换到antdb用户
# su – antdb

# 解压安装包
$ cd /usr/local/src
$ tar -xzf AntDB-7.2-Linux-x86_64.tar.gz

# 执行安装脚本
$ cd AntDB-7.2
$ ./install.sh

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

正在安装AntDB…
安装完成!

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

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

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

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

3.3 初始化数据库

# 初始化数据库实例
$ antdb_ctl initdb -D /data/antdb/data

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

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

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

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

antdb_ctl start -D /data/antdb/data

3.4 启动数据库服务

# 启动数据库
$ antdb_ctl start -D /data/antdb/data

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

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

# 查看端口
$ netstat -tlnp | grep antdb
tcp6 0 0 :::5432 :::* LISTEN 12345/antdb
tcp6 0 0 :::5433 :::* LISTEN 12345/antdb

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

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

[Service]
Type=forking
User=antdb
Group=antdb
Environment=ANTDB_HOME=/usr/local/antdb
ExecStart=/usr/local/antdb/bin/antdb_ctl start -D /data/antdb/data
ExecStop=/usr/local/antdb/bin/antdb_ctl stop -D /data/antdb/data
ExecReload=/usr/local/antdb/bin/antdb_ctl reload -D /data/antdb/data

[Install]
WantedBy=multi-user.target

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

3.5 创建数据库和用户

# 连接数据库
$ antdb_cli -h 192.168.1.51 -p 5432 -d postgres -U antdb

# 输出示例:
AntDB 7.2.0 控制台
输入 “help” 获取帮助信息。

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

# 输出示例:
CREATE DATABASE

# 创建用户
SQL> CREATE USER fgedu WITH PASSWORD ‘fgedu123’;

# 输出示例:
CREATE USER

# 授权
SQL> GRANT ALL PRIVILEGES ON DATABASE fgedudb TO fgedu;

# 输出示例:
GRANT

# 查看数据库
SQL> \l

# 输出示例:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
———–+———-+———-+————-+————-+———————–
postgres | antdb | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
fgedudb | antdb | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/antdb +
| | | | | antdb=CTc/antdb +
| | | | | fgedu=CTc/antdb

风哥提示:AntDB基于PostgreSQL开发,命令和语法与PostgreSQL高度兼容。熟悉PostgreSQL的DBA可以快速上手。

4. AntDB参数配置

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

4.1 内存参数配置

# 编辑配置文件
$ vi /data/antdb/conf/postgresql.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/antdb/conf/postgresql.conf

# 最大连接数
max_connections = 500

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

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

# 最大工作进程数
max_worker_processes = 16

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

4.3 WAL和日志配置

# 编辑配置文件
$ vi /data/antdb/conf/postgresql.conf

# WAL缓冲区大小
wal_buffers = 64MB

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

# 检查点完成目标
checkpoint_completion_target = 0.9

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

# 重启数据库
$ antdb_ctl restart -D /data/antdb/data

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

5. 数据库管理

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

5.1 表空间管理

# 连接数据库
$ antdb_cli -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu

# 创建表空间
SQL> CREATE TABLESPACE fgedu_tbs LOCATION ‘/data/antdb/data/fgedu_tbs’;

# 输出示例:
CREATE TABLESPACE

# 查看表空间
SQL> \db

# 输出示例:
List of tablespaces
Name | Owner | Location
————+———-+—————————
pg_default | antdb |
pg_global | antdb |
fgedu_tbs | antdb | /data/antdb/data/fgedu_tbs

# 创建数据库指定表空间
SQL> CREATE DATABASE fgedudb2 TABLESPACE fgedu_tbs;

5.2 表管理

# 创建表
SQL> CREATE TABLE fgedu_employees (
emp_id SERIAL PRIMARY KEY,
emp_name VARCHAR(100) NOT NULL,
dept_id INTEGER,
salary NUMERIC(10,2),
hire_date DATE DEFAULT CURRENT_DATE,
status VARCHAR(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_name, dept_id, salary)
VALUES (‘张三’, 10, 8000.00);

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

# 查询数据
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> DELETE FROM fgedu_employees WHERE emp_id = 2;

5.3 用户和权限管理

# 创建用户
SQL> CREATE USER app_user WITH PASSWORD ‘app123456’;

# 输出示例:
CREATE USER

# 授予权限
SQL> GRANT CONNECT ON DATABASE fgedudb TO app_user;
SQL> GRANT USAGE ON SCHEMA public TO app_user;
SQL> GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;

# 查看用户
SQL> \du

# 输出示例:
List of roles
Role name | Attributes | Member of
———–+————————————————————+———–
antdb | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
app_user | | {}
fgedu | | {}

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

# 删除用户
SQL> DROP USER app_user;

风哥提示:AntDB完全兼容PostgreSQL的权限系统。建议根据业务需求合理规划用户和权限,遵循最小权限原则。

6. 网络连接配置

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

6.1 配置监听

# 编辑配置文件
$ vi /data/antdb/conf/postgresql.conf

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

# 最大连接数
max_connections = 500

# 重启数据库
$ antdb_ctl restart -D /data/antdb/data

# 查看监听状态
$ netstat -tlnp | grep antdb
tcp6 0 0 :::5432 :::* LISTEN 12345/antdb
tcp6 0 0 :::5433 :::* LISTEN 12345/antdb

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

6.2 配置访问控制

# 编辑访问控制文件
$ vi /data/antdb/conf/pg_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

# 重新加载配置
$ antdb_ctl reload -D /data/antdb/data

6.3 使用JDBC连接

// Maven依赖
//
// org.postgresql
// postgresql
// 42.7.1
//

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

public class AntDBExample {
public static void main(String[] args) {
String url = “jdbc:postgresql://192.168.1.51:5432/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_name, dept_id, salary) VALUES (?, ?, ?)”;
try (PreparedStatement pstmt = conn.prepareStatement(insertSql)) {
pstmt.setString(1, “王五”);
pstmt.setInt(2, 30);
pstmt.setDouble(3, 10000.00);
pstmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

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

7. 备份恢复配置

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

7.1 逻辑备份

# 使用antdb_dump进行逻辑备份
$ antdb_dump -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_$(date +%Y%m%d).sql

# 输出示例:
— AntDB database dump
— Dumped from database version 7.2.0
— Dumped by antdb_dump version 7.2.0

— 备份特定表
$ antdb_dump -h 192.168.1.51 -p 5432 -d fgedudb -t fgedu_employees -U fgedu -f /backup/antdb/employees_$(date +%Y%m%d).sql

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

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

7.2 逻辑恢复

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

# 恢复数据库
$ antdb_cli -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_20260404.sql

# 或者使用命令行
$ antdb_restore -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_20260404.sql

# 恢复到新数据库
$ antdb_cli -h 192.168.1.51 -p 5432 -d postgres -U antdb
SQL> CREATE DATABASE fgedudb_new;
SQL> \q

$ antdb_restore -h 192.168.1.51 -p 5432 -d fgedudb_new -U antdb -f /backup/antdb/fgedudb_20260404.sql

7.3 物理备份

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

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

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

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

7.4 自动备份脚本

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

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

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

# 逻辑备份
antdb_dump -h 192.168.1.51 -p 5432 -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
antdb_basebackup -h 192.168.1.51 -p 5432 -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/antdb_backup.sh

# 配置定时任务
$ crontab -e

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

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

8. 升级与迁移

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

8.1 版本升级

# 检查当前版本
$ antdb –version
antdb (AntDB) 7.2.0

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

# 停止数据库
$ antdb_ctl stop -D /data/antdb/data

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

# 升级软件
$ cd /usr/local/src
$ tar -xzf AntDB-7.3-Linux-x86_64.tar.gz
$ cd AntDB-7.3
$ ./upgrade.sh -D /data/antdb/data

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

# 启动数据库
$ antdb_ctl start -D /data/antdb/data

# 验证版本
$ antdb –version
antdb (AntDB) 7.3.0

8.2 迁移到新服务器

# 在源服务器执行备份
$ antdb_dump -h 192.168.1.51 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_migrate.sql
$ gzip /backup/antdb/fgedudb_migrate.sql

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

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

# 创建数据库
$ antdb_cli -h 192.168.1.52 -p 5432 -d postgres -U antdb
SQL> CREATE DATABASE fgedudb;
SQL> CREATE USER fgedu WITH PASSWORD ‘fgedu123’;
SQL> GRANT ALL PRIVILEGES ON DATABASE fgedudb TO fgedu;
SQL> \q

# 恢复数据
$ gunzip /backup/antdb/fgedudb_migrate.sql.gz
$ antdb_restore -h 192.168.1.52 -p 5432 -d fgedudb -U fgedu -f /backup/antdb/fgedudb_migrate.sql

# 验证迁移
$ antdb_cli -h 192.168.1.52 -p 5432 -d fgedudb -U fgedu
SQL> SELECT COUNT(*) FROM fgedu_employees;

# 输出示例:
count
——-
1000

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

9. 生产环境实战案例

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

9.1 高可用架构部署

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

# 主库配置
$ vi /data/antdb/conf/postgresql.conf

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

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

# 创建复制用户
$ antdb_cli -h 192.168.1.51 -p 5432 -d fgedudb -U antdb
SQL> CREATE USER repl_user REPLICATION LOGIN ENCRYPTED PASSWORD ‘repl123’;

# 备库配置
$ vi /data/antdb/conf/postgresql.conf

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

# 启动备库
$ antdb_ctl start -D /data/antdb/data

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

9.2 性能监控

# 查看数据库统计
SQL> SELECT * FROM pg_stat_database;

# 查看表统计
SQL> SELECT schemaname, tablename, n_tup_ins, n_tup_upd, n_tup_del
FROM pg_stat_user_tables
WHERE tablename 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_exec_time, mean_exec_time
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

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

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

# 查看磁盘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/antdb/conf/postgresql.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)

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

风哥提示:AntDB作为分布式数据库,在高可用和扩展性方面具有优势。建议定期检查数据库性能,及时优化慢查询。

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

联系我们

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

微信号:itpux-com

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