【用户共建计划】云服务器上 OB 部署实践

@obpilot 老师的《云服务器上 OB 部署实践》,通过云服务器环境分析、云服务器部署建议、云盘性能提升方法、网卡速率设置等几个部分,毫无保留地为大家分享了在云服务器或虚拟机环下境部署 OB 的实践经验。

欢迎大家阅读和讨论!

4 个赞

感谢庆涛老师周末加班为社区用户分享了多篇优质的实践文章!

4 个赞

感谢分享

2 个赞

感谢分享

3 个赞

:100: :100: :100:

3 个赞

首先非常感谢大佬的贡献 @obpilot

第一时间打开了这篇文章,没时间仔细读。今天仔细读了。谈谈个人想法,加深下印象,当记个笔记啦。若有不对的地方,还请指教。

1、测试场景建议包括 4KB、2MB 的顺序写 IO 和 16K 的随机读 IO 。

之前测试直接使用了现成脚本,基本都用的-rw=randwrite,看到这段,翻了下文档,结合AI助手的回答,总结了下。

  1. SSTable 的 IO(2 MB)
    》 OceanBase 数据库将磁盘切分为大小为 2MB 的定长数据块,称之为宏块(Macro Block),宏块是数据文件写 IO 的基本单位。

读写类型:顺序写为主。
原因:
SSTable 是 OceanBase 的存储引擎,数据以追加写(Append-Only)的方式写入磁盘,因此写操作是顺序的。

  1. slog、clog、ilog 的 IO(4 KB)
    读写类型:顺序写为主,顺序读为辅。
    原因:
    日志文件(如 slog、clog、ilog)是追加写入的,因此写操作是顺序的。
    日志的读取通常也是顺序的,例如在恢复或回放日志时。
  2. 数据文件的读取单位是微块(默认16KB)

读写类型:随机读为主。
》 在宏块内部数据被组织为多个大小为 16KB 左右的变长数据块,称之为微块(Micro Block),微块中包含若干数据行(Row),微块是数据文件读 IO 的最小单位。

2、关于做LVM条带化问题

因为我们主要也是在云服务器上部署OB,之前也做了fio的测试,不过是用的随机读和随机写。
读写带宽方面确实是条带化会好很多。但是写IOPS方面一块大盘还更好些。
考虑到做条带化的LVM扩容有一定局限性,操作比较麻烦(比如条带化是3,每次新扩容的盘必须是3的倍数)。我们最后还是选择用单块盘的方式。

3、 网卡速率的问题
我这边是企业版的,搜了下没搜到nic.rate.config这个文件。

我使用OAT安装的时候,校验不通过会提供一个脚本解决。

echo 10000 > /home/admin/eth0-speed.mock && mount --bind /home/admin/eth0-speed.mock /sys/class/net/eth0/speed && echo -e '\n/home/admin/eth0-speed.mock  /sys/class/net/eth0/speed  none  bind,nofail' >> /etc/fstab
6 个赞

恩,谢谢补充。

  1. 测试模型这个我也拿不准。对 OB 数据盘和 日志盘 IO 的实际观察数据跟理论数据总会有差异。
    拿到云盘后多个大小的 IO 都测试一下看看。

  2. LVM 条带化那个云盘能挂的盘数量有上限。比如说 12块,我意思是顶格申请 12块盘,盘的大小可以小一些,比如说 400G . 如果要扩容,不是加盘的数量(加不了了),而是扩已有盘的容量,比如说 400G 扩到 800G ,盘的数量保持不变。因为使用了 LVM ,pv 扩容,vg 扩容,lv扩容,文件系统扩容,都是在线操作的。

这个经验是目前基于 2 个客户的经验(还不够多,仅供参考),一个是阿里云,一个是字节云。云盘类型有很多,我估计有些云盘并不适合跑数据库,不过客户因为别的原因拿着不适合跑数据库的云盘来跑数据库,所以就变相应对一下。

  1. 网卡速率那个 mock 也是一个方法。我见过 OB 交付做的mock 文件,放在 /home/admin/ 下,还挂载了文件系统。交付的人搞完了也没个文档解释,后面客户和接手的人都不知道这个文件是干什么的。很想删。后来主机重启了发现没用就真的删了。 我不是很喜欢这个mock 的文件。nic.rate.config 文件需要自己创建(我不知道 OCP 是否会自动创建这个文件),在 /home/admin/oceanbase/etc/ 目录下。observer 进程启动的时候会读这个文件。所以我更倾向于这个文件 :smile:
4 个赞

:+1: :+1: :+1: :+1:

2 个赞

感谢分享