备库搭建
1. 备库主机初始化
每个备库的observer需要用t-oceanbase-antman做初始化,详见安装文档。
2. OCP添加备库主机
添加主机(这里要注意NTP时间)

3. 主集群发起合并

4. 创建备库集群
在OCP创建集群界面选择备集群

选择需要同步的主集群名称,以及Observer,集群选择方式手动分配

提醒:机器选择方式此处截图有误!
确认提交信息

观察任务完成进度

也可以从系统管理-任务界面查看进度

备集群创建成功,查看集群性能

性能压测
1. 准备压测工具
本次使用benchmarkSQL测试数据库在管理类系统下的性能。
下载地址:
https://sourceforge.net/projects/benchmarksql/
下载后放在tmp目录下,并进行解压
unzip benchmarksql-5.0.zip
2. 建立测试账号
这里测试的是Oracle租户
create user test identified by oracle;grant dba to test;
3. 参数调整
OBServer内核• root@sysmysql -uroot@sys#test_cluster -P2883 -h192.168.9.146 -p -c -A Doceanbasealter system set cpu_quota_concurrency=4;alter system set enable_pg=true;alter system set enable_early_lock_release=false tenant=all;alter system set _max_trx_size='600M';• 测试租户(Oracle)
obclient -h192.168.9.148 -usys@tenant_oracle#test_cluster -pset global ob_query_timeout=3600000000;set global ob_trx_timeout=3600000000;set global max_allowed_packet=67108864;set global ob_sql_work_area_percentage=100;set global parallel_max_servers=300;set global parallel_servers_target=300;set global ob_create_table_strict_mode=off;• proxy参数
obclient -h192.168.9.148 -P2883 -uroot@proxysys -p alter proxyconfig set slow_proxy_process_time_threshold='5s';alter proxyconfig set proxy_mem_limited='8G';alter proxyconfig set enable_metadb_used=false;alter proxyconfig set enable_strict_kernel_release=false;alter proxyconfig set work_thread_num=64;alter proxyconfig set automatic_match_work_thread=false;alter proxyconfig set enable_compression_protocol=false;alter proxyconfig set syslog_level=info;alter proxyconfig set enable_async_log=true;
4. 准备OB配置文件
db=oracledriver=com.alipay.oceanbase.obproxy.mysql.jdbc.Driver// conn=jdbc:oceanbase://xxx.xxx.xxx.xxx:2883/icbc?useUnicode=true&characterEncoding=utf-8conn=jdbc:oceanbase://xxx.xxx.xxx.xxx:2883/test?useUnicode=true&characterEncoding=utf-8user=test@tenant_oracle#test_clusterpassword=xxxxxxwarehouses=10loadWorkers=20//fileLocation=/data/temp/terminals=10//To run specified transactions per terminal- runMins must equal zerorunTxnsPerTerminal=0//To run for specified minutes- runTxnsPerTerminal must equal zerorunMins=1//Number of total transactions per minutelimitTxnsPerMin=0//Set to true to run in 4.x compatible mode. Set to false to use the//entire configured database evenly.terminalWarehouseFixed=true//The following five values must add up to 100newOrderWeight=45paymentWeight=43orderStatusWeight=4deliveryWeight=4stockLevelWeight=4// Directory name to create for collecting detailed result data.// Comment this out to suppress.resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tSosCollectorScript=./misc/os_collector_linux.pyosCollectorInterval=1//osCollectorSSHAddr=user@dbhost//osCollectorDevices=net_eth0 blk_sda
说明:
仓库数(warehouses )决定了数据量。正式的压测仓库数一般在10000以上。
Loadworkers 数决定了数据加载的性能。如果OceanBase租户资源很小(尤其是内存资源),那加载速度也不要太快;否则容易把租户内存打爆。
并发数(terminals )是后期做TPC-C测试的客户端并发数。这个每次测试都可以调整,以方便不同压力下的性能。
压测时间(runMin)是每次测试时间,越长测试结果越好且稳定。因为有时候数据访问有个预热过程,效果会体现内存命中率上。
注意:
建表语句中的分区数目可以根据实际情况调整,跟集群节点数有关。
如果集群是3台(1-1-1),建议是6个或者6的倍数;如果集群是6台(2-2-2),建议是12个或者12的倍数;如果集群是(3-3-3),建议是36或者36的倍数。这样是方便后期弹性伸缩测试的时候尽可能保证每个节点的分区均衡。
5. 建表
1)修改分区数
cd /tmp/benchmarksql-5.0/run/sql.commoncp tableCreates.sql tableCreates.sql.bakvi tableCreates.sql 把里面的partitions 180改为partitions 6
2) 建表
Cd tmp/benchmarksql-5.0/run./runSQL.sh props.ob ./sql.common/tableCreates.sql
3)加载数据
./runLoader.sh props.ob

6. 登录OCP观察性能
数据库性能

主机性能

建索引
./runSQL.sh props.ob ./sql.common/indexCreates.sql

验证数据
select 'select *+ parallel(8) */ count(1) from ' ||table_name||';' from user_tables;select /*+ parallel(8) */ count(1) from BMSQL_CONFIG ;select /*+ parallel(8) */ count(1) from BMSQL_WAREHOUSE ;select /*+ parallel(8) */ count(1) from BMSQL_DISTRICT ;select /*+ parallel(8) */ count(1) from BMSQL_CUSTOMER ;select /*+ parallel(8) */ count(1) from BMSQL_HISTORY ;select /*+ parallel(8) */ count(1) from BMSQL_NEW_ORDER ;select /*+ parallel(8) */ count(1) from BMSQL_OORDER ;select /*+ parallel(8) */ count(1) from BMSQL_ORDER_LINE;select /*+ parallel(8) */ count(1) from BMSQL_ITEM ;select /*+ parallel(8) */ count(1) from BMSQL_STOCK ;

7. 运行测试程序
./runBenchmark.sh props.ob
8. 观察性能


重点关注QPS/TPS、以及相应的RT、增量内存的增加和总量占比等。此外还能看出测试过程中还是有不少物理读IO。
9. 清理数据
登录test用户执行tableDrops.sql
cd /tmp/benchmarksql-5.0/run/sql.commonobclient -h192.168.9.148 -utest@tenant_oracle#test_cluster -p -P2883source tableDrops.sql

更多精彩干货分享
点击下方名片关注
IT那活儿





