#一、Overview
大家好, 成为ob贡献者第四篇文章。
本文主要对 内核实战教程第二期🥰认识数据库存储结构 学习进行记录
很容易可以了解内容部分
稍微了解背景知识
深入理解计算机系统9.3章节 VM as a Tool for Caching
原文:
虚拟内存作为谁的缓存工具?
虚拟内存被组织成存储在磁盘上的 N 个连续的字节单元数组,
磁盘上数据缓存到内存上。
任何时刻,虚拟页被分为三个不相交的子集:
- Unallocated
还没被 VM 系统创建的页,没有数据,不占空间
- Cached
已缓存在物理内存中的被分配了的页
- Uncached
被分配但没缓存在物理内存中的页
二、 Solutions
1 macOS 下使用 Docker 搭建 centos 开发环境
https://github.com/oceanbase/obdeploy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
https://github.com/watchpoints/mydocker
docker pull oceanbase/centos7:latest
docker run -itd -p 2881:2881 -p 22:22 --privileged=true --name oceanbase-ce oceanbase/centos7 ///usr/sbin/init
# –privileged 和 /usr/sbin/init 很重要,必须要带上,否则后面启动ssh服务时会报错
# Failed to get D-Bus connection: Operation not permitted
docker ps
默认情况下,docker ps 只显示正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3346da816048 oceanbase/centos7 "/bin/bash" 2 years ago Up 13 minutes 0.0.0.0:22->22/tcp, 0.0.0.0:2881->2881/tcp oceanbase-ce
登录:
docker start 3346da816048
docker attach 3346da816048
docker exec -it oceanbase-ce /bin/bash
修改ssh配置,允许root登录
vi /etc/ssh/sshd_config
PermitRootLogin yes
#允许root用户登录,本人由于是在本地虚拟机测试玩的,为了方便,全开
PasswordAuthentication yes
# 允许密码登录
#RSAAuthentication 弃用RSAAuthentication
#为什么在 CentOS7.4 的配置文件中没有
#RSAAuthentication 这一行?
# UsePAM yes remove
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥
# 客户端
cat ~/.ssh/id_rsa.pub
# 服务端
vim ~/.ssh/authorized_keys
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# ssh-copy-id
可以把本地主机的公钥复制到远程主机的authorized_keys文件上,
清除root账号的密码
passwd -d root
修改root密码
passwd root
将authorized_keys目录的权限为600
将.ssh目录的权限为700
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
systemctl restart sshd
Failed to get D-Bus connection: Operation not permitte
改为
service sshd restart
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
登录:
docker start 3346da816048
docker attach 3346da816048
docker exec -it oceanbase-ce /bin/bash
ssh root@192.168.3.3
方式1:ssh root@127.0.0.1 -p 22 (端口映射主要原理是利用host机的ip地址和端口来访问容器ip和端口)
方式2:ssh root@127.0.0.1 -i ~/.ssh/id_rsa_server
方式3:
SSH 客户端配置文件的位置
~/.ssh/config
配置文件的结构
Host ob
HostName 127.0.0.1
Port 22
User root
IdentityFile ~/.ssh/id_rsa #私钥
# Host: 别名,ssh登录的时候就可以用
# HostName: 远程服务器IP
# Port: 远程服务器ssh端口,22端口可以忽略,如果不是22端口必须指定
# User: ssh 远程登录账号
# IdentityFile 对应的本机私钥路径
ssh ob
Last login: Sat Aug 17 08:35:24 2024 from gateway
|
02 源码编译
1
2
3
4
5
6
7
8
9
10
11
|
https://oceanbase.github.io/oceanbase/build-and-run/
bash build.sh debug --init --make
# 进入生成的 debug 构建目录
cd build_debug
# 进行构建
make -j{N} observer (需要很长时间)
# 查看构建产物
stat src/observer/observer
|
3 OceanBase 开发环境搭建
vscode +远程本地docker环境
1
2
3
4
5
6
7
8
9
10
|
kex_exchange_identification: Connection closed by remote host
Connection closed by 127.0.0.1 port 22
local-server-2> ssh child died, shutting down
vi /etc/ssh/sshd_config
#RSAAuthentication 弃用RSAAuthentication
#为什么在 CentOS7.4 的配置文件中没有
#RSAAuthentication 这一行?
# UsePAM yes remove
systemctl restart sshd
|
4 代码风格(多看 几遍)
1
2
3
4
|
https://oceanbase.github.io/oceanbase/coding_standard/
https://www.oceanbase.com/docs/-code-style-cn-10000000000018872
https://github.com/oceanbase/oceanbase/blob/develop/docs/docs/en/container.md
|
目录结构
OceanBase 系统的子目录说明如下:
- src:存放源代码,包含头文件和实现文件
- unittest:存放单元测试代码和开发人员编写的小规模集成测试代码
- tests:存放测试团队的测试框架和用例
- tools:存放外部工具
- doc:存放文档
- rpm:存放 rpm spec 文件
- script:存放 OceanBase 的运维脚
5 调试部署
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
https://gitee.com/oceanbase/obdeploy/blob/master/example/mini-local-example.yaml
obd cluster deploy obtest -c mini-local-example.yaml
obd cluster edit-config obtest
obd cluster redeploy obtest
obd cluster list
obd cluster display watchpoints
obd cluster start obtest
obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A
/root/observer/bin/observer -r 127.0.0.1:2882:2881 -p 2881 -P 2882 -z zone1 -c 1 -d /root/log/data -i lo -o __min_full_resource_pool_memory=2147483648,memory_limit=5G,system_memory=1G,datafile_size=8G,log_disk_size=5G,cpu_count=4,enable_syslog_wf=False,enable_syslog_recycle=True,max_syslog_file_count=4
|
小贴士
多看、多问、多总结 肯定是可以攻克的
一、这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题
二、这个技术的优势和劣势分别是什么
三、这个技术适用的场景。任何技术都有其适用的场景
四、技术的组成部分和关键点。
五、技术的底层原理和关键实现
六、已有的实现和它之间的对比