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

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

1. Firebird概述与环境规划

Firebird是一款开源的关系型数据库管理系统,源自Borland公司的InterBase数据库。Firebird以其小巧、高效、稳定著称,支持多种操作系统平台,广泛应用于嵌入式系统、桌面应用和中小型企业应用。更多学习教程www.fgedu.net.cn

1.1 Firebird版本说明

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

# 查看Firebird版本
$ isql -z
ISQL Version: LI-T4.0.2.2816 Firebird 4.0
Use CONNECT or CREATE DATABASE to specify a database

# 查看详细版本信息
SQL> SELECT RDB$GET_CONTEXT(‘SYSTEM’, ‘ENGINE_VERSION’) FROM RDB$DATABASE;

RDB$GET_CONTEXT
===============================
4.0.2.2816

1.2 环境规划

本次安装环境规划如下:

主机名:fgedudb01.fgedu.net.cn
IP地址:192.168.1.51
数据库实例名:fgedudb
端口号:3050
数据库用户:SYSDBA
数据库目录:/data/firebird

磁盘空间规划:
/data/firebird 100GB (数据库数据)
/backup/firebird 50GB (备份空间)

1.3 Firebird核心特性

主要特点:
1. 开源免费:完全开源,无许可费用
2. 跨平台:支持Windows、Linux、macOS等
3. 轻量级:安装包小,资源占用低
4. 高性能:优化的查询引擎和存储引擎
5. SQL兼容:支持SQL-92标准
6. 存储过程:支持PSQL存储过程和触发器
7. 多版本并发控制:MVCC机制,无锁读取
8. 嵌入式模式:支持嵌入式部署

2. 硬件环境要求与检查

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

2.1 最低硬件要求

最低配置:
CPU:任意x86处理器
内存:256MB
磁盘:50MB

推荐配置(生产环境):
CPU:4核心以上
内存:8GB以上
磁盘:100GB以上
网络:百兆网卡

高可用环境配置:
CPU:8核心以上
内存:16GB以上
磁盘:500GB以上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: 15Gi 1.0Gi 13Gi 256Mi 1.0Gi 14Gi
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 100G 10G 90G 10% /data
/dev/mapper/vg_backup-lv_backup 50G 5G 45G 10% /backup

# 检查所需软件包
# rpm -qa | grep -E “libicu|libtommath”
libicu-60.3-2.el8_1.x86_64
libtommath-1.0.1-7.el8.x86_64

# 安装依赖包
# dnf install -y libicu libtommath

2.3 内核参数配置

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

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

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

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

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

# 输出示例:
kernel.shmmax = 17179869184
kernel.shmall = 4194304
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 655360

2.4 用户资源限制配置

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

# 添加以下配置
firebird soft nofile 65535
firebird hard nofile 65535
firebird soft nproc 65535
firebird hard nproc 65535
firebird soft memlock unlimited
firebird hard memlock unlimited

# 验证配置
# su – firebird
$ ulimit -n
65535

生产环境建议:Firebird资源占用较低,适合中小型应用。对于生产环境,建议配置足够的文件描述符和共享内存。

3. Firebird数据库安装步骤

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

3.1 下载Firebird安装包

# 下载Firebird 4.0
# wget https://github.com/FirebirdSQL/firebird/releases/download/v4.0.2/Firebird-4.0.2.2816-0.amd64.tar.gz

# 输出示例:
–2026-04-04 10:00:00– https://github.com/FirebirdSQL/firebird/releases/download/v4.0.2/Firebird-4.0.2.2816-0.amd64.tar.gz
正在解析主机 github.com… 140.82.121.4
正在连接 github.com|140.82.121.4|:443… 已连接。
已发出 HTTP 请求,正在等待回应… 302 Found
位置:https://objects.githubusercontent.com/… [跟随至新的 URL]
100 15.0M 100 15.0M 0 0 10.0M 0 0:00:01 0:00:01 –:–:– 10.0M
2026-04-04 10:00:05 (10.0 MB/s) – 已保存 “Firebird-4.0.2.2816-0.amd64.tar.gz”

# 解压安装包
# tar -xzf Firebird-4.0.2.2816-0.amd64.tar.gz

# 输出示例:
# ls -la
drwxr-xr-x. 6 root root 4096 4月 4 10:00 Firebird-4.0.2.2816-0.amd64

3.2 安装Firebird

# 进入安装目录
# cd Firebird-4.0.2.2816-0.amd64

# 运行安装脚本
# ./install.sh

# 输出示例:
Firebird 4.0.2.2816-0.amd64 Installation

Press Enter to start installation or ^C to abort.

This installation will install Firebird 4.0.2.2816-0.amd64
in the directory /opt/firebird.

Do you want to continue? [Y/n] Y

Installing…

Select the type of Firebird server you want to install:
1. Super Server (recommended)
2. Classic Server
3. Super Classic

Enter your choice [1]: 1

Installing Super Server…

Creating firebird user and group…
Creating /opt/firebird directory…
Copying files…
Setting permissions…

Installation completed successfully.

Firebird has been installed in /opt/firebird.

Please run /opt/firebird/bin/changeDBAPassword.sh to set
the SYSDBA password.

# 设置SYSDBA密码
# /opt/firebird/bin/changeDBAPassword.sh

# 输出示例:
Enter new SYSDBA password:
Verify new SYSDBA password:
Password changed successfully.

# 验证安装
# ls -la /opt/firebird/
总用量 0
drwxr-xr-x. 2 root root 6 4月 4 10:00 UDF
drwxr-xr-x. 2 root root 22 4月 4 10:00 bin
drwxr-xr-x. 3 root root 20 4月 4 10:00 data
drwxr-xr-x. 2 root root 24 4月 4 10:00 doc
drwxr-xr-x. 2 root root 30 4月 4 10:00 include
drwxr-xr-x. 2 root root 60 4月 4 10:00 lib
drwxr-xr-x. 2 root root 6 4月 4 10:00 log
drwxr-xr-x. 2 root root 6 4月 4 10:00 misc
drwxr-xr-x. 2 root root. 2 root root 24 4月 4 10:00 plugins
drwxr-xr-x. 2 root root 6 4月 4 10:00 run
drwxr-xr-x. 2 root root 20 4月 4 10:00 examples

3.3 配置环境变量

# 编辑环境变量文件
# vi /etc/profile.d/firebird.sh

# 添加以下内容
export FIREBIRD=/opt/firebird
export PATH=$FIREBIRD/bin:$PATH

# 使环境变量生效
# source /etc/profile.d/firebird.sh

# 验证环境变量
# echo $FIREBIRD
/opt/firebird

# 验证命令
# which isql
/opt/firebird/bin/isql

3.4 启动Firebird服务

# 启动Firebird服务
# systemctl start firebird-superserver

# 设置开机自启动
# systemctl enable firebird-superserver

# 输出示例:
Created symlink /etc/systemd/system/multi-user.target.wants/firebird-superserver.service → /usr/lib/systemd/system/firebird-superserver.service.

# 检查服务状态
# systemctl status firebird-superserver

● firebird-superserver.service – Firebird Database Server (Super Server)
Loaded: loaded (/usr/lib/systemd/system/firebird-superserver.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2026-04-04 10:00:00 CST; 5s ago
Process: 12345 ExecStart=/opt/firebird/bin/fbguard -daemon -forever (code=exited, status=0/SUCCESS)
Main PID: 12346 (fbguard)
Tasks: 3 (limit: 4915)
Memory: 5.0M
CGroup: /system.slice/firebird-superserver.service
├─12346 /opt/firebird/bin/fbguard -daemon -forever
└─12347 /opt/firebird/bin/firebird

# 检查端口
# netstat -tlnp | grep 3050
tcp 0 0 0.0.0.0:3050 0.0.0.0:* LISTEN 12347/firebird

风哥提示:Firebird安装后会自动创建firebird用户和组。Super Server模式适合大多数应用场景,Classic Server模式适合多CPU环境。

4. 数据库参数配置

数据库参数配置是Firebird安装的关键步骤,直接影响数据库性能和稳定性。更多学习教程公众号风哥教程itpux_com

4.1 配置firebird.conf

# 编辑配置文件
# vi /opt/firebird/firebird.conf

# 修改以下关键参数
# 数据库缓存大小(页数,每页4KB)
DefaultDbCachePages = 8192

# 锁管理器内存
LockMemSize = 10485760

# 事件内存大小
EventMemSize = 65536

# 最大连接数
MaxConnections = 1000

# 远程服务端口
RemoteServicePort = 3050

# 远程服务名称
RemoteServiceName = gds_db

# 外部文件访问
ExternalFileAccess = Restrict UDF

# 数据库访问路径
DatabaseAccess = Restrict /data/firebird

# 临时目录
TempDirectories = /tmp

# 完整性检查
BugcheckAbort = 0

# 死锁超时
DeadlockTimeout = 10

# 保存更改后重启服务
# systemctl restart firebird-superserver

# 输出示例:
# systemctl status firebird-superserver
● firebird-superserver.service – Firebird Database Server (Super Server)
Loaded: loaded (/usr/lib/systemd/system/firebird-superserver.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2026-04-04 10:05:00 CST; 5s ago

4.2 配置databases.conf

# 编辑数据库配置文件
# vi /opt/firebird/databases.conf

# 添加数据库别名
fgedudb = /data/firebird/fgedudb.fdb

# 说明:
# 格式:别名 = 数据库文件路径
# 使用别名可以隐藏实际文件路径

# 创建数据库目录
# mkdir -p /data/firebird
# chown firebird:firebird /data/firebird
# chmod 750 /data/firebird

# 验证配置
# cat /opt/firebird/databases.conf
fgedudb = /data/firebird/fgedudb.fdb

4.3 配置安全策略

# 编辑安全配置文件
# vi /opt/firebird/plugins.conf

# 配置用户管理插件
AuthServer = Srp, Legacy_Auth
AuthClient = Srp, Legacy_Auth
UserManager = Srp

# 编辑安全数据库配置
# vi /opt/firebird/security5.fdb

# 使用gsec工具管理用户
# /opt/firebird/bin/gsec -user SYSDBA -password masterkey

GSEC> display

user name user id on system admin
============================== ================= =====
SYSDBA 0 yes

GSEC> add fgeduuser -pw fgedupass -fname “FGEDU User”

GSEC> display

user name user id on system admin
============================== ================= =====
SYSDBA 0 yes
FGEDUUSER 0 no

GSEC> modify fgeduuser -admin yes

GSEC> display

user name user id on system admin
============================== ================= =====
SYSDBA 0 yes
FGEDUUSER 0 yes

GSEC> quit

生产环境建议:DefaultDbCachePages参数建议设置为物理内存的25%-50%(以4KB页为单位)。MaxConnections根据并发连接数设置。建议使用Srp认证插件以提高安全性。

5. 数据库管理

Firebird使用单一文件存储数据库,管理简单方便。from:www.itpux.com

5.1 创建数据库

# 使用isql创建数据库
$ isql -user SYSDBA -password masterkey

Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE ‘/data/firebird/fgedudb.fdb’
CON> USER ‘SYSDBA’ PASSWORD ‘masterkey’
CON> PAGE_SIZE 16384
CON> DEFAULT CHARACTER SET UTF8;

SQL> SHOW DATABASE;
Database: /data/firebird/fgedudb.fdb
Owner: SYSDBA
PAGE_SIZE 16384
Number of DB pages allocated = 207
Number of DB pages used = 204
Number of DB pages free = 3
Sweep interval = 20000
Forced Writes are ON
Transaction – oldest = 1
Transaction – oldest active = 2
Transaction – oldest snapshot = 2
Transaction – next = 3
ODS = 13.0
Database not encrypted
Default Character set: UTF8

SQL> COMMIT;
SQL> EXIT;

5.2 创建表和索引

# 连接数据库
$ isql /data/firebird/fgedudb.fdb -user SYSDBA -password masterkey

Database: /data/firebird/fgedudb.fdb, User: SYSDBA
SQL> CREATE TABLE fgedu_users (
CON> user_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
CON> username VARCHAR(50) NOT NULL,
CON> password VARCHAR(100) NOT NULL,
CON> email VARCHAR(100),
CON> created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CON> updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
CON> );

SQL> CREATE UNIQUE INDEX idx_users_username ON fgedu_users(username);

SQL> CREATE TABLE fgedu_orders (
CON> order_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
CON> user_id INTEGER NOT NULL,
CON> order_no VARCHAR(50) NOT NULL,
CON> amount DECIMAL(12,2) NOT NULL,
CON> status VARCHAR(20) DEFAULT ‘pending’,
CON> created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CON> CONSTRAINT fk_orders_user FOREIGN KEY (user_id) REFERENCES fgedu_users(user_id)
CON> );

SQL> CREATE INDEX idx_orders_user ON fgedu_orders(user_id);

SQL> CREATE INDEX idx_orders_status ON fgedu_orders(status);

SQL> SHOW TABLE fgedu_users;
USER_ID INTEGER Not Null
USERNAME VARCHAR(50) Not Null
PASSWORD VARCHAR(100) Not Null
EMAIL VARCHAR(100) Nullable
CREATED_AT TIMESTAMP Nullable
UPDATED_AT TIMESTAMP Nullable
CONSTRAINT INTEG_13:
Primary key (USER_ID)

SQL> INSERT INTO fgedu_users (username, password, email) VALUES (‘admin’, ‘password123’, ‘admin@fgedu.net.cn’);

SQL> SELECT * FROM fgedu_users;

USER_ID USERNAME PASSWORD EMAIL CREATED_AT UPDATED_AT
============ ========================================================= ========================================================= ========================================================= ======================== ========================
1 admin password123 admin@fgedu.net.cn 2026-04-04 10:00:00.0000 2026-04-04 10:00:00.0000

SQL> COMMIT;
SQL> EXIT;

5.3 数据库维护

# 数据库统计信息
$ gstat -h /data/firebird/fgedudb.fdb

Database “/data/firebird/fgedudb.fdb”
Database header page information:
Flags 0
Checksum 12345
Generation 10
Page size 16384
ODS version 13.0
Oldest transaction 1
Oldest active 2
Oldest snapshot 2
Next transaction 3
Bumped transaction 1
Sequence number 0
Next attachment ID 1
Implementation ID 26
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Apr 4, 2026 10:00:00
Attributes force write

Variable header data:
Sweep interval: 20000
*END*

# 数据库验证
$ gfix -v -n /data/firebird/fgedudb.fdb

# 输出示例(无错误):
# 如果有错误会显示错误信息

# 数据库清扫(清理旧版本记录)
$ gfix -sweep /data/firebird/fgedudb.fdb

# 设置数据库为只读模式
$ gfix -mode read_only /data/firebird/fgedudb.fdb

# 设置数据库为读写模式
$ gfix -mode read_write /data/firebird/fgedudb.fdb

# 设置同步写入
$ gfix -write sync /data/firebird/fgedudb.fdb

# 设置异步写入
$ gfix -write async /data/firebird/fgedudb.fdb

风哥提示:Firebird使用MVCC机制,定期清扫可以清理旧版本记录,释放空间。建议在低峰期执行清扫操作。

6. 网络连接配置

网络连接配置是客户端访问数据库的关键,需要正确配置监听端口和连接方式。更多学习教程www.fgedu.net.cn

6.1 配置网络监听

# 查看当前监听端口
# netstat -tlnp | grep firebird
tcp 0 0 0.0.0.0:3050 0.0.0.0:* LISTEN 12347/firebird

# 配置监听地址
# vi /opt/firebird/firebird.conf

# 修改以下参数
RemoteBindAddress = 192.168.1.51

# 重启服务
# systemctl restart firebird-superserver

# 验证监听地址
# netstat -tlnp | grep firebird
tcp 0 0 192.168.1.51:3050 0.0.0.0:* LISTEN 12347/firebird

6.2 配置客户端连接

# 本地连接
$ isql /data/firebird/fgedudb.fdb -user SYSDBA -password masterkey

# 使用别名连接
$ isql localhost:fgedudb -user SYSDBA -password masterkey

# 使用IP地址连接
$ isql 192.168.1.51:/data/firebird/fgedudb.fdb -user SYSDBA -password masterkey

# 使用端口连接
$ isql 192.168.1.51/3050:/data/firebird/fgedudb.fdb -user SYSDBA -password masterkey

Database: 192.168.1.51/3050:/data/firebird/fgedudb.fdb, User: SYSDBA
SQL> SELECT * FROM fgedu_users;

USER_ID USERNAME PASSWORD EMAIL CREATED_AT UPDATED_AT
============ ========================================================= ========================================================= ========================================================= ======================== ========================
1 admin password123 admin@fgedu.net.cn 2026-04-04 10:00:00.0000 2026-04-04 10:00:00.0000

SQL> EXIT;

6.3 配置防火墙

# 开放Firebird端口
# firewall-cmd –permanent –add-port=3050/tcp
success

# 重载防火墙
# firewall-cmd –reload
success

# 验证防火墙规则
# firewall-cmd –list-ports
3050/tcp

生产环境建议:建议使用别名连接数据库,隐藏实际文件路径。对于安全要求高的环境,可以配置RemoteBindAddress限制监听地址。

7. 备份恢复配置

备份恢复是数据库管理的重要环节,Firebird提供了gbak工具进行备份恢复。学习交流加群风哥微信: itpux-com

7.1 数据库备份

# 创建备份目录
# mkdir -p /backup/firebird
# chown firebird:firebird /backup/firebird

# 全库备份
$ gbak -backup -user SYSDBA -password masterkey /data/firebird/fgedudb.fdb /backup/firebird/fgedudb_full.fbk

# 输出示例:
gbak:readied database /data/firebird/fgedudb.fdb for backup
gbak:creating file /backup/firebird/fgedudb_full.fbk
gbak:starting transaction
gbak:database /data/firebird/fgedudb.fdb has a page size of 16384 bytes.
gbak:writing domains
gbak:writing tables
gbak:writing stored procedures
gbak:writing triggers
gbak:writing views
gbak:writing check constraints
gbak:writing referential constraints
gbak:writing data for table FGEDU_USERS
gbak: 1 records written
gbak:writing data for table FGEDU_ORDERS
gbak: 0 records written
gbak:writing indices
gbak:writing user names
gbak:writing roles
gbak:writing generators
gbak:writing system data
gbak:finishing, closing, and going away

# 增量备份(需要先执行全备份)
$ gbak -backup -user SYSDBA -password masterkey -trans /data/firebird/fgedudb.fdb /backup/firebird/fgedudb_incr.fbk

# 验证备份文件
$ ls -lh /backup/firebird/
总用量 1.0M
-rw-r–r–. 1 firebird firebird 512K 4月 4 10:00 fgedudb_full.fbk

7.2 数据库恢复

# 恢复数据库
$ gbak -replace -user SYSDBA -password masterkey /backup/firebird/fgedudb_full.fbk /data/firebird/fgedudb_restored.fdb

# 输出示例:
gbak:opened file /backup/firebird/fgedudb_full.fbk
gbak:readied database /data/firebird/fgedudb_restored.fdb for restore
gbak:starting transaction
gbak:database /data/firebird/fgedudb_restored.fdb has a page size of 16384 bytes.
gbak:restoring domain RDB$1
gbak:restoring domain RDB$2
gbak:restoring table FGEDU_USERS
gbak:restoring table FGEDU_ORDERS
gbak:restoring data for table FGEDU_USERS
gbak: 1 records restored
gbak:restoring data for table FGEDU_ORDERS
gbak: 0 records restored
gbak:restoring index RDB$PRIMARY2
gbak:restoring index IDX_USERS_USERNAME
gbak:restoring index RDB$PRIMARY3
gbak:restoring index IDX_ORDERS_USER
gbak:restoring index IDX_ORDERS_STATUS
gbak:finishing, closing, and going away

# 验证恢复的数据库
$ isql /data/firebird/fgedudb_restored.fdb -user SYSDBA -password masterkey

Database: /data/firebird/fgedudb_restored.fdb, User: SYSDBA
SQL> SELECT * FROM fgedu_users;

USER_ID USERNAME PASSWORD EMAIL CREATED_AT UPDATED_AT
============ ========================================================= ========================================================= ========================================================= ======================== ========================
1 admin password123 admin@fgedu.net.cn 2026-04-04 10:00:00.0000 2026-04-04 10:00:00.0000

SQL> EXIT;

7.3 自动备份脚本

# 创建备份脚本
$ vi /home/firebird/scripts/firebird_backup.sh

#!/bin/bash
export FIREBIRD=/opt/firebird
export PATH=$FIREBIRD/bin:$PATH

BACKUP_DIR=/backup/firebird
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE=/home/firebird/logs/backup.log

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

# 全备份
gbak -backup -user SYSDBA -password masterkey /data/firebird/fgedudb.fdb ${BACKUP_DIR}/fgedudb_${DATE}.fbk >> $LOG_FILE 2>&1

if [ $? -eq 0 ]; then
echo “Backup completed successfully” >> $LOG_FILE
else
echo “Backup failed” >> $LOG_FILE
fi

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

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

# 设置脚本权限
$ chmod +x /home/firebird/scripts/firebird_backup.sh

# 创建日志目录
$ mkdir -p /home/firebird/logs

# 配置定时任务
$ crontab -e

# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /home/firebird/scripts/firebird_backup.sh

# 验证定时任务
$ crontab -l
0 2 * * * /home/firebird/scripts/firebird_backup.sh

风哥提示:生产环境建议配置自动备份脚本,定期执行全备份。备份文件建议存储在独立的存储设备或远程服务器上。

8. 升级与迁移

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

8.1 版本升级

# 检查当前版本
$ isql -z
ISQL Version: LI-T4.0.2.2816 Firebird 4.0

# 执行完整备份
$ gbak -backup -user SYSDBA -password masterkey /data/firebird/fgedudb.fdb /backup/firebird/fgedudb_pre_upgrade.fbk

# 停止服务
# systemctl stop firebird-superserver

# 安装新版本
# cd /tmp/Firebird-5.0.0.0.amd64
# ./install.sh

# 启动服务
# systemctl start firebird-superserver

# 验证版本
$ isql -z
ISQL Version: LI-T5.0.0.0 Firebird 5.0

# 检查数据库
$ gfix -v -n /data/firebird/fgedudb.fdb

# 如果需要升级ODS版本
$ gfix -upgrade /data/firebird/fgedudb.fdb

8.2 数据迁移

# 使用gbak迁移
# 在源服务器执行备份
$ gbak -backup -user SYSDBA -password masterkey /data/firebird/fgedudb.fdb /backup/firebird/fgedudb_migrate.fbk

# 传输备份文件
$ scp /backup/firebird/fgedudb_migrate.fbk target-server:/backup/firebird/

# 在目标服务器执行恢复
$ gbak -replace -user SYSDBA -password masterkey /backup/firebird/fgedudb_migrate.fbk /data/firebird/fgedudb.fdb

# 使用数据导出导入
# 导出数据
$ isql /data/firebird/fgedudb.fdb -user SYSDBA -password masterkey -o /backup/firebird/fgedu_users.txt -q
SQL> SELECT * FROM fgedu_users;
SQL> EXIT;

# 导入数据
$ isql /data/firebird/fgedudb_new.fdb -user SYSDBA -password masterkey -i /backup/firebird/fgedu_users.txt

8.3 跨平台迁移

# 从Windows迁移到Linux
# 1. 在Windows上执行备份
gbak -backup -user SYSDBA -password masterkey C:\Data\fgedudb.fdb D:\Backup\fgedudb.fbk

# 2. 传输备份文件到Linux服务器
# 使用FTP或SCP传输

# 3. 在Linux上执行恢复
$ gbak -replace -user SYSDBA -password masterkey /backup/firebird/fgedudb.fbk /data/firebird/fgedudb.fdb

# 注意:备份文件是跨平台兼容的

生产环境建议:升级前必须执行完整备份,并在测试环境验证升级过程。跨版本升级可能需要升级ODS版本,建议在低峰期执行。

9. 生产环境实战案例

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

9.1 创建存储过程

# 连接数据库
$ isql /data/firebird/fgedudb.fdb -user SYSDBA -password masterkey

SQL> SET TERM ^ ;
SQL> CREATE PROCEDURE sp_get_user_orders (
CON> p_user_id INTEGER
CON> )
CON> RETURNS (
CON> order_id INTEGER,
CON> order_no VARCHAR(50),
CON> amount DECIMAL(12,2),
CON> status VARCHAR(20),
CON> created_at TIMESTAMP
CON> )
CON> AS
CON> BEGIN
CON> FOR SELECT order_id, order_no, amount, status, created_at
CON> FROM fgedu_orders
CON> WHERE user_id = :p_user_id
CON> INTO :order_id, :order_no, :amount, :status, :created_at
CON> DO
CON> BEGIN
CON> SUSPEND;
CON> END
CON> END^
SQL> SET TERM ; ^

SQL> SELECT * FROM sp_get_user_orders(1);

ORDER_ID ORDER_NO AMOUNT STATUS CREATED_AT
============ ========================================================= ============ ========================================================= ========================
1 ORD001 100.00 completed 2026-04-04 10:00:00.0000

SQL> COMMIT;
SQL> EXIT;

9.2 创建触发器

# 连接数据库
$ isql /data/firebird/fgedudb.fdb -user SYSDBA -password masterkey

SQL> SET TERM ^ ;
SQL> CREATE TRIGGER trg_users_update FOR fgedu_users
CON> BEFORE UPDATE
CON> AS
CON> BEGIN
CON> NEW.updated_at = CURRENT_TIMESTAMP;
CON> END^
SQL> SET TERM ; ^

SQL> UPDATE fgedu_users SET email = ‘admin_new@fgedu.net.cn’ WHERE user_id = 1;

SQL> SELECT * FROM fgedu_users WHERE user_id = 1;

USER_ID USERNAME PASSWORD EMAIL CREATED_AT UPDATED_AT
============ ========================================================= ========================================================= ========================================================= ======================== ========================
1 admin password123 admin_new@fgedu.net.cn 2026-04-04 10:00:00.0000 2026-04-04 10:05:00.0000

SQL> COMMIT;
SQL> EXIT;

9.3 性能监控

# 查看数据库统计信息
$ gstat -a /data/firebird/fgedudb.fdb

Database “/data/firebird/fgedudb.fdb”
Database header page information:
Flags 0
Checksum 12345
Generation 20
Page size 16384
ODS version 13.0
Oldest transaction 1
Oldest active 2
Oldest snapshot 2
Next transaction 10
Bumped transaction 1
Sequence number 0
Next attachment ID 5
Implementation ID 26
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Apr 4, 2026 10:00:00
Attributes force write

Analyzing database pages …

FGEDU_USERS (128)
Primary pointer page: 129, Index root page: 130
Data pages: 1, data page slots: 1, average fill: 50%
Fill distribution:
0 – 19% = 0
20 – 39% = 0
40 – 59% = 1
60 – 79% = 0
80 – 99% = 0

FGEDU_ORDERS (129)
Primary pointer page: 131, Index root page: 132
Data pages: 1, data page slots: 1, average fill: 0%
Fill distribution:
0 – 19% = 1
20 – 39% = 0
40 – 59% = 0
60 – 79% = 0
80 – 99% = 0

# 查看表统计信息
$ isql /data/firebird/fgedudb.fdb -user SYSDBA -password masterkey

SQL> SELECT
CON> RDB$RELATION_NAME AS TABLE_NAME,
CON> RDB$STATISTICS AS STATISTICS
CON> FROM RDB$INDICES
CON> WHERE RDB$RELATION_NAME = ‘FGEDU_USERS’;

TABLE_NAME STATISTICS
=================================================================================================== ===================
FGEDU_USERS 0.000000000
FGEDU_USERS 0.000000000

SQL> EXIT;

# 重建索引
$ isql /data/firebird/fgedudb.fdb -user SYSDBA -password masterkey

SQL> ALTER INDEX IDX_USERS_USERNAME INACTIVE;

SQL> ALTER INDEX IDX_USERS_USERNAME ACTIVE;

SQL> COMMIT;
SQL> EXIT;

风哥提示:Firebird提供了丰富的监控工具,如gstat、gfix等。建议定期检查数据库统计信息,重建索引以提高性能。

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

联系我们

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

微信号:itpux-com

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