1. SequoiaDB概述与环境规划
SequoiaDB(巨杉数据库)是一款国产金融级分布式数据库,采用文档型数据模型,支持ACID事务、SQL查询、多模数据处理等特性。SequoiaDB具有高性能、高可用、弹性扩展等特点,广泛应用于金融、政府、电信等行业。更多学习教程www.fgedu.net.cn
1.1 SequoiaDB版本说明
SequoiaDB目前主要版本为V5.0,本教程以SequoiaDB V5.0为例进行详细讲解。
$ sequoiadb –version
SequoiaDB V5.0.8 Release (Build 20240315)
# 查看服务状态
$ sdbsqlplus -h 192.168.1.51 -s ‘select * from $SNAPSHOT_DB’
# 查看集群状态
$ sdbtop
HostName SvcName Role PID GroupName
———- ——- ——– —– ———–
fgedudb01 11810 coord 12345 SYSCoord
fgedudb01 11820 catalog 12346 SYSCatalogGroup
fgedudb01 11830 data 12347 group1
fgedudb02 11830 data 12348 group1
1.2 环境规划
本次安装环境规划如下:
IP地址:192.168.1.51
SequoiaDB协调节点端口:11810
SequoiaDB编目节点端口:11820
SequoiaDB数据节点端口:11830
数据目录:/data/sequoiadb
配置目录:/opt/sequoiadb/conf
日志目录:/opt/sequoiadb/log
备份目录:/backup/sequoiadb
存储规划:
集合空间名:fgeducs
集合名:fgedu_employees
数据文件:/data/sequoiadb/data
1.3 SequoiaDB核心特性
1. 金融级分布式架构:支持海量数据存储和高并发访问
2. 多模数据处理:支持文档、块存储、对象存储
3. ACID事务:支持分布式事务处理
4. SQL兼容:支持标准SQL和MySQL协议
5. 弹性扩展:支持在线扩容和缩容
6. 高可用性:支持多副本和自动故障切换
7. 数据安全:支持数据加密和访问控制
8. 生态丰富:支持Spark、Flink等大数据生态
2. 硬件环境要求与检查
在安装SequoiaDB之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com
2.1 最低硬件要求
CPU:8核心
内存:16GB
磁盘:200GB
推荐配置(生产环境):
CPU:32核心以上
内存:64GB以上
磁盘:1TB以上SSD
大规模部署配置:
CPU:64核心以上
内存:256GB以上
磁盘:10TB以上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: 63Gi 2.0Gi 60Gi 512Mi 2.0Gi 61Gi
Swap: 7Gi 0B 7Gi
# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 100G 5.0G 95G 5% /
/dev/sda2 1014M 150M 865M 15% /boot
/dev/mapper/vg_data-lv_data 1.0T 100G 900G 10% /data
2.3 内核参数配置
# vi /etc/sysctl.d/99-sequoiadb.conf
# 添加以下参数
# 文件描述符限制
fs.file-max = 655360
# 虚拟内存参数
vm.swappiness = 1
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
# 网络参数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-sequoiadb.conf
# 配置用户限制
# vi /etc/security/limits.conf
# 添加以下配置
sdbadmin soft nofile 65535
sdbadmin hard nofile 65535
sdbadmin soft nproc 65535
sdbadmin hard nproc 65535
sdbadmin soft stack 10240
sdbadmin hard stack 10240
3. SequoiaDB安装步骤
本节详细介绍SequoiaDB V5.0的安装过程。学习交流加群风哥QQ113257174
3.1 创建用户和目录
# groupadd -g 1001 sdbadmin
# useradd -u 1001 -g sdbadmin -d /home/sdbadmin -s /bin/bash sdbadmin
# passwd sdbadmin
# 创建安装目录
# mkdir -p /opt/sequoiadb
# mkdir -p /data/sequoiadb/{data,conf,log,backup}
# mkdir -p /backup/sequoiadb
# 设置目录权限
# chown -R sdbadmin:sdbadmin /opt/sequoiadb
# chown -R sdbadmin:sdbadmin /data/sequoiadb
# chown -R sdbadmin:sdbadmin /backup/sequoiadb
# 设置目录权限
# chmod 755 /opt/sequoiadb
# chmod 750 /data/sequoiadb
# chmod 750 /backup/sequoiadb
3.2 安装SequoiaDB软件
# su – sdbadmin
# 解压安装包
$ cd /usr/local/src
$ tar -xzf sequoiadb-5.0.8-linux_x86_64.tar.gz
# 执行安装脚本
$ cd sequoiadb-5.0.8
$ ./install.sh
# 输出示例:
欢迎使用SequoiaDB安装程序
========================
安装目录 [/opt/sequoiadb]:
数据目录 [/data/sequoiadb]:
正在安装SequoiaDB…
安装完成!
# 验证安装
$ ls -la /opt/sequoiadb/
总用量 0
drwxr-xr-x. 2 sdbadmin sdbadmin 6 4月 4 10:00 bin
drwxr-xr-x. 2 sdbadmin sdbadmin 6 4月 4 10:00 conf
drwxr-xr-x. 2 sdbadmin sdbadmin 6 4月 4 10:00 log
# 配置环境变量
$ vi ~/.bash_profile
# 添加以下内容
export SDB_INSTALL_DIR=/opt/sequoiadb
export PATH=$SDB_INSTALL_DIR/bin:$PATH
export LD_LIBRARY_PATH=$SDB_INSTALL_DIR/lib:$LD_LIBRARY_PATH
# 使环境变量生效
$ source ~/.bash_profile
3.3 部署集群
$ sdbstart -c /opt/sequoiadb/conf/sdb.conf
# 输出示例:
Starting SequoiaDB…
Start catalog node succeeded
# 启动协调节点
$ sdbstart -t coord -p 11810
# 输出示例:
Start coord node succeeded
# 启动数据节点
$ sdbstart -t data -p 11830
# 输出示例:
Start data node succeeded
# 查看节点状态
$ sdbtop
HostName SvcName Role PID GroupName
———- ——- ——– —– ———–
fgedudb01 11810 coord 12345 SYSCoord
fgedudb01 11820 catalog 12346 SYSCatalogGroup
fgedudb01 11830 data 12347 group1
# 创建数据组
$ sdb “db.createRG(‘group1’)”
$ sdb “var rg = db.getRG(‘group1’); rg.createNode(‘fgedudb01’, 11830, ‘/data/sequoiadb/data’, {logfilenum: 5, logfilesz: 64})”
$ sdb “rg.start()”
3.4 创建集合空间和集合
$ sdb
> var db = new Sdb(“localhost”, 11810)
# 创建集合空间
> db.createCS(“fgeducs”)
# 输出示例:
{
“_id”: {
“$oid”: “660e1234567890abcdef1234”
},
“Name”: “fgeducs”
}
# 创建集合
> db.fgeducs.createCL(“fgedu_employees”, {ShardingKey: {emp_id: 1}, ShardingType: “hash”, ReplSize: 1})
# 输出示例:
{
“_id”: {
“$oid”: “660e1234567890abcdef1235”
},
“Name”: “fgedu_employees”
}
# 查看集合空间
> db.listCS()
# 输出示例:
{
“_id”: {
“$oid”: “660e1234567890abcdef1234”
},
“Name”: “fgeducs”
}
# 查看集合
> db.fgeducs.listCL()
# 输出示例:
{
“_id”: {
“$oid”: “660e1234567890abcdef1235”
},
“Name”: “fgedu_employees”
}
4. SequoiaDB参数配置
SequoiaDB参数配置是数据库性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com
4.1 节点配置
$ vi /opt/sequoiadb/conf/sdb.conf
# 编目节点配置
catalogaddr=localhost:11820
diaglevel=3
logfilesz=64
logfilenum=5
# 编辑协调节点配置
$ vi /opt/sequoiadb/conf/coord.conf
catalogaddr=localhost:11820
diaglevel=3
logfilesz=64
logfilenum=5
# 编辑数据节点配置
$ vi /opt/sequoiadb/conf/data.conf
catalogaddr=localhost:11820
diaglevel=3
logfilesz=64
logfilenum=5
dbpath=/data/sequoiadb/data
4.2 内存配置
$ vi /opt/sequoiadb/conf/sdb.conf
# 缓存大小配置(根据物理内存调整)
cachesize=16384
# 排序缓存大小
sortbufsize=256
# 哈希缓存大小
hjbufsize=128
# 重启节点使配置生效
$ sdbstop
$ sdbstart -c /opt/sequoiadb/conf/sdb.conf
4.3 日志配置
$ vi /opt/sequoiadb/conf/sdb.conf
# 日志级别
diaglevel=3
# 日志文件大小(MB)
logfilesz=64
# 日志文件数量
logfilenum=5
# 诊断日志路径
diagpath=/opt/sequoiadb/log
# 重启节点
$ sdbstop
$ sdbstart -c /opt/sequoiadb/conf/sdb.conf
5. 数据库管理
SequoiaDB支持文档型数据模型,本节介绍常用的数据库管理操作。from:www.itpux.com
5.1 文档操作
$ sdb
> var db = new Sdb(“localhost”, 11810)
# 插入文档
> db.fgeducs.fgedu_employees.insert({emp_id: 1, emp_name: “张三”, dept_id: 10, salary: 8000.00, hire_date: “2026-04-04”})
# 输出示例:
{
“_id”: {
“$oid”: “660e1234567890abcdef1236”
},
“emp_id”: 1,
“emp_name”: “张三”,
“dept_id”: 10,
“salary”: 8000.00,
“hire_date”: “2026-04-04”
}
# 批量插入
> db.fgeducs.fgedu_employees.insert([
{emp_id: 2, emp_name: “李四”, dept_id: 20, salary: 9000.00, hire_date: “2026-04-04”},
{emp_id: 3, emp_name: “王五”, dept_id: 30, salary: 10000.00, hire_date: “2026-04-04”}
])
# 查询文档
> db.fgeducs.fgedu_employees.find()
# 输出示例:
{
“_id”: {
“$oid”: “660e1234567890abcdef1236”
},
“emp_id”: 1,
“emp_name”: “张三”,
“dept_id”: 10,
“salary”: 8000.00,
“hire_date”: “2026-04-04”
}
# 条件查询
> db.fgeducs.fgedu_employees.find({dept_id: 10})
# 更新文档
> db.fgeducs.fgedu_employees.update({$set: {salary: 8500.00}}, {emp_id: 1})
# 删除文档
> db.fgeducs.fgedu_employees.remove({emp_id: 2})
5.2 SQL操作
$ sdbsqlplus -h 192.168.1.51 -p 11810
# 创建表
SQL> CREATE TABLE fgedu_departments (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(100),
location VARCHAR(100)
);
# 输出示例:
CREATE TABLE
# 插入数据
SQL> INSERT INTO fgedu_departments VALUES (10, ‘技术部’, ‘北京’);
SQL> INSERT INTO fgedu_departments VALUES (20, ‘销售部’, ‘上海’);
SQL> COMMIT;
# 查询数据
SQL> SELECT * FROM fgedu_departments;
# 输出示例:
DEPT_ID | DEPT_NAME | LOCATION
——–|———–|———-
10 | 技术部 | 北京
20 | 销售部 | 上海
# 关联查询
SQL> SELECT e.emp_name, d.dept_name, e.salary
FROM fgedu_employees e
JOIN fgedu_departments d ON e.dept_id = d.dept_id;
# 聚合查询
SQL> SELECT dept_id, COUNT(*) as emp_count, AVG(salary) as avg_salary
FROM fgedu_employees
GROUP BY dept_id;
5.3 索引管理
> db.fgeducs.fgedu_employees.createIndex(“idx_emp_name”, {emp_name: 1})
# 输出示例:
{
“_id”: {
“$oid”: “660e1234567890abcdef1237”
},
“Name”: “idx_emp_name”
}
# 查看索引
> db.fgeducs.fgedu_employees.listIndexes()
# 删除索引
> db.fgeducs.fgedu_employees.dropIndex(“idx_emp_name”)
# 使用SQL创建索引
SQL> CREATE INDEX idx_emp_dept ON fgedu_employees(dept_id);
# 输出示例:
CREATE INDEX
6. 网络连接配置
网络连接配置是客户端访问SequoiaDB的关键,需要正确配置监听和防火墙规则。更多学习教程www.fgedu.net.cn
6.1 配置监听
$ netstat -tlnp | grep sdb
tcp6 0 0 :::11810 :::* LISTEN 12345/sequoiadb
tcp6 0 0 :::11820 :::* LISTEN 12346/sequoiadb
tcp6 0 0 :::11830 :::* LISTEN 12347/sequoiadb
# 配置防火墙
# firewall-cmd –permanent –add-port=11810/tcp
success
# firewall-cmd –permanent –add-port=11820/tcp
success
# firewall-cmd –permanent –add-port=11830/tcp
success
# firewall-cmd –reload
success
6.2 使用Java连接
//
//
//
//
//
// Java连接示例
import com.sequoiadb.base.Sequoiadb;
import com.sequoiadb.base.DBCollection;
import com.sequoiadb.base.DBCursor;
import org.bson.BSONObject;
import org.bson.BasicBSONObject;
public class SequoiaDBExample {
public static void main(String[] args) {
// 连接数据库
Sequoiadb sdb = new Sequoiadb(“192.168.1.51”, 11810, “”, “”);
// 获取集合
DBCollection cl = sdb.getCollectionSpace(“fgeducs”).getCollection(“fgedu_employees”);
// 插入文档
BSONObject doc = new BasicBSONObject();
doc.put(“emp_id”, 4);
doc.put(“emp_name”, “赵六”);
doc.put(“dept_id”, 40);
doc.put(“salary”, 11000.00);
doc.put(“hire_date”, “2026-04-04”);
cl.insert(doc);
// 查询文档
DBCursor cursor = cl.query();
while (cursor.hasNext()) {
BSONObject obj = cursor.getNext();
System.out.println(“ID: ” + obj.get(“emp_id”) + “, Name: ” + obj.get(“emp_name”));
}
// 关闭连接
sdb.close();
}
}
6.3 使用Python连接
$ pip install pysequoiadb
# Python连接示例
from pysequoiadb import client
from pysequoiadb.error import SDBBaseError
# 连接数据库
try:
db = client(“192.168.1.51”, 11810)
# 获取集合
cl = db.get_collection_space(“fgeducs”).get_collection(“fgedu_employees”)
# 插入文档
doc = {
“emp_id”: 5,
“emp_name”: “钱七”,
“dept_id”: 50,
“salary”: 12000.00,
“hire_date”: “2026-04-04″
}
cl.insert(doc)
# 查询文档
cursor = cl.query()
for doc in cursor:
print(f”ID: {doc[’emp_id’]}, Name: {doc[’emp_name’]}”)
# 关闭连接
db.close()
except SDBBaseError as e:
print(f”Error: {e}”)
7. 备份恢复配置
备份恢复是数据库管理的重要环节,SequoiaDB提供了多种备份方式。学习交流加群风哥微信: itpux-com
7.1 使用sdbdump备份
$ mkdir -p /backup/sequoiadb
# 备份集合空间
$ sdbdump -h localhost -p 11810 -c fgeducs -d /backup/sequoiadb/fgeducs_$(date +%Y%m%d)
# 输出示例:
Dumping collection space: fgeducs
Dumping collection: fgedu_employees
Total documents: 1000
Backup completed successfully
# 备份整个数据库
$ sdbdump -h localhost -p 11810 -d /backup/sequoiadb/full_$(date +%Y%m%d)
# 压缩备份
$ tar -czf /backup/sequoiadb/fgeducs_$(date +%Y%m%d).tar.gz -C /backup/sequoiadb fgeducs_$(date +%Y%m%d)
7.2 使用sdbrestore恢复
$ tar -xzf /backup/sequoiadb/fgeducs_20260404.tar.gz -C /backup/sequoiadb
# 恢复集合空间
$ sdbrestore -h localhost -p 11810 -p /backup/sequoiadb/fgeducs_20260404
# 输出示例:
Restoring collection space: fgeducs
Restoring collection: fgedu_employees
Total documents restored: 1000
Restore completed successfully
# 恢复到新集合空间
$ sdbrestore -h localhost -p 11810 -p /backup/sequoiadb/fgeducs_20260404 -c fgeducs_new
7.3 自动备份脚本
$ vi /usr/local/bin/sequoiadb_backup.sh
#!/bin/bash
BACKUP_DIR=/backup/sequoiadb
DATE=$(date +%Y%m%d)
LOG_FILE=/opt/sequoiadb/log/backup.log
echo “=== Backup started at $(date) ===” >> $LOG_FILE
# 执行备份
sdbdump -h localhost -p 11810 -c fgeducs -d ${BACKUP_DIR}/fgeducs_${DATE} >> $LOG_FILE 2>&1
# 压缩备份
tar -czf ${BACKUP_DIR}/fgeducs_${DATE}.tar.gz -C ${BACKUP_DIR} fgeducs_${DATE} >> $LOG_FILE 2>&1
rm -rf ${BACKUP_DIR}/fgeducs_${DATE}
# 清理30天前的备份
find ${BACKUP_DIR} -name “*.tar.gz” -mtime +30 -delete >> $LOG_FILE 2>&1
echo “=== Backup finished at $(date) ===” >> $LOG_FILE
echo “” >> $LOG_FILE
# 设置脚本权限
$ chmod +x /usr/local/bin/sequoiadb_backup.sh
# 配置定时任务
$ crontab -e
# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /usr/local/bin/sequoiadb_backup.sh
8. 升级与迁移
SequoiaDB升级和迁移是运维工作中的重要环节,需要仔细规划和执行。更多学习教程公众号风哥教程itpux_com
8.1 版本升级
$ sequoiadb –version
SequoiaDB V5.0.8 Release (Build 20240315)
# 执行完整备份
# 参见7.1节备份步骤
# 停止集群
$ sdbstop
# 备份数据目录
$ tar -czf /backup/sequoiadb/data_backup_$(date +%Y%m%d).tar.gz /data/sequoiadb
# 升级软件
$ cd /usr/local/src
$ tar -xzf sequoiadb-5.1.0-linux_x86_64.tar.gz
$ cd sequoiadb-5.1.0
$ ./upgrade.sh
# 输出示例:
正在升级SequoiaDB…
检查当前版本… 5.0.8
执行升级脚本…
升级完成,当前版本: 5.1.0
# 启动集群
$ sdbstart -c /opt/sequoiadb/conf/sdb.conf
# 验证版本
$ sequoiadb –version
SequoiaDB V5.1.0 Release (Build 20240601)
8.2 迁移到新服务器
$ sdbdump -h localhost -p 11810 -c fgeducs -d /backup/sequoiadb/fgeducs_migrate
$ tar -czf /backup/sequoiadb/fgeducs_migrate.tar.gz -C /backup/sequoiadb fgeducs_migrate
# 传输备份文件
$ scp /backup/sequoiadb/fgeducs_migrate.tar.gz new-server:/backup/sequoiadb/
# 在新服务器安装SequoiaDB
# 参见3.1-3.3节安装步骤
# 创建集合空间
$ sdb
> var db = new Sdb(“localhost”, 11810)
> db.createCS(“fgeducs”)
> db.fgeducs.createCL(“fgedu_employees”, {ShardingKey: {emp_id: 1}, ShardingType: “hash”, ReplSize: 1})
# 恢复数据
$ tar -xzf /backup/sequoiadb/fgeducs_migrate.tar.gz -C /backup/sequoiadb
$ sdbrestore -h localhost -p 11810 -p /backup/sequoiadb/fgeducs_migrate
# 验证迁移
$ sdb
> var db = new Sdb(“localhost”, 11810)
> db.fgeducs.fgedu_employees.count()
# 输出示例:
1000
9. 生产环境实战案例
本节提供一个完整的生产环境配置案例,帮助读者更好地理解SequoiaDB的实际应用。from:www.itpux.com
9.1 集群部署
# 编目节点: 3节点
# 协调节点: 2节点
# 数据节点: 3节点,每个节点3副本
# 节点规划:
# fgedudb01 (192.168.1.51) – 编目节点, 协调节点, 数据节点
# fgedudb02 (192.168.1.52) – 编目节点, 协调节点, 数据节点
# fgedudb03 (192.168.1.53) – 编目节点, 数据节点
# 启动编目节点集群
$ sdbstart -c /opt/sequoiadb/conf/sdb.conf
# 创建数据组
$ sdb
> var db = new Sdb(“localhost”, 11810)
> db.createRG(“group1”)
> var rg1 = db.getRG(“group1”)
> rg1.createNode(“fgedudb01”, 11830, “/data/sequoiadb/data/node1”, {logfilenum: 5, logfilesz: 64})
> rg1.createNode(“fgedudb02”, 11830, “/data/sequoiadb/data/node2”, {logfilenum: 5, logfilesz: 64})
> rg1.createNode(“fgedudb03”, 11830, “/data/sequoiadb/data/node3”, {logfilenum: 5, logfilesz: 64})
> rg1.start()
# 创建协调节点
> db.createCoord(“coord1”, “fgedudb01”, 11810)
> db.createCoord(“coord2”, “fgedudb02”, 11810)
# 查看集群状态
$ sdbtop
9.2 性能监控
$ sdb “db.snapshot(SDB_SNAP_DATABASE)”
# 查看集合统计
$ sdb “db.fgeducs.fgedu_employees.getDetail()”
# 查看节点状态
$ sdb “db.list(SDB_LIST_GROUPS)”
# 使用sdbsqlplus查看
$ sdbsqlplus -h 192.168.1.51 -p 11810 -s “SELECT * FROM $SNAPSHOT_DB”
# 系统监控命令
# 查看进程
$ ps aux | grep sequoiadb
# 查看资源使用
$ top -p $(pgrep sequoiadb)
# 查看磁盘I/O
$ iostat -x 1
9.3 性能优化
> db.fgeducs.fgedu_employees.createIndex(“idx_dept_id”, {dept_id: 1})
# 分析查询性能
> db.fgeducs.fgedu_employees.explain({dept_id: 10})
# 配置分片策略
> db.fgeducs.fgedu_employees.split(“group1”, “group2”, {emp_id: 500})
# 调整缓存大小
$ vi /opt/sequoiadb/conf/sdb.conf
cachesize=32768
# 配置并行查询
> db.fgeducs.fgedu_employees.setAttributes({PreferedInstance: “M”})
# 重启节点使配置生效
$ sdbstop
$ sdbstart -c /opt/sequoiadb/conf/sdb.conf
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
