主页 > 手机  > 

OceanBase初探学习历程之——安装部署

OceanBase初探学习历程之——安装部署
一、介绍

        OceanBase 数据库是一个原生的分布式关系数据库,它是完全由阿里巴巴和蚂蚁集团自主研发 的项目。OceanBase 数据库构建在通用服务器集群上,基于 Paxos 协议和分布式架构,提供 金融级高可用和线性伸缩能力,不依赖特定硬件架构,具备高可用、线性扩展、高性能、低成 本等核心技术优势。

        OceanBase 数据库具有如下特点:

高可用 单服务器故障能够自愈,支持跨城多机房容灾,数据零丢失,可满足金融行业 6 级容灾标 准(RPO=0,RTO在线性扩展 透明扩展,自动负载均衡,应用透明的水平扩展,集群规模可超过 1500 节点,数据量可达 PB 级,单表记录万亿行。MySQL/Oracle 高度兼容 社区版兼容 MySQL 协议、语法和使用习惯,MySQL 客户端工具可以直接访问 OceanBase 数据库。 企业版兼容 MySQL、Oracle 协议,需要使用 OceanBase 自己的驱动才可以访问 OceanB ase 数据库的 Oracle 租户。

说明:MySQL 从 5.6 开始兼容,Oracle 从 Oracle 11g 开始兼容

高性能 准内存级数据变更操作、独创的编码压缩技术,结合线性水平扩展,TPC-C 测试达到 7.07 亿 tpmC。低成本 使用 PC 服务器和低端 SSD,高存储压缩率降低存储成本,高性能降低计算成本,多租户 充分利用系统资源。多租户 原生支持多租户架构,同一套数据库集群可以为多个独立业务提供服务,租户间数据隔离, 降低部署和运维成本。 二、安装部署 2.1 安装前准备

        OceanBase 数据库是一个分布式集群产品,在生产环境中至少要求三台机器,学习环境可以部 署单机版本。OceanBase 数据库的部署跟传统数据库的部署相比,存在很多共同的地方,对操 作系统硬件、软件设置、文件系统等会有一些最佳实践建议,这些是 OceanBase 数据库发挥 高性能稳定运行的基础。社区版提供了一些工具保证 OceanBase 数据库可以实现一定程度的自动化。

软件包下载地址如下:

官网下载: open.oceanbase /softwareCenter/communityGitHub 下载: github /oceanbase/oceanbase/releases/阿里云 Yum 源: mirrors.aliyun /oceanbase/OceanBase.repo

2.2 安装部署资源要求

        OceanBase 数据库运行时会对主机资源有一些要求,主要是 CPU、内存和磁盘空间。安装 OceanBase 数据库的目的不同,对资源的要求也不同。

注意:这里性能测试环境和生产环境的资源要求只是建议。在社区版后续版本,会进一步降低对内 存的要求。

OceanBase 数据库对操作系统也有一些要求,目前仅支持以下系统:

 Redhat / CentOS 7.x/8.x SUSE / OpenSUSE 15.x Anlios 7.x/8.xDebian 9.xUbuntu 20.x当然实践其他操作系统机遇以上内核高版本也支持。 2.3 安装过程 2.3.1、时间同步 sudo yum install ntp ntpdate -y sudo crontab -e */5 * * * * /usr/sbin/ntpdate ntp1.aliyun 2.3.2 设置limit sudo vim /etc/security/limits.conf root soft nofile 655350 root hard nofile 655350 * soft nofile 655350 * hard nofile 655350 * soft stack 20480 * hard stack 20480 * soft nproc 655360 * hard nproc 655360 * soft core unlimited * hard core unlimited 2.3.3 设置sysctl系统参数 sudo vim /etc/sysctl.conf ## 网络优化 net.core.somaxconn = 2048 net.core.netdev_max_backlog = 10000 net.core.rmem_default = 16777216 net.core.wmem_default = 16777216 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.ip_local_port_range = 3500 65535 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_syncookies = 0 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_slow_start_after_idle=0 vm.swappiness = 0 vm.min_free_kbytes = 2097152 # 此处为 OceanBase 数据库的 data 目录 kernel.core_pattern = /ob_data/core-%e-%p-%t 2.3.4 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 2.3.5 创建普通用户并设置密码 sudo useradd admin sudo passwd admin admin 2.3.6 硬盘规划 #ods环境配置,本地环境200G /ob_data 1.2T #数据盘 /ob_redo 200G #存放 redo 日志 /home/admin/oceanbase 500G #存放 OceanBase 数据库的二进制文件和运行日志 2.4 部署模式 2.4.1 规划 其中一台作为ODP 采用三副本部署模式,使用三台机器部署OceantBase集群 2.4.2 使用yum安装OBD sudo yum install -y yum-utils sudo yum-config-manager --add-repo mirrors.aliyun /oceanbase/OceanBase.repo sudo yum install -y ob-deploy 2.4.3 安装oblibs sudo yum install -y oceanbase-ce-libs 2.4.4 安装obclient sudo yum install -y libobclient sudo yum install -y obclient 2.4.5 创建目录并赋权 sudo mkdir -p /home/admin/oceanbase /ob_redo /ob_data /ob/obproxy sudo chown -R admin.admin /home/admin/oceanbase /ob/obproxy /ob_data /ob_redo 2.4.6 修改初始化集群文件:#在主节点上执行 obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml

下载配置文件并修改:

github /oceanbase/obdeploy/blob/master/example/autodeploy/distributed-with-obproxy-example.yaml

user: username: admin password: admin oceanbase-ce: servers: - name: server1 ip: 172.16.79.57 - name: server2 ip: 172.16.79.58 - name: server3 ip: 172.16.79.59 global: home_path: /home/admin/oceanbase data_dir: /ob_data redo_dir: /ob_redo appname: obtest root_password: cl8q!a#jrkYgMBHu proxyro_password: proxy@123 server1: zone: zone1 server2: zone: zone2 server3: zone: zone3 obproxy: depends: - oceanbase-ce servers: - 172.16.79.136 global: home_path: /ob/obproxy cluster_name: obtest obproxy_sys_password: proxy@sys123 observer_sys_password: proxy@123 2.4.7 初始化集群并查看 obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml obd cluster list 2.4.8 配置优化 obclient -h 172.16.79.136 -u root@sys -P 2883 -p'密码' 2.4.9 查询及参数优化 #查询系统保留内存,用于程序运行 SHOW PARAMETERS LIKE 'system_memory'\G; #查询ob内存分配限制百分比 SHOW PARAMETERS LIKE 'memstore_limit_percentage'\G; #查询ob预设可用最大内存 SHOW PARAMETERS LIKE 'memory_limit'\G; #查看资源分配情况,切换到oceanbase SELECT * FROM gv$unit\G; #并行查询相关参数: SHOW VARIABLES LIKE '%paral%'; #查看压缩情况: SHOW PARAMETERS LIKE 'default_compress'\G; #sys租户下查看资源单元配置,切换到oceanbase SELECT * FROM __all_unit_config\G;

优化

#设置系统保留内存 ALTER system set system_memory='4G'; #修改observer可以使用最大内存 ALTER system set memory_limit='28G'; #sys租户下修改资源单元配置:cpu/内存/硬盘等根据自己实际资源调整 ALTER RESOURCE UNIT sys_unit_config MAX_CPU 1, MAX_MEMORY '2G', MAX_IOPS 10000,max_disk_size '20G', MAX_SESSION_NUM 9223372036854775807, MIN_CPU=1, MIN_MEMORY='2G', MIN_IOPS=5000; #并行查询参数优化: SET GLOBAL parallel_max_servers = 32; SET GLOBAL ob_max_parallel_degree = 128; SET GLOBAL parallel_servers_target=540; #修改内存分配限制百分比 ALTER SYSTEM SET memstore_limit_percentage = '80'; #慢查询执行时间阈值 ALTER SYSTEM SET trace_log_slow_query_watermark = '1s'; #cpu并发调度调整 ALTER SYSTEM SET cpu_quota_concurrency = '4'; ALTER SYSTEM SET resource_soft_limit = '100'; #转储合并相关优化 ALTER SYSTEM SET minor_freeze_times = 50; ALTER SYSTEM SET freeze_trigger_percentage = '60'; ALTER SYSTEM SET data_copy_concurrency = 100; ALTER SYSTEM SET server_data_copy_out_concurrency = 10; ALTER SYSTEM SET server_data_copy_in_concurrency = 10; ALTER SYSTEM SET minor_warm_up_duration_time = '0s'; ALTER SYSTEM SET memory_chunk_cache_size = 0; ALTER SYSTEM SET max_kept_major_version_number = '1'; #事务相关优化 ALTER SYSTEM SET clog_sync_time_warn_threshold = '1s'; ALTER SYSTEM SET enable_one_phase_commit='False'; #分区迁移速度控制 ALTER SYSTEM SET data_copy_concurrency=40; ALTER SYSTEM SET server_data_copy_out_concurrency=20; ALTER SYSTEM SET server_data_copy_in_concurrency=20; #缓存刷新 ALTER SYSTEM SET autoinc_cache_refresh_interval = '43200s'; #系统相关,observer异常临时下线时间 ALTER SYSTEM SET server_permanent_offline_time = '7200s'; #关闭回收站以及truncate回滚参数 SET GLOBAL recyclebin = 0; SET GLOBAL ob_enable_truncate_flashback = 0; #设置ob查询超时时间:默认10s set global ob_query_timeout = 20000000; #请求锁等待时间:为-1与ob查询超时时间相同 SHOW VARIABLES LIKE 'ob_trx_lock_timeout'; #事物超时时间:默认100s,保持默认 SHOW VARIABLES LIKE 'ob_trx_timeout'; #事物空闲超时时间:默认120s,保持默认 SHOW VARIABLES LIKE 'ob_trx_idle_timeout'; #设置查询时间阈值 ALTER SYSTEM SET large_query_threshold = '10s'; #设置弱一致性读版本号的刷新周期,表示不再刷新弱一致性读版本号,不提供单调读功能 ALTER SYSTEM SET weak_read_version_refresh_interval = '0'; #设置系统日志所能占用的磁盘 IO 带宽上限,超过丢掉 ALTER SYSTEM SET syslog_io_bandwidth_limit = "10m"; #设置系统日志级别 ALTER SYSTEM SET syslog_level = "PERF"; #用于设置每日合并工作的线程数 ALTER SYSTEM SET merge_thread_count = "64"; #用于设置数据坏块自检周期,为0表示不检测 ALTER SYSTEM SET builtin_db_data_verify_cycle = "0"; #设置合并时候数据列统计信息的采样率 ALTER SYSTEM SET merge_stat_sampling_ratio = "1"; #设置合并时宏块的校验级别,0表示不校验 ALTER SYSTEM SET micro_block_merge_verify_level = "0"; #设置触发全局冻结的租户使用内存阈值 ALTER SYSTEM SET freeze_trigger_percentage = "50"; #设置小合并时的并发线程数,期望提高转储的速度 ALTER SYSTEM SET minor_merge_concurrency = 32; #增大 mini_merge 的线程数,期望提高 mini_merge 的速度(默认值为 3)。调大为 8 以后,发现会导致压测中 CPU 使用率有时飙升至 90%,对性能有影响。 ALTER SYSTEM SET _mini_merge_concurrency = 8; #OceanBase 占系统总内存的比例,提高 OceanBase 可用的内存量 ALTER SYSTEM SET memory_limit_percentage = 90; #obproxy优化 #判断是否开启 PL 路由 SHOW PROXYCONFIG LIKE 'enable_partition_table_route'; ALTER PROXYCONFIG SET enable_partition_table_route = False; #判断是否开启 partition table 路由 SHOW PROXYCONFIG LIKE 'enable_pl_route'; ALTER PROXYCONFIG SET enable_pl_route = False; #OBProxy 所能接受的客户端最大连接数 SHOW PROXYCONFIG LIKE 'client_max_connections'; ALTER PROXYCONFIG SET client_max_connections = 20000; 2.4.10 创建使用租户

 创建资源单元:unit1

CREATE RESOURCE UNIT unit1 MAX_CPU 8, MAX_MEMORY '12G', MAX_IOPS 10000,max_disk_size '80G', MAX_SESSION_NUM 9223372036854775807, MIN_CPU=6, MIN_MEMORY='12G', MIN_IOPS=5000; #查看资源单元 SELECT * FROM oceanbase.__all_unit_config;

创建资源池:

CREATE RESOURCE POOL pool1 UNIT='unit1',UNIT_NUM=1,ZONE_LIST=('zone1','zone2','zone3'); #查询资源池 select * from __all_resource_pool\G;

创建租户:

CREATE TENANT IF NOT EXISTS test charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1'); #查询租户: SELECT * FROM oceanbase.gv$tenant; 授权: ALTER TENANT test SET VARIABLES ob_tcp_invited_nodes='%';

在test租户下,使用root登录,初始化的oceanbase的root密码为空:

obclient -h 172.16.79.136 -u root@test -P 2883 -p #修改密码: ALTER USER root IDENTIFIED BY '密码';

在test租户下创建用户并授权:

create user if not exists test@'%' identified by 'test'; grant all on *.* to test@'%';

使用test用户登录:

obclient -h 192.168.10.10 -P2883 -utest@test -ptest

        到此位置基本完成基础安装部署,后续需要安装部署ocp监控 进行集群查看及监控,后续继续分享。

(若重要,处处都是办法;若不重要,比比皆是理由。)
标签:

OceanBase初探学习历程之——安装部署由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“OceanBase初探学习历程之——安装部署