六棱镜用户实践(下):OceanBase 3.1.1 运维

2024年 5月 7日 32.2k 0

作者简介:白云龙,六棱镜系统运维部负责人。

文档概要

1、准备环境     2、基础配置    3、OceanBase自动化部署     4、资源池-租户-用户-创建

5、OB优化      6、常用命令    7、维护相关-服务篇          8、维护相关-obproxy故障重建

9、维护相关-副本重建      10、维护相关-节点磁盘更换      11、维护相关-物理资源扩容

12、维护相关-物理备份     13、维护相关-OB监控dooba基本使用      14、datax部署及使用

15、ob-loader-dumper 逻辑备份工具的使用

——————————————

7、维护相关-服务篇:

$ obd cluster stop sixlens_obcluster --停止集群服务

六棱镜用户实践(下):OceanBase 3.1.1 运维-1

$ obd cluster stop sixlens_obcluster --启动集群服务

六棱镜用户实践(下):OceanBase 3.1.1 运维-2

Note:上述方法为停止所有节点服务,生产环境需要持续提供服务,不能整体启停服务,需要单独维护某

一节点

完整单节点的维护流程应是先合并成功。再 stop server。再kill节点,合并是减少下次启动的恢复时间。

obclient -h172.20.2.119 -uroot@sys#ob_cluster -p123456 -P2883 -A -c oceanbase   --sys租户

MySQL [oceanbase]>alter system major freeze; --合并数据

MySQL [oceanbase]> SELECT * FROM __all_zone WHERE name='merge_status'; --查询合并转态

六棱镜用户实践(下):OceanBase 3.1.1 运维-3

Note:info字段都为“IDLE”代表合并完成,如状态为“MERGING”表示合并中

 

MySQL [oceanbase]> alter system stop server '172.20.2.118:2882';

六棱镜用户实践(下):OceanBase 3.1.1 运维-4

Note:stop server(只是触发切主),成功后,在对应节点(118)机器上kill对应的observer进程、

Note1:stop_time为当前时间代表执行切换成功,默认为 1970-01-01

 

 

$ kill `pidof observer`   --停止维护节点OBS服务,尽量不要使用-9 然服务正常停止

查看服务是否停止(服务停止后即可做相关维护操作,包括关机):

六棱镜用户实践(下):OceanBase 3.1.1 运维-5

启动服务:

1、手动启动服务:

export LD_LIBRARY_PATH=~/.obd/repository/oceanbase-ce/3.1.1/f19f8bfb67723712175fb0dfd60579196b3168f1/lib/

$ cd /home/admin/oceanbase/ob && bin/observer --要在家目录执行,其他目录会报错

查看服务是否启动:

六棱镜用户实践(下):OceanBase 3.1.1 运维-6

MySQL [oceanbase]> alter system start server '172.20.2.118:2882';  

select svr_ip,status,usec_to_time(start_service_time),usec_to_time(stop_time) from __all_server;

六棱镜用户实践(下):OceanBase 3.1.1 运维-7

Note:注意查看start前后 “stop_time”的状态

 

2、  自动启动服务:

$ obd cluster start sixlens_obcluster --已启动的服务不会有操作,未启动的节点会被拉起

六棱镜用户实践(下):OceanBase 3.1.1 运维-8

节点状态为 inactive,稍等一段时间查看即为active,启动需要写时间

$ obd cluster display sixlens_obcluster --再次查看节点状态

六棱镜用户实践(下):OceanBase 3.1.1 运维-9

 

8、维护相关-obproxy故障重建

当前为单节点obproxy,如意外down机,如何快速重建新obproxy,恢复集群连接入口,测试在任意一台observer部署obproxy(建议配置多节点obproxy,防止单点故障)

Note:obproxy可以单独使用一台服务器,也可以和observer公用

操作步骤:

1、在新的机器上安装obd的软件

2、配置新的obd机器到其他接管的主机之间的ssh互信

3、拷贝老的obd机器上的cluster下对应的文件夹到新的obd cluster目录下(需要提前备份出来一份)

4、OBD版本需要1.1.2

新节点安装OBD(模拟在116部署)

$ sudo yum install -y yum-utils

$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo

$ sudo yum install -y ob-deploy

$ obd –version  --查看当前OBD版本

OceanBase Deploy: 1.1.1

$ sudo obd update --升级OBD版本

 

 

ymal配置文件(总配置文件obproxy段落):

obproxy:

 servers:

 - 172.20.2.116

 global:

   listen_port: 2883

   prometheus_listen_port: 2884

   home_path: /home/admin/obproxy

   rs_list: 172.20.2.116:2881;172.20.2.117:2881;172.20.2.118:2881

   enable_cluster_checkout: false

   cluster_name: ob_cluster

   enable_compression_protocol: false

   automatic_match_work_thread: True

   work_thread_num: 16

   net_accept_threads: 2

   proxy_mem_limited: 16G

obproxy_sys_password: Pwd123#

obd cluster autodeploy sixlens_obproxy -c config.yaml --部署yaml配置文件

六棱镜用户实践(下):OceanBase 3.1.1 运维-10

$ obd cluster display sixlens_obproxy  --查看obproxy运行状态

六棱镜用户实践(下):OceanBase 3.1.1 运维-11

 

测试登录:

$ obclient -h172.20.2.116 -uroot@proxysys -P2883 –pPwd123#

六棱镜用户实践(下):OceanBase 3.1.1 运维-12

拷贝老的obd机器上的cluster下对应的文件夹到新的obd cluster目录下 --注意目录结构

$ scp -r /home/admin/.obd/cluster/sixlens_obcluster admin@172.20.2.116:/home/admin/.obd/cluster

$ vim /home/admin/.obd/cluster/sixlens_obcluster/config.yaml --更改obproxy的ip,原为119

六棱镜用户实践(下):OceanBase 3.1.1 运维-13

[admin@CAIP116 ~]$ $ obd cluster display sixlens_obcluster

六棱镜用户实践(下):OceanBase 3.1.1 运维-14

租户连接测试:

$ obclient -h172.20.2.116 -uroot@sys#ob_cluster –pPwd123# -P2883 -A -c oceanbase

六棱镜用户实践(下):OceanBase 3.1.1 运维-15

Note: 此为使用yum自动部署obp,也可以手工部署所有服务,具体步骤参考之前写的文档

https://open.oceanbase.com/blog/8600171  --Oceanbase 手动部署文档总结

 

9、维护相关-副本重建

当某个节点出现故障无法恢复则需要重建,集体操作如下

1、  查看问题节点observer的进程是否存在,存在直接kill掉(已节点118为例)

$ kill `pidof observer`

2、  alter system set server_permanent_offline_time='360s' 默认是3600s一个小时,副本下线一小时后才会启动补充副本重建的操作、把时间改短,让集群尽快补充副本

show parameters like '%server_permanent_offline_time%';  --查看是否更改

3、  清理相关目录文件,目录结构保留,只清理目录下的文件。

$ cd /home/admin/oceanbase/ob/log && rm –rf *  --清空ob运行日志相关文件

$ cd /data/ob/sstable && rm –rf *  --删除block_file文件

$ cd /redo/clog && rm –rf * && cd /redo/ilog && rm –rf * cd /redo/slog && rm –rf *

4、cd /home/admin/oceanbase/ob && bin/observer 拉起OBS服务

5、查看恢复状态

SELECT DATE_FORMAT(gmt_create, '%b%d %H:%i:%s') gmt_create_ , module, event, name1, value1, name2, value2, rs_svr_ip,name3,value3,name4,value4 FROM __all_rootservice_event_history WHERE 1 = 1 ORDER BY gmt_create DESC LIMIT 5 \G

补副本期间状态为:module: balancer event: start_add_replica

显示如下代表恢复完成: module: balancer  event: tenant_balance_finished

Note:补充副本时间长短和数据大小有关

6、alter system set server_permanent_offline_time='3600s'   --副本重建完毕改回默认值

 

10、维护相关-节点磁盘更换

如OB节点为SATA磁盘,现在更换为SSD或者其他原因、无需重新部署OB集群,每个节点单独维护重建即可,步骤类似于上面的“副本重建”操作:

1、  alter system major freeze; --任何停机操作都建议合并,会加快副本拉起的恢复速度

2、  $ kill `pidof observer` --停止节点服务

3、  挂载新盘

$ sudo mount /dev/sdd1 /home/admin/oceanbase1

$ sudo mount /dev/sde1 /redo1

$ sudo mount /dev/sdf1 /data1

 

4、  拷贝数据到新挂载的磁盘:

$ sudo cp -rf /home/admin/oceanbase/* /home/admin/oceanbase1

$ sudo cp –rf / redo/* / redo1

$ sudo cp –rf /data/* /data1/

5、  卸载全部磁盘

$ sudo umount /home/admin/oceanbase

$ sudo umount /home/admin/oceanbase1

$ sudo umount /redo

$ sudo umount /redo1

$ sudo umount /data

$ sudo umount /data1

6、  挂载新盘

$ sudo mount /dev/sdd1 /home/admin/oceanbase

$ sudo mount /dev/sde1 /redo

$ sudo mount /dev/sdf1 /data

Note:注意不要挂错,源盘为 sda1 sdb1 sdc1 要挂载的盘为 sdd1 sde1 sdf1

7、  拉起 observer

 

11、维护相关-物理资源扩容

1、  物理cpu核心从10c增加至20c 内存从48G增加至68G、硬盘增加至6T

 $ obd cluster edit-config sixlens_obcluster 

六棱镜用户实践(下):OceanBase 3.1.1 运维-16

2、$ obd cluster reload sixlens_obcluster 重新加载配置

3、CPU在部署集群的时候已经超分,这位为30c、cpu无需配置

六棱镜用户实践(下):OceanBase 3.1.1 运维-17

4、  调整资源规格

现有资源分配:

select unit_config_id,name,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb from __all_unit_config order by unit_config_id;

六棱镜用户实践(下):OceanBase 3.1.1 运维-18

调整租户资源规格

alter resource unit unitcaip max_cpu=10, min_cpu=10, max_memory='7G',min_memory='7G',max_disk_size = '2500G';  --调整unitcaip租户资源10c/7g/2500G

六棱镜用户实践(下):OceanBase 3.1.1 运维-19

Note:cpu可超分,如租户多又不想避免资源浪费,可按需分配、内存为物理资源,严格收配置限制,超分会报错、磁盘受总资源

磁盘扩容:

SELECT * FROM __all_unit_config; 查询扩容前空间

alter system set datafile_size='6000G';  --所有租户共同使用的最大空间

SELECT * FROM __all_unit_config;  查询扩容后空间

ALTER RESOURCE UNIT unitcaip max_disk_size = '3000G';  --扩容对应租户的空间

 

12、维护相关-物理备份

备份建议:

物理备份只能是集群的全部租户数据,还原的时候可以针对指定租户还原,可跨集群恢复。

备份方案:每周一个全备(视情况,如果有大量数据写入全备可以手动做一次) 每天增量备份 日志归档为自动进行,无需人工参与

环境配置:

NFS为单独服务器,磁盘空间为10T

六棱镜用户实践(下):OceanBase 3.1.1 运维-20

# yum install nfs-utils   --NFT没有配置admin账户直接使用的root账户

# cat /etc/exports

/data/bakob 172.20.2.0/24(rw,no_root_squash,sync)

配置NFS参数

# cat /etc/sysconfig/nfs |grep ^[^#]

RPCNFSDARGS="-N 2 -N 3 -U"

RPCNFSDCOUNT=8

NFSD_V4_GRACE=90

NFSD_V4_LEASE=90

RPCMOUNTDOPTS=""

STATDARG=""

SMNOTIFYARGS=""

RPCIDMAPDARGS=""

RPCGSSDARGS=""

GSS_USE_PROXY="yes"

BLKMAPDARGS=""

 

启动NFS:

# systemctl restart nfs-config

# systemctl restart nfs-server

 

设置 Slot Table(所有OBS节点和NFS服务器)

# cat /etc/sysctl.conf |grep ^[^#]

sunrpc.tcp_max_slot_table_entries=128          

 

所有节点安装nfs客户端(116 117 118)

yum install nfs-utils

 

所有OBS节点挂载NFS服务器

mount -tnfs4 -o rw,timeo=30,wsize=1048576,rsize=1048576,namlen=512,sync,lookupcache=positive 172.20.2.137:/data/bakob /obdatabak/

 

测试NFS性能:

fio -filename=/data/nfs/fio_test -direct=1 -rw=randwrite -bs=2048K -size=100G -runtime=300 -group_reporting -name=mytest -ioengine=libaio -numjobs=1 -iodepth=64 -iodepth_batch=8 -iodepth_low=8 -iodepth_batch_complete=8

 

配置:

show parameters like 'backup_dest';

ALTER SYSTEM SET backup_dest='file:////obdatabak';  --设置备份路径 sys租户

1、alter system minor freeze; 转储数据

2、ALTER SYSTEM ARCHIVELOG; 启动日志备份,日志归档是一个一次性的动作,执行一次即可

 SELECT * FROM CDB_OB_BACKUP_ARCHIVELOG_SUMMARY;  确认日志备份任务是否已开始。

3、SELECT * FROM CDB_OB_BACKUP_ARCHIVELOG_SUMMARY;  --确认备份是否开启,看是否是当前时间

4、alter system major freeze; --合并数据

5、SELECT * FROM __all_zone WHERE name='merge_status'; --查看合并进度

 

六棱镜用户实践(下):OceanBase 3.1.1 运维-21

字段info值为IDLE即为合并完成,可以发起备份

六棱镜用户实践(下):OceanBase 3.1.1 运维-22

6、ALTER SYSTEM BACKUP DATABASE;   --发起数据备份

7、SELECT * FROM CDB_OB_BACKUP_PROGRESS;    查看正在备份的任务  D:表示全量备份  I:表

示增量备份

六棱镜用户实践(下):OceanBase 3.1.1 运维-23

STATUS状态为RUNNING。备份完成后再次查询为空。没有信息输出

六棱镜用户实践(下):OceanBase 3.1.1 运维-24

8、SELECT * FROM CDB_OB_BACKUP_SET_DETAILS;   查看备份任务的历史  

六棱镜用户实践(下):OceanBase 3.1.1 运维-25

9、ALTER SYSTEM CANCEL BACKUP;  停止数据备份任务

10、ALTER SYSTEM NOARCHIVELOG;  停止日志备份任务

关于日志归档状态的说明:

select * from cdb_ob_backup_archivelog_summary;  查看当前日志归档状态信息

log_archive_status 日志归档状态的种类,主要有:

• STOP: 没有日志归档备份

• BEGINNING: 正在启动日志归档备份

• DOING: 正在日志归档备份

• STOPPING: 停止日志归档备份

• INTERRUPTED: 日志归档备份断流了

删除过期备份:

查看备份:

select incarnation, tenant_id, bs_key , backup_type, encryption_mode, start_time, completion_time, elapsed_secondes , keep, output_bytes_display, output_rate_bytes_display, status from CDB_OB_BACKUP_SET_DETAILS order by start_time desc limit 10;   --bs_key 要删除的备份id

六棱镜用户实践(下):OceanBase 3.1.1 运维-26

ALTER SYSTEM DELETE BACKUPSET 5; --删除指定备份(删除逻辑为从后往前删除,不能删除近期备份)

手动清楚过期备份:

alter system set backup_recovery_window='7d';  用于设置备份数据可以恢复的时间,默认为0天  

alter system set auto_delete_expired_backup=true;  用于设置是否开启自动删除过期备份的功能

ALTER SYSTEM DELETE OBSOLETE BACKUP; --手工清理过期的备份

Note:OB3.1.1目前增量备份有BUG,执行增量备份为全备。下个版本会修复,3.1.1的备份组合目前只能为全备+日志

 

13、维护相关-OB监控:

随便创建一个只读账号即可,使用root账号也可以,安全起见,不建议是root账户

dooba.py脚本已上传至网盘,需要自取。 

链接:https://pan.baidu.com/s/1VlCGrnMM55qfdCccccFwgw 提取码:kcd8

python dooba.py -h172.20.2.116 -umonitor@sys#ob_cluster -P2883 –pPwd123# 

具体使用方法已有大佬整理详细文档  https://www.modb.pro/db/47556

Note:需要注意的是dooba调用mysql的客户端,如果没有直接yum安装即可

六棱镜用户实践(下):OceanBase 3.1.1 运维-27

 

14、Datax部署及使用

 

datax web安装:

https://github.com/WeiYe-Jing/datax-web/blob/master/userGuid.md  --datax 使用手册

 

https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md  --部署

 

https://gitee.com/WeiYe-Jing/datax-web/tree/master  --datax web使用文档参考

Note:安装部署很简单,照着文档一步步抄写就可以

 

常用json模板(所有均验证并使用):

mysql-to-csv.json      --mysql使用datax导出csv文件

mysqlcsv-to-mysql.json     --mysql-csv文件导入mysql

mysqlcsv-to-ob.json     --mysql-csv文件导入OceanBase

mysql-to-ob.json     --mysql到OB直传表及数据(不落地)

mysql-to-rds.json    --本地mysql通过VPN连接到阿里云RDS数据直传(不落地)

ob-to-csv   --OceanBase通过datax工具导出csv文件

obcsv-to-mysql.json    ----OceanBase-csv文件导入mysql

obcsv-to-ob.json      ----OceanBase-csv文件导入OB

ob-to-mysq.json       --OB到mysql数据直传(不落地)

oracle-to-mongodb.json   --oracle直传mongodb(不落地)

pgsql-mongodb.json     --pgsql直传mongodn (不落地)

 

上述模板json文件已上传网盘,需要自取

链接:https://pan.baidu.com/s/1oj1pNbIcblc3-DUgpOsyEg

提取码:s4c2

--来自百度网盘超级会员V5的分享

 

 

六棱镜用户实践(下):OceanBase 3.1.1 运维-28

datax插件需要根据数据源的情况和系统资源进行相关调整,可参考文档查看相关参数使用规则

https://github.com/alibaba/DataX

六棱镜用户实践(下):OceanBase 3.1.1 运维-29

14、ob-loader-dumper逻辑备份工具使用功能

ob-loader-dumper逻辑备份工具,只支持 ob 到 ob。或者 csv 到 ob,但是对csv 有格式要求、经使用测试速度非常快,备份表平均速度在100MB/s 左右,还原70MB/s左右。目前主要用于OB的表备份。OB物理备份+逻辑备份,数据安全多一层保障

 

ob-loader-dumper工具不需要安装,解压可直接使用,ob-loader-dumper即将提供开放下载,敬请期待

 

租户级别操作

-- 导出租户表结构

bin/obdumper -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantcaip -p 123456 --sys-user=root --sys-password=123456 -D wo --ddl --all -f /byl

 

-- 导入租户表结构

bin/obloader -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantsixlens -p 123456 --sys-user=root --sys-password=123456 -D wo --ddl --all -f /byl

 

-- 导出租户数据

bin/obdumper -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantcaip -p 123456 --sys-user=root --sys-password=123456 -D wo --csv --all -f /byl

 

-- 导入租户表数据

bin/obloader -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantsixlens -p 123456 --sys-user=root --sys-password=123456 -D wo --csv --all -f /byl

 

单表操作:

-- 导出租户表结构

bin/obdumper -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantcaip -p 123456 --sys-user=root --sys-password=123456 -D wo --ddl --table ifi -f /byl

 

-- 导入租户表结构

bin/obloader -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantsixlens -p 123456 --sys-user=root --sys-password=123456 -D wo --ddl --table ifi -f /byl

 

 

-- 导出租户数据

bin/obdumper -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantcaip -p 123456 --sys-user=root --sys-password=123456 -D wo --csv --table ifi -f /byl

 

-- 导入租户表数据

bin/obloader -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantsixlens -p 123456 --sys-user=root --sys-password=123456 -D wo --csv --table ifi -f /byl

 

 

结构数据同时导出:

bin/obdumper -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantcaip -p 123456 --sys-user=root --sys-password=123456 -D wo --ddl --csv --all -f /byl  

 

bin/obdumper -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantcaip -p 123456 --sys-user=root --sys-password=123456 --thread 64 --batch 50 -D wo --ddl --csv --all -f /byl 

 

结构数据同时导入:

bin/obloader -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantsixlens -p 123456 --sys-user=root --sys-password=123456 --thread 64 --batch 100 -D wo --ddl --csv --all -f /byl 

bin/obloader -h 192.168.1.1 -P 2883 -u rootcaip -c ob_cluster -t tenantsixlens -p '123456' --sys-user=root --sys-password '123456' --thread 64 --rw 0.05 -D wo --ddl --csv --all -f /byl 

 

Note:数据量大,导入时间过长,中途会报错如 “”error:Request to read too old versioned data “” 这个报错是语句执行期间,中间发生过转储,把 session 级别变量调大可以规避:set global undo_retention=36000,表示10小时(具体可以根据实际情况来设置)、操完完毕记得恢复默认时间。

 

 

 

参考文献:

https://open.oceanbase.com/blog/8600171  --Oceanbase 手动部署文档

https://open.oceanbase.com/docs/tutorials/quickstart/V1.0.0/2-11-advanced-how-to-manually-deploy-an-oceanbase-cluster

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/disk-planning

https://blog.csdn.net/obpilot/article/details/103296746  --扩容参考

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.1/overview-of-physical-backup-and-recovery  --物理备份

 

 

 

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论