opengauss教程FG009-openGauss目录结构与核心文件解析
目录大纲
Part01-基础概念与理论知识
1.1 目录结构概述
openGauss数据库的目录结构是其运行的基础,了解目录结构对于数据库的管理和维护至关重要。风哥教程参考opengauss官方文档,openGauss的主要目录包括:
- 安装目录:包含数据库的可执行文件、库文件和配置模板
- 数据目录:包含数据库的实际数据文件、配置文件和日志文件
- 日志目录:包含数据库的运行日志、审计日志和告警日志
- 备份目录:用于存储数据库备份文件
1.2 核心文件分类
openGauss的核心文件可以分为以下几类:
- 配置文件:控制数据库行为的配置文件,如postgresql.conf、pg_hba.conf等
- 数据文件:存储数据库实际数据的文件,如表空间文件、WAL文件等
- 日志文件:记录数据库运行情况的日志文件,如服务器日志、审计日志等
- 可执行文件:数据库的可执行程序,如gaussdb、gs_ctl等
- 库文件:数据库的共享库文件,如libpq.so等
1.3 文件权限与安全
文件权限与安全是数据库管理的重要组成部分,需要注意以下几点:
- 权限设置:确保数据库文件的权限设置正确,防止未授权访问
- 所有权:数据库文件的所有权应该属于数据库用户(如opengauss)
- 访问控制:通过pg_hba.conf文件控制客户端的访问权限
- 加密存储:对于敏感数据,考虑使用加密存储
风哥提示:正确的目录结构和文件权限设置是数据库安全运行的基础,需要特别注意。
Part02-生产环境规划与建议
2.1 目录规划
生产环境目录规划示例
- 安装目录:
- 路径:/opengauss/app
- 用途:存储数据库的可执行文件、库文件和配置模板
- 数据目录:
- 路径:/opengauss/fgdata
- 用途:存储数据库的实际数据文件、配置文件和日志文件
- 日志目录:
- 路径:/opengauss/log
- 用途:存储数据库的运行日志、审计日志和告警日志
- 备份目录:
- 路径:/opengauss/backup
- 用途:存储数据库备份文件
- 归档目录:
- 路径:/opengauss/archive
- 用途:存储WAL归档文件
2.2 存储策略
生产环境的存储策略需要考虑性能、可靠性和可扩展性:
- 存储类型:
- 风哥提示:
- 数据文件:使用高性能SSD
- 日志文件:使用低延迟存储
- 备份文件:使用大容量存储
- RAID配置:
- 数据文件:建议使用RAID 10
- 日志文件:建议使用RAID 1
- 存储容量:
- 数据文件:预留50%以上的空间
- 日志文件:预留足够的空间存储WAL文件
- 备份文件:根据备份策略预留足够空间
2.3 备份策略
制定合理的备份策略,确保数据安全:
- 备份类型:
- 全量备份:定期进行全量备份
- 增量备份:在全量备份之间进行增量备份
- WAL备份:持续备份WAL文件
- 备份频率:
- 全量备份:每周一次
- 增量备份:每天一次
- WAL备份:实时备份
- 备份存储:
- 本地存储:用于快速恢复
- 远程存储:用于灾备
学习交流加群风哥微信: itpux-com
Part03-生产环境项目实施方案
3.1 目录结构部署
# 创建目录结构
[root@fgedu.net.cn ~]# mkdir -p /opengauss/app
[root@fgedu.net.cn ~]# mkdir -p /opengauss/fgdata
[root@fgedu.net.cn ~]# mkdir -p /opengauss/log
[root@fgedu.net.cn ~]# mkdir -p /opengauss/backup
[root@fgedu.net.cn ~]# mkdir -p /opengauss/archive
# 设置目录权限
[root@fgedu.net.cn ~]# chown -R opengauss:dbgrp /opengauss
[root@fgedu.net.cn ~]# chmod -R 700 /opengauss/fgdata
[root@fgedu.net.cn ~]# chmod -R 755 /opengauss/app
[root@fgedu.net.cn ~]# chmod -R 750 /opengauss/log
[root@fgedu.net.cn ~]# chmod -R 750 /opengauss/backup
[root@fgedu.net.cn ~]# chmod -R 750 /opengauss/archive
[root@fgedu.net.cn ~]# mkdir -p /opengauss/app
[root@fgedu.net.cn ~]# mkdir -p /opengauss/fgdata
[root@fgedu.net.cn ~]# mkdir -p /opengauss/log
[root@fgedu.net.cn ~]# mkdir -p /opengauss/backup
[root@fgedu.net.cn ~]# mkdir -p /opengauss/archive
# 设置目录权限
[root@fgedu.net.cn ~]# chown -R opengauss:dbgrp /opengauss
[root@fgedu.net.cn ~]# chmod -R 700 /opengauss/fgdata
[root@fgedu.net.cn ~]# chmod -R 755 /opengauss/app
[root@fgedu.net.cn ~]# chmod -R 750 /opengauss/log
[root@fgedu.net.cn ~]# chmod -R 750 /opengauss/backup
[root@fgedu.net.cn ~]# chmod -R 750 /opengauss/archive
3.2 核心文件配置
# 配置数据目录
[opengauss@fgedu.net.cn ~]$ vi /opengauss/fgdata/postgresql.conf
data_directory = ‘/opengauss/fgdata’ # directory where the data is stored
# 配置日志目录
学习交流加群风哥QQ113257174
[opengauss@fgedu.net.cn ~]$ vi /opengauss/fgdata/postgresql.conf
log_directory = ‘/opengauss/log’ # directory where log files are written
log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’ # log file name pattern
# 配置归档目录
[opengauss@fgedu.net.cn ~]$ vi /opengauss/fgdata/postgresql.conf
archive_mode = on # enables archiving
archive_command = ‘cp %p /opengauss/archive/%f’ # command to archive a logfile segment
[opengauss@fgedu.net.cn ~]$ vi /opengauss/fgdata/postgresql.conf
data_directory = ‘/opengauss/fgdata’ # directory where the data is stored
# 配置日志目录
学习交流加群风哥QQ113257174
[opengauss@fgedu.net.cn ~]$ vi /opengauss/fgdata/postgresql.conf
log_directory = ‘/opengauss/log’ # directory where log files are written
log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’ # log file name pattern
# 配置归档目录
[opengauss@fgedu.net.cn ~]$ vi /opengauss/fgdata/postgresql.conf
archive_mode = on # enables archiving
archive_command = ‘cp %p /opengauss/archive/%f’ # command to archive a logfile segment
3.3 文件管理方案
# 创建文件管理脚本
[opengauss@fgedu.net.cn ~]$ cat > /opengauss/scripts/file_manage.sh << EOF
#!/bin/bash
# file_manage.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 检查目录空间
check_space() {
echo “Checking disk space…”
df -h /opengauss
}
# 清理日志文件
clean_logs() {
echo “Cleaning old log files…”
find /opengauss/log -name “*.log” -mtime +7 -delete
}
# 清理归档文件
clean_archive() {
echo “Cleaning old archive files…”
find /opengauss/archive -name “*” -mtime +30 -delete
}
# 执行所有检查和清理
main() {
check_space
clean_logs
更多视频教程www.fgedu.net.cn
clean_archive
echo “File management completed.”
}
main
EOF
# 设置脚本权限
[opengauss@fgedu.net.cn ~]$ chmod +x /opengauss/scripts/file_manage.sh
[opengauss@fgedu.net.cn ~]$ cat > /opengauss/scripts/file_manage.sh << EOF
#!/bin/bash
# file_manage.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 检查目录空间
check_space() {
echo “Checking disk space…”
df -h /opengauss
}
# 清理日志文件
clean_logs() {
echo “Cleaning old log files…”
find /opengauss/log -name “*.log” -mtime +7 -delete
}
# 清理归档文件
clean_archive() {
echo “Cleaning old archive files…”
find /opengauss/archive -name “*” -mtime +30 -delete
}
# 执行所有检查和清理
main() {
check_space
clean_logs
更多视频教程www.fgedu.net.cn
clean_archive
echo “File management completed.”
}
main
EOF
# 设置脚本权限
[opengauss@fgedu.net.cn ~]$ chmod +x /opengauss/scripts/file_manage.sh
Part04-生产案例与实战讲解
4.1 目录结构查看
# 查看安装目录结构
[opengauss@fgedu.net.cn ~]$ ls -la /opengauss/app
total 28
drwxr-xr-x 7 opengauss dbgrp 4096 Jan 1 10:00 .
drwxr-xr-x 6 root root 4096 Jan 1 10:00 ..
drwxr-xr-x 2 opengauss dbgrp 4096 Jan 1 10:00 bin
drwxr-xr-x 3 opengauss dbgrp 4096 Jan 1 10:00 etc
drwxr-xr-x 3 opengauss dbgrp 4096 Jan 1 10:00 include
drwxr-xr-x 4 opengauss dbgrp 4096 Jan 1 10:00 lib
drwxr-xr-x 4 opengauss dbgrp 4096 Jan 1 10:00 share
# 查看数据目录结构
[opengauss@fgedu.net.cn ~]$ ls -la /opengauss/fgdata
total 120
drwx—— 20 opengauss dbgrp 4096 Jan 1 10:00 .
drwxr-xr-x 6 root root 4096 Jan 1 10:00 ..
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 base
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 global
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_clog
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_commit_ts
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_dynshmem
-rw——- 1 opengauss dbgrp 4467 Jan 1 10:00 pg_hba.conf
-rw——- 1 opengauss dbgrp 1636 Jan 1 10:00 pg_ident.conf
drwx—— 4 opengauss dbgrp 4096 Jan 1 10:00 pg_logical
drwx—— 4 opengauss dbgrp 4096 Jan 1 10:00 pg_multixact
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_notify
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_replslot
更多学习教程公众号风哥教程itpux_com
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_serial
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_snapshots
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_stat
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_stat_tmp
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_subtrans
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_tblspc
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_twophase
-rw——- 1 opengauss dbgrp 4 Jan 1 10:00 PG_VERSION
drwx—— 3 opengauss dbgrp 4096 Jan 1 10:00 pg_wal
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_xact
-rw——- 1 opengauss dbgrp 20064 Jan 1 10:00 postgresql.conf
-rw——- 1 opengauss dbgrp 88 Jan 1 10:00 postmaster.opts
-rw——- 1 opengauss dbgrp 57 Jan 1 10:00 postmaster.pid
[opengauss@fgedu.net.cn ~]$ ls -la /opengauss/app
total 28
drwxr-xr-x 7 opengauss dbgrp 4096 Jan 1 10:00 .
drwxr-xr-x 6 root root 4096 Jan 1 10:00 ..
drwxr-xr-x 2 opengauss dbgrp 4096 Jan 1 10:00 bin
drwxr-xr-x 3 opengauss dbgrp 4096 Jan 1 10:00 etc
drwxr-xr-x 3 opengauss dbgrp 4096 Jan 1 10:00 include
drwxr-xr-x 4 opengauss dbgrp 4096 Jan 1 10:00 lib
drwxr-xr-x 4 opengauss dbgrp 4096 Jan 1 10:00 share
# 查看数据目录结构
[opengauss@fgedu.net.cn ~]$ ls -la /opengauss/fgdata
total 120
drwx—— 20 opengauss dbgrp 4096 Jan 1 10:00 .
drwxr-xr-x 6 root root 4096 Jan 1 10:00 ..
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 base
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 global
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_clog
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_commit_ts
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_dynshmem
-rw——- 1 opengauss dbgrp 4467 Jan 1 10:00 pg_hba.conf
-rw——- 1 opengauss dbgrp 1636 Jan 1 10:00 pg_ident.conf
drwx—— 4 opengauss dbgrp 4096 Jan 1 10:00 pg_logical
drwx—— 4 opengauss dbgrp 4096 Jan 1 10:00 pg_multixact
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_notify
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_replslot
更多学习教程公众号风哥教程itpux_com
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_serial
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_snapshots
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_stat
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_stat_tmp
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_subtrans
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_tblspc
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_twophase
-rw——- 1 opengauss dbgrp 4 Jan 1 10:00 PG_VERSION
drwx—— 3 opengauss dbgrp 4096 Jan 1 10:00 pg_wal
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 pg_xact
-rw——- 1 opengauss dbgrp 20064 Jan 1 10:00 postgresql.conf
-rw——- 1 opengauss dbgrp 88 Jan 1 10:00 postmaster.opts
-rw——- 1 opengauss dbgrp 57 Jan 1 10:00 postmaster.pid
4.2 核心文件解析
# 查看配置文件内容
[opengauss@fgedu.net.cn ~]$ cat /opengauss/fgdata/postgresql.conf | grep -E “^[^#]” | head -20
data_directory = ‘/opengauss/fgdata’ # directory where the data is stored
hba_file = ‘/opengauss/fgdata/pg_hba.conf’ # host-based authentication file
ident_file = ‘/opengauss/fgdata/pg_ident.conf’ # ident configuration file
external_pid_file = ‘/opengauss/fgdata/postmaster.pid’ # write an extra PID file
listen_addresses = ‘*’ # what IP address(es) to listen on;
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
superuser_reserved_connections = 10 # (change requires restart)
unix_socket_directories = ‘/tmp’ # comma-separated list of directories
shared_buffers = 2GB # min 128kB
dynamic_shared_memory_type = posix # the default is the first option
from DB视频:www.itpux.com
work_mem = 32MB # min 64kB
maintenance_work_mem = 512MB # min 1MB
max_stack_depth = 2MB # min 100kB
effective_cache_size = 6GB # suggestion for how much memory is available
log_destination = ‘stderr’ # Valid values are combinations of
logging_collector = on # Enable capturing of stderr and csvlog
log_directory = ‘/opengauss/log’ # directory where log files are written
log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’ # log file name pattern
log_truncate_on_rotation = on # If on, an existing log file with the same
# 查看认证配置文件
[opengauss@fgedu.net.cn ~]$ cat /opengauss/fgdata/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# “local” is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 md5
# IPv6 local connections:
host all all ::1/128 trust
[opengauss@fgedu.net.cn ~]$ cat /opengauss/fgdata/postgresql.conf | grep -E “^[^#]” | head -20
data_directory = ‘/opengauss/fgdata’ # directory where the data is stored
hba_file = ‘/opengauss/fgdata/pg_hba.conf’ # host-based authentication file
ident_file = ‘/opengauss/fgdata/pg_ident.conf’ # ident configuration file
external_pid_file = ‘/opengauss/fgdata/postmaster.pid’ # write an extra PID file
listen_addresses = ‘*’ # what IP address(es) to listen on;
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
superuser_reserved_connections = 10 # (change requires restart)
unix_socket_directories = ‘/tmp’ # comma-separated list of directories
shared_buffers = 2GB # min 128kB
dynamic_shared_memory_type = posix # the default is the first option
from DB视频:www.itpux.com
work_mem = 32MB # min 64kB
maintenance_work_mem = 512MB # min 1MB
max_stack_depth = 2MB # min 100kB
effective_cache_size = 6GB # suggestion for how much memory is available
log_destination = ‘stderr’ # Valid values are combinations of
logging_collector = on # Enable capturing of stderr and csvlog
log_directory = ‘/opengauss/log’ # directory where log files are written
log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’ # log file name pattern
log_truncate_on_rotation = on # If on, an existing log file with the same
# 查看认证配置文件
[opengauss@fgedu.net.cn ~]$ cat /opengauss/fgdata/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# “local” is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 md5
# IPv6 local connections:
host all all ::1/128 trust
4.3 文件维护实战
# 执行文件管理脚本
[opengauss@fgedu.net.cn ~]$ /opengauss/scripts/file_manage.sh
Checking disk space…
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 10G 40G 20% /
Cleaning old log files…
Cleaning old archive files…
File management completed.
# 检查WAL文件
[opengauss@fgedu.net.cn ~]$ ls -la /opengauss/fgdata/pg_wal
total 16384
drwx—— 3 opengauss dbgrp 4096 Jan 1 10:00 .
drwx—— 20 opengauss dbgrp 4096 Jan 1 10:00 ..
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 archive_status
-rw——- 1 opengauss dbgrp 16777216 Jan 1 10:00 000000010000000000000001
-rw——- 1 opengauss dbgrp 16777216 Jan 1 10:00 000000010000000000000002
# 检查归档文件
[opengauss@fgedu.net.cn ~]$ ls -la /opengauss/archive
total 32768
drwxr-x— 2 opengauss dbgrp 4096 Jan 1 10:00 .
drwxr-xr-x 6 root root 4096 Jan 1 10:00 ..
-rw——- 1 opengauss dbgrp 16777216 Jan 1 10:00 000000010000000000000001
-rw——- 1 opengauss dbgrp 16777216 Jan 1 10:00 000000010000000000000002
[opengauss@fgedu.net.cn ~]$ /opengauss/scripts/file_manage.sh
Checking disk space…
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 10G 40G 20% /
Cleaning old log files…
Cleaning old archive files…
File management completed.
# 检查WAL文件
[opengauss@fgedu.net.cn ~]$ ls -la /opengauss/fgdata/pg_wal
total 16384
drwx—— 3 opengauss dbgrp 4096 Jan 1 10:00 .
drwx—— 20 opengauss dbgrp 4096 Jan 1 10:00 ..
drwx—— 2 opengauss dbgrp 4096 Jan 1 10:00 archive_status
-rw——- 1 opengauss dbgrp 16777216 Jan 1 10:00 000000010000000000000001
-rw——- 1 opengauss dbgrp 16777216 Jan 1 10:00 000000010000000000000002
# 检查归档文件
[opengauss@fgedu.net.cn ~]$ ls -la /opengauss/archive
total 32768
drwxr-x— 2 opengauss dbgrp 4096 Jan 1 10:00 .
drwxr-xr-x 6 root root 4096 Jan 1 10:00 ..
-rw——- 1 opengauss dbgrp 16777216 Jan 1 10:00 000000010000000000000001
-rw——- 1 opengauss dbgrp 16777216 Jan 1 10:00 000000010000000000000002
Part05-风哥经验总结与分享
5.1 目录结构最佳实践
- 目录分离:将安装目录、数据目录、日志目录和备份目录分离,便于管理和维护
- 权限设置:严格控制目录权限,确保只有授权用户能够访问
- 空间管理:定期检查目录空间使用情况,避免空间不足
- 备份策略:制定合理的备份策略,确保数据安全
- 监控机制:建立目录和文件的监控机制,及时发现异常
5.2 核心文件管理要点
- 配置文件管理:
- 定期备份配置文件
- 记录配置文件的修改历史
- 使用版本控制系统管理配置文件
- 日志文件管理:
- 定期清理过期日志文件
- 设置合理的日志保留策略
- 监控日志文件大小
- 数据文件管理:
- 定期检查数据文件完整性
- 监控数据文件增长情况
- 合理规划表空间
5.3 常见问题与解决方案
常见目录和文件问题及解决方法
- 问题1:目录权限错误导致数据库无法启动
- 症状:数据库启动失败,提示权限错误
- 解决方案:检查目录权限,确保数据库用户拥有正确的权限
- 问题2:磁盘空间不足
- 症状:数据库运行缓慢或无法启动,提示磁盘空间不足
- 解决方案:清理过期文件,扩展磁盘空间,或调整存储策略
- 问题3:日志文件过大
- 症状:日志文件占用过多磁盘空间
- 解决方案:调整日志级别,设置合理的日志保留策略,定期清理日志文件
- 问题4:配置文件错误
- 症状:数据库无法启动或运行异常
- 解决方案:检查配置文件语法,恢复备份的配置文件
风哥提示:目录结构和核心文件是数据库运行的基础,合理的目录规划和文件管理对于数据库的稳定运行至关重要。在生产环境中,应该建立完善的目录管理和文件维护机制,确保数据库的安全和稳定。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
