热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【OceanBase最佳实践】之生产环境的推荐配置

作者简介:简葵,一个致力于金融级分布式数据库质量提升的测试同学。作者简介:海芊,一个致力于当网红的OceanBase文档工
作者简介:简葵,一个致力于金融级分布式数据库质量提升的测试同学。
作者简介:海芊,一个致力于当网红的 OceanBase 文档工程师。个人频道:Amber loves OB

本文将介绍 OceanBase 数据库在生产环境中的一些最佳实践、注意事项和推荐配置,避免大家在使用过程中因不当操作造成非必要的踩坑。

磁盘(必须遵守)

OceanBase 数据库的运行日志、事务日志和数据文件必须分开存储。日志盘和数据盘建议使用 SSD。不推荐使用 sata 盘。推荐配置如下:

如果您没有 3 块磁盘,建议您使用 LVM 将一块盘分为 3 个分区。

时钟同步(必须遵守)

OceanBase 集群中各服务器的时间必须保持一致,否则 OceanBase 集群将无法启动,运行时也会出现故障。时钟同步在生产环境中非常非常重要,物理机与时钟服务器的误差在 100 ms 以内可认为时钟是同步状态。OceanBase 数据库最大容忍误差是 200 ms。当误差超过 200 ms 时,会出现无主状况,恢复时钟同步后,重启 OceanBase 服务即可恢复正常。

使用以下命令,查看各服务器间的时钟是否同步:

sudo clockdiff $IP

更多信息,参考 配置时钟源。

网络时延(必须遵守)

服务器间的网络时延不能超过 200 ms,否则数据同步会严重滞后,并且可能影响选举。涉及跨城部署时,您需要评估好服务器间的网络时延,跨城网络时延建议不超过 30ms。

网卡设置

建议配置 2 块万兆网卡,bond 模式可以取名为 bond0、mode1 或 mode4。推荐使用 mode4。如果 bond 模式是 mode4,则交换机需要配置 802.3ad。网卡名建议使用 eth0 或 eth1。建议使用 network 服务,不要使用 NetworkManager。

参数设置

1.当系统的写入 TPS 过高时,止转储速度交低于写入速度,此时 memstore 内存会爆,执行以下命令开启写入限速:

ALTER SYSTEM SET writing_throttling_trigger_percentage=75 tenant=all(或者具体 tenantname);

2.内存设置

(1)租户的 CPU 和内存规格比例建议不低于 1:4,否则会导致租户内存满。

(2)普通租户的最小内存必须大于 5G。

(3)租户内存太小时建议调大 ob_sql_work_area_percentage 变量。ob_sql_work_area_percentage 默认值为 5%。租户内存小于 10G 时建议将 ob_sql_work_area_percentage 设置为 20% 左右。

(4)分区数量受内存限制,每个副本预留内存为 168 KB,因此 10000 个副本至少需要预留 1.68 G 内存,即 1 G 的租户最多能建约六千个分区。建议您根据分区数设置租户内存。

(5)物理内存使用限制 memstore_limit_percentage 参数的默认值为 50。如果您的服务器内存大于 256 G,建议您将 memstore_limit_percentage 参数设置为 80。如果您的服务器内存小于 256 G,建议您采用默认配置。执行以下命令,设置 memstore_limit_percentage 参数:

ALTER SYSTEM SET memstore_limit_percentage = '80';

(6)memory_limit_percentage 的默认值为 80,如果您的服务器内存大于 256 G,建议您将 memory_limit_percentage 参数设置为 90。执行以下命令,设置 memory_limit_percentage 参数:

3.慢查询执行时间阈值 trace_log_slow_query_watermark 参数的默认值为 100 ms。您可以根据业务特点调整这一参数。如果阈值太小,OceanBase 将打印大量 trace 日志,进而会影响性能。慢查询时间的默认值为 5s。执行以下命令,进行设置:

ALTER SYSTEM SET trace_log_slow_query_watermark = '1s';

4.CPU 并发度调整

-- CPU 并发度参数,建议配置为 4,arm 系统为 2
ALTER SYSTEM SET cpu_quota_cOncurrency= '4';
-- 资源软负载开关,控制资源均衡水位,默认为 50%,即 CPU 内存使用超过 50% 就进行 unit 均衡,线上建议调整为 100,达到手工控制 unit 分布的效果
ALTER SYSTEM SET resource_soft_limit = '100';

5.转储合并相关

-- 配置转储 50 次
ALTER SYSTEM SET minor_freeze_times = 50;
-- 转储触发水位百分比,建议 256 G 以上配置调整为 70,256 G 以下调整为 60
ALTER SYSTEM SET freeze_trigger_percentage = '60';
-- 数据拷贝并发为 100
ALTER SYSTEM SET data_copy_cOncurrency= 100;
-- 服务器上数据传出并发为 10
ALTER SYSTEM SET server_data_copy_out_cOncurrency= 10;
-- 服务器上数据传入并发为 10
ALTER SYSTEM SET server_data_copy_in_cOncurrency= 10;
-- 转储预热时间,默认 30s,设置了会延后转储释放的时间,改成 0s
ALTER SYSTEM SET minor_warm_up_duration_time = '0s';
-- 配置 chunk 内存大小(建议保持默认值 0,OceanBase 自行分配)
ALTER SYSTEM SET memory_chunk_cache_size = 0;
-- 最大包括版本数量,影响磁盘可用空间,默认为 2,将多保留一个版本的数据在数据盘中,需调整为 1
ALTER SYSTEM SET max_kept_major_version_number = '1';
ALTER SYSTEM SET max_stale_time_for_weak_cOnsistency= '2h';

6.事务相关

ALTER SYSTEM SET clog_sync_time_warn_threshold = '1s';
ALTER SYSTEM SET trx_try_wait_lock_timeout = '0ms';(默认值为 0ms,无需修改)
-- 建议关闭一阶段提交,该参数值默认是 false
ALTER SYSTEM SET enable_one_phase_commit='False';

7.分区迁移速度控制,若是集群负载很低,可以通过加大并发任务数加快分区迁移速度,调大迁移并发数

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;

8.压缩相关

-- (默认就是 zstd_1.0,无需修改), 不过系统支持多种压缩算法
ALTER SYSTEM SET default_compress_func = 'zstd_1.0';


9.缓存刷新相关

ALTER SYSTEM SET autoinc_cache_refresh_interval = '43200s';

10.prepare statement 和 server 端 ps 受_ob_enable_prepared_statement 参数控制,除了 JDBC 和 OBClient 的用户可以按照文档提供的说明使用 server 端 ps,其他情况不建议使用。

-- Prepared Statement 参数,不用 java 建联的配置建议设为 0
ALTER SYSTEM SET _ob_enable_prepared_statement = 0;

11.系统相关

ALTER SYSTEM SET server_permanent_offline_time = '7200s';
-- 公有云建议 5M,生产环境建议 5M,否则建议默认值 30M
ALTER SYSTEM SET syslog_io_bandwidth_limit = '5M';

12.集群升级策略

版本升级时,机器临时上下线,可以先进行一次转储,以减少启动服务器的恢复时间。

13.批量导入大量数据最佳策略

如果是多租户集群,某个租户需要大批量导入数据,为避免影响其他租户, 导完数据后可以恢复以上两个参数:

(1)将 cpu_quota_concurrency 设置为 1,防止租户间 CPU 抢占

(2)开启多轮转储减少合并触发,这样可以提高导入速度

14.租户 primary_zone 配置

(1)primar_zone 配置到具体某个 zone 中。适用场景:业务使用单表、zone_name1 与应用在同机房、zone_name2 和 zone_name3 作为从副本平时无业务流量,具体 zone 顺序需按机房优先级、按应用和 OceanBase 的机房配置。

ALTER TENANT SET PRIMARY_ZOnE= 'zone_name1;zone_name2,zone_name3';

(2)打散 primary_zone 到所有全功能 zone 中。使用场景:业务使用分区表、集群中所有副本都在同一机房或不同 zone 机房间网络延迟在 1ms 内,需要将 primary_zone 打散到所有副本。

ALTER TENANT SET PRIMARY_ZOnE= 'zone_name1,zone_name2,zone_name3';

租户设置

1.并发度设置

-- 最大并发度,默认 32,有大查询业务的建议调整为 128
SET GLOBAL ob_max_parallel_degree = 128;
/*
parallel_max_servers 推荐设置为测试租户分配的 resource unit cpu 数的 10 倍
如测试租户使用的 unit 配置为:create resource unit $unit_name max_cpu 26
那么该值设置为 260
parallel_server_target 推荐设置为 parallel_max_servers * 机器数*0.8
那么该值为 260*3*0.8=624
*/
SET GLOBAL parallel_max_servers=260;
SET GLOBAL parallel_servers_target=624;

2.回收站设置

-- 回收站参数,DDL 执行频率过大的场景一定要关闭,避免ddl执行过多引起租户性能异常
SET GLOBAL recyclebin = 0;
-- truncate回滚参数,truncate执行频率过大的场景一定要关闭
SET GLOBAL ob_enable_truncate_flashback = 0;

3.客户端命令长度

OceanBase 客户端可发的命令长度受限于租户系统变量 max_allowed_packet 的限制(缺省4M)。可以酌情调大。

ODP 配置

ODP 探活

ALTER proxyconfig SET sock_option_flag_out = 2; -- 2 代表 keepalive
ALTER proxyconfig SET server_tcp_keepidle = 5; -- 启动 keepalive 探活前的空闲时间,5 秒
ALTER proxyconfig SET server_tcp_keepintvl = 5; -- 两个 keepalive 探活包之间的时间间隔,5 秒
ALTER proxyconfig SET server_tcp_keepcnt = 2; -- 最多发送多少个 keepaliv e包,2 个。最长 5+5*2=15 秒发现 dead_socket
ALTER proxyconfig SET server_tcp_user_timeout = 5; -- 等待 TCP 层 ACK 确认消息的超时时长,5 秒


以上即为 OceanBase 数据库在生产环境的推荐配置介绍,部署 OceanBase 数据库时,尤其是在生产环境上,一定要遵守分盘部署、时钟同步哦~~


推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 本文介绍了使用数据库管理员用户执行onstat -l命令来监控GBase8s数据库的物理日志和逻辑日志的使用情况,并强调了对已使用的逻辑日志是否及时备份的重要性。同时提供了监控方法和注意事项。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
author-avatar
single
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有