设为首页收藏本站
天天打卡

 找回密码
 立即注册
搜索
查看: 66|回复: 9

部署OceanBase-ce全过程

[复制链接] IP属地:四川省成都市

3

主题

48

回帖

164

积分

注册会员

积分
164
发表于 2024-4-19 13:40:14 | 显示全部楼层 |阅读模式
目录

1. 部署ob-deploy

  1. sudo yum install -y yum-utils
  2. sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
  3. sudo yum install -y ob-deploy
复制代码

2. 复制配置文件并修改

github地址:

https://github.com/oceanbase/obdeploy/tree/master/example

根据部署计划选择相应的文件。

  1. ## Only need to configure when remote login is required
  2. user:
  3. # username: your username
  4. username: root
  5. # password: your password if need
  6. password: '123456'
  7. # key_file: your ssh-key file path if need
  8. # port: your ssh port, default 22
  9. # timeout: ssh connection timeout (second), default 30
  10. oceanbase-ce:
  11. servers:
  12. # Please don't use hostname, only IP can be supported
  13. - 192.168.32.131
  14. global:
  15. # The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
  16. home_path: /home/observer
  17. # The directory for data storage. The default value is $home_path/store.
  18. data_dir: /data
  19. # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
  20. redo_dir: /redo
  21. # Please set devname as the network adaptor's name whose ip is in the setting of severs.
  22. # if set severs as "127.0.0.1", please set devname as "lo"
  23. # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
  24. devname: ens33
  25. mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
  26. rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
  27. zone: zone1
  28. cluster_id: 1
  29. # please set memory limit to a suitable value which is matching resource.
  30. memory_limit: 8G # The maximum running memory for an observer
  31. system_memory: 4G # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
  32. stack_size: 512K
  33. cpu_count: 10
  34. cache_wash_threshold: 1G
  35. __min_full_resource_pool_memory: 268435456
  36. workers_per_cpu_quota: 10
  37. schema_history_expire_time: 1d
  38. # The value of net_thread_count had better be same as cpu's core number.
  39. net_thread_count: 4
  40. major_freeze_duty_time: Disable
  41. minor_freeze_times: 3
  42. enable_separate_sys_clog: 0
  43. enable_merge_by_turn: FALSE
  44. datafile_disk_percentage: 20 # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
  45. syslog_level: INFO # System log level. The default value is INFO.
  46. enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
  47. enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
  48. max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
  49. # observer cluster name, consistent with obproxy's cluster_name
  50. appname: obcluster
  51. # root_password: # root user password, can be empty
  52. root_password: admin
  53. # proxyro_password: # proxyro user pasword, consistent with obproxy's observer_sys_password, can be empty
  54. obproxy:
  55. # Set dependent components for the component.
  56. # When the associated configurations are not done, OBD will automatically get the these configurations from the dependent components.
  57. depends:
  58. - oceanbase-ce
  59. servers:
  60. - 192.168.32.131
  61. global:
  62. listen_port: 2883 # External port. The default value is 2883.
  63. prometheus_listen_port: 2884 # The Prometheus port. The default value is 2884.
  64. home_path: /root/obproxy
  65. # oceanbase root server list
  66. # format: ip:mysql_port;ip:mysql_port. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
  67. rs_list: 192.168.32.131:2881
  68. enable_cluster_checkout: false
  69. # observer cluster name, consistent with oceanbase-ce's appname. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
  70. # cluster_name: obcluster
  71. skip_proxy_sys_private_check: true
  72. # obproxy_sys_password: # obproxy sys user password, can be empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
  73. # observer_sys_password: # proxyro user pasword, consistent with oceanbase-ce's proxyro_password, can be empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
复制代码

3. 使用obd部署

  1. echo "fs.aio-max-nr=1048576" >> /etc/sysctl.conf
  2. sysctl -p
  3. echo "* soft nofile 20480" >> /etc/security/limits.conf
  4. echo "* hard nofile 20480" >> /etc/security/limits.conf
  5. obd cluster deploy obcluster -c /etc/obdeploy.yaml
  6. obd cluster start obcluster
复制代码

4. 连接OB

  1. # 连接ob
  2. obclient -h127.0.0.1 -uroot@sys#obcluster -P2883 -p'your password' -Doceanbase -A
  3. # 连接obproxy
  4. obclient -h 127.0.0.1 -P2883 -uroot@proxysys
复制代码

5. 创建unit和资源池、租户

  1. create resource unit lcxunit max_cpu=2,max_memory='2G',max_iops=10000,max_disk_size='2G',max_session_num=2000;
  2. create resource pool lcxpool unit='lcxunit',unit_num=1;
  3. CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=1, zone_list=('zone1'), primary_zone='zone1', resource_pool_list=('lcxpool') SET ob_tcp_invited_nodes='%';
  4. DROP TENANT tenant_name [FORCE]
复制代码

示例 1

下述语句展示了创建名为 test_tenant 的一个 3 副本的 MySQL 租户(创建新租户默认是 MySQL 租户)。

  1. obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1')
复制代码

示例 2

下述语句展示了创建租户后,直接通过修改变量 ob_tcp_innvited_nodes 的值为 % 以便允许任何客户端 IP 连接该租户。

如果不调整,默认租户的连接方式为只允许本机的 IP 连接数据库。

  1. obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1') SET ob_tcp_invited_nodes='%'
复制代码

示例说明如下:

  • primary_zone 指该租户的表的分区 Leader 所在的 Zone ,例如,primary_ zone =’ zone1; zone2, zone3’ 表示该租户的表的分区 Leader 在 zone1 上, 这时通过分号来分隔。
  • zone2 和 zone3 通过逗号分割,表示 zone2 和 zone3 是同一优先级,但是比 zone1 优先级低。
  • primary_zone 设置时,其值可以为 RANDOM(必须大写),表示随机。

普通租户的内存最小规格必须大于等于 5 GB,否则创建租户失败。

如果希望建立租户进行非常简单的功能测试,可以修改参数 alter system __min_full_resource_pool_memory 的值为 1073741824 来允许以最小 1 GB 内存的规格创建租户。

6. 常用运维语句(来自官网)

查看服务器资源配置

可以通过以下 SQL 查看当前的服务器资源配置。

其中,__all_server 表记录了了各 OBServer 的状态,__all_virtual_server_stat 记录了各 OBServer 的 CPU、内存与磁盘使用量。

  1. SELECT a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status FROM __all_virtual_server_stat a JOIN __all_server b ON (a.svr_ip=b.svr_ip AND a.svr_port=b.svr_port) ORDER BY a.zone, a.svr_ip;
复制代码

查看资源池配置

可以通过以下 SQL 查看当前的资源池配置。

其中,__all_resource_pool 表记录了资源池的信息,__all_unit_config 记录了资源单元的配置,__all_unit 记录了资源单元的列表。

  1. SELECT t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, round(t2.max_memory/1024/1024/1024) max_mem_gb, round(t2.min_memory/1024/1024/1024) min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name FROM __all_resource_pool t1 JOIN __all_unit_config t2 ON (t1.unit_config_id=t2.unit_config_id) JOIN __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`) LEFT JOIN __all_tenant t4 on (t1.tenant_id=t4.tenant_id) ORDER BY t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id;
复制代码

查看 RootService 执行的管理任务

可以通过以下 SQL 查看 RootService 最近执行的管理任务。

__all_rootservice_event_history 用于记录集群级的历史事件,如合并、Server 上下线、负载均衡任务执行等。配置项 ob_event_history_recycle_interval 控制该表中记录历史事件的保留时间,默认为 7 天。

有关 ob_event_history_recycle_interval 配置项的详细信息,请参见《OceanBase 数据库 参考指南》中的 系统配置项 章节。

  1. SELECT DATE_FORMAT(gmt_create, '%b%d %H:%i:%s') gmt_create_ , module, event, name1, value1, name2, value2, rs_svr_ip FROM __all_rootservice_event_history WHERE 1 = 1 ORDER BY gmt_create DESC LIMIT 20;
复制代码

如何查看用户表

可以通过以下 SQL 查看指定租户中所有用户表。

其中,gvtenant视图记录了租户信息 , gvtenant 视图记录了租户信息,gv tenant视图记录了租户信息,gvdatabase 记录了数据库信息,gvKaTeX parse error: Expected group after '_' at position 14: table 记录了表信息,_̲_all_virtual_me…tenant_id 表示租户 ID。

  1. SELECT t1.tenant_id,t1.tenant_name,t2.database_name,t3.table_id,t3.table_Name,t3.tablegroup_id,t3.part_num,t4.partition_Id,t4.zone,t4.svr_ip,t4.role, round(t4.data_size/1024/1024) data_size_mb FROM `gv$tenant` t1 JOIN `gv$database` t2 ON (t1.tenant_id = t2.tenant_id) JOIN gv$table t3 ON (t2.tenant_id = t3.tenant_id AND t2.database_id = t3.database_id AND t3.index_type = 0) LEFT JOIN `__all_virtual_meta_table` t4 ON (t2.tenant_id = t4.tenant_id AND ( t3.table_id = t4.table_id OR t3.tablegroup_id = t4.table_id ) AND t4.role IN (1)) WHERE t1.tenant_id = $tenant_id ORDER BY t3.tablegroup_id, t4.partition_Id, t3.table_name ;
复制代码

查看指定用户 SQL 命令执行情况

可以通过以下 SQL 查看指定用户执行的 SQL 命令的执行情况。

其中 TENANT_ID 表示租户 ID,USER_NAME 表示用户名,IP_ADDRESS 表示执行 SQL 的节点的 IP 地址。

  1. obclient> SELECT /*+ read_consistency(weak) ob_querytimeout(100000000) */ substr(usec_to_time(request_time),1,19) request_time_, s.svr_ip, s.client_Ip, s.sid,s.tenant_id, s.tenant_name, s.user_name, s.db_name, s.query_sql, s.affected_rows, s.return_rows, s.ret_code, s.event, s.elapsed_time, s.queue_time, s.execute_time, round(s.request_memory_used/1024/1024,2) req_mem_mb, plan_type, is_executor_rpc, is_inner_sql FROM gv$sql_audit s WHERE s.tenant_id=<TENANT_ID> AND user_name='<USER_NAME>' AND svr_ip IN ('<IP_ADDRESS>') ORDER BY request_time DESC LIMIT 100;
复制代码

查看物理机资源使用情况

可以通过以下 SQL 查看指定租户在物理机上的资源使用情况。

其中 gvmemstore 视图记录了租户的内存使用情况 , memstore 视图记录了租户的内存使用情况, memstore视图记录了租户的内存使用情况,tenant_id 表示租户 ID。

  1. obclient> SELECT tenant_id, ip, round(active/1024/1024) active_mb, round(total/1024/1024) total_mb, round(freeze_trigger/1024/1024) freeze_trg_mb, round(mem_limit/1024/1024) mem_limit_mb , freeze_cnt , round((active/freeze_trigger),2) freeze_pct, round(total/mem_limit, 2) mem_usage FROM `gv$memstore` WHERE $tenant_id IN (1001) ORDER BY tenant_id, ip;
复制代码

查看合并进度

可以通过以下 SQL 查看合并进度。

其中查询结果中的 merge_process 列表示当前合并进度的百分比。

  1. SELECT ZONE,svr_ip,major_version,min_version,ss_store_count,merged_ss_store_count,modified_ss_store_count,merge_start_time,merge_finish_time,merge_process FROM __all_virtual_partition_sstable_image_info;
复制代码

查看分区信息

可以通过以下 SQL 查询指定租户的分区信息。

其中 __all_virtual_partition_info 记录了分区信息,$tenant_id 表示租户 ID。

  1. SELECT table_id, partition_idx, usec_to_time(min_log_service_ts), TIME_TO_SEC( now())-TIME_TO_SEC(usec_to_time(min_log_service_ts)) delta_time FROM __all_virtual_partition_info WHERE tenant_id=$tenant_id;
复制代码

7. 小脚本(持续更新)

关于 shell 变量取值:

  1. #!/bin/bash
  2. function start_cluster() {
  3. obd cluster start obcluster
  4. }
  5. function user_conn() {
  6. dbname=$2
  7. echo ${dbname:-oceanbase}
  8. obclient -h127.0.0.1 -uroot@$1\#obcluster -P2883 -p'your password' -D${dbname:-oceanbase} -A
  9. }
  10. function stop_cluster() {
  11. obd cluster stop obcluster
  12. }
  13. case "$1" in
  14. 'start')
  15. start_cluster
  16. ;;
  17. '-u')
  18. user_conn $2 $3
  19. ;;
  20. 'stop')
  21. stop_cluster
  22. ;;
  23. *)
  24. echo "ob-manager start|-u|stop ..."
  25. esac
复制代码

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

1

主题

68

回帖

160

积分

注册会员

积分
160
发表于 2024-5-5 07:53:24 | 显示全部楼层 IP属地:美国弗吉尼亚州梅克伦堡县博伊顿
好用好用

5

主题

57

回帖

226

积分

中级会员

积分
226
发表于 2024-5-5 22:46:36 | 显示全部楼层 IP属地:北京市
好用好用

0

主题

44

回帖

87

积分

注册会员

积分
87
发表于 2024-5-14 15:24:31 | 显示全部楼层 IP属地:广东省广州市
每日一回

1

主题

59

回帖

141

积分

注册会员

积分
141
发表于 2024-5-20 02:24:44 | 显示全部楼层 IP属地:山西省阳泉市
太棒了!感谢分享这个信息!

13

主题

31

回帖

335

积分

中级会员

积分
335

推广达人宣传达人热心会员付费会员

发表于 2024-5-23 06:34:32 | 显示全部楼层 IP属地:山西省阳泉市
已测试,非常不错

1

主题

68

回帖

160

积分

注册会员

积分
160
发表于 2024-6-18 20:06:52 | 显示全部楼层 IP属地:天津市
每日一回

1

主题

59

回帖

141

积分

注册会员

积分
141
发表于 2024-9-7 04:49:38 | 显示全部楼层 IP属地:美国弗吉尼亚州阿什本
谢谢你分享这个信息

2

主题

50

回帖

144

积分

注册会员

积分
144
发表于 2024-9-16 07:20:10 | 显示全部楼层 IP属地:美国华盛顿州格兰特摩西湖市
同意!

1

主题

51

回帖

122

积分

注册会员

积分
122
发表于 2024-9-28 15:26:26 | 显示全部楼层 IP属地:美国弗吉尼亚州梅克伦堡县博伊顿
确实牛逼
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|爱云论坛 - d.taiji888.cn - 技术学习 免费资源分享 ( 蜀ICP备2022010826号 )|天天打卡

GMT+8, 2024-11-15 08:59 , Processed in 1.451271 second(s), 38 queries .

Powered by i云网络 Licensed

© 2023-2028 正版授权

快速回复 返回顶部 返回列表