作者:令川,一个在OceanBase专注打造稳定可靠好用存储引擎的研发同学。
OceanBase是一个单进程软件,进程名叫:observer。
本文简单介绍进程observer启动后的逻辑,里面包含进程恢复的逻辑。本文对排查进程observer启动失败原因有一定参考作用。
目录结构
在标准配置下,observer进程的执行目录结构如下所示,介绍其中几个比较关键的目录和其中的文件内容。
1.bin目录下存放是observer以及一些其他工具的二进制文件
2.etc目录下最主要的是的配置项文件,尤其是进程的一些启动参数
3.log目录下是进程运行日志,通常用于排查问题或反映系统运行的记录。
4.store目录下存放的是存储引擎关系最紧密的日志和数据文件了。它们的目录通常会是一个软连接,用于单独挂载磁盘。
日志目录有3个,分别是clog/ilog/slog。clog是数据的commit log或redo log。ilog是clog的索引,暂时可以不用了解。slog是存储引擎的redo log,是元数据的日志。三种日志的文件都是一组以单调递增序号为名字的文件。
sstable目录顾名思义,存放的就是我们的数据啦。OceanBase和其他多文件数据库不同,使用统一的2M块来组织和管理数据和元数据。因此在sstable目录下,会看到一个名为block_file的大文件。
$ob_dir
├── bin
│ ├── ob_admin
│ ├── obproxy
│ └── observer
├── etc
│ ├── io_resource.conf
│ └── observer.config.bin
├── lib
│ ├── libmysqlclient.so.18
│ └── libstdc++.so.6
├── log
│ ├── election.log
│ ├── observer.log
│ └── rootservice.log
└── store
├── clog -> /data/1/clog
│ └── 1
├── ilog -> /data/1/clog
│ └── 1
├── slog -> /data/