一、简介
OceanBase 数据库是一个金融级分布式关系数据库,提供社区版和企业版
二、特性
- 高性能:存储采用读写分离架构,计算引擎全链路性能优化,准内存数据库性能。
- 低成本:使用PC服务器和低端SSD,高存储压缩率降低存储成本,高性能降低计算成本,多租户混部充分利用系统资源。
- 高可用:数据采用多副本存储,少数副本故障不影响数据可用性,通过“三地五中心”部署实现城市级故障自动无损容灾。
- 强一致:数据多副本通过paxos协议同步事务日志,多数派成功事务才能提交,缺省情况下读写操作都在主副本进行,保证强一致性。
- 可扩展:集群节点全对等,每个节点都具备计算和存储能力,无单点瓶颈。可线性、在线扩展和收缩。
- 兼容性:兼容常用的MySQL、Oracle以及MySQL、Oracle前后台协议,业务零修改或少量修改即可从MySQL、Oracle迁移至OceanBase.
三、Oceanbase部署准备工作
1、时间同步
sudo yum install ntp ntpdate -y
sudo crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
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
查看:
ulimit -a
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
生效配置:
sysctl -p
4、关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
5、创建普通用户并设置密码
sudo useradd admin
sudo passwd admin
admin
6、硬盘规划
#ods环境配置,本地环境200G
/ob_data 1.2T #数据盘
/ob_redo 200G #存放 redo 日志
/home/admin/oceanbase 500G #存放 OceanBase 数据库的二进制文件和运行日志
四、部署Oceanbase
1、部署模式
其中一台作为ODP
采用三副本部署模式,使用三台机器部署OceantBase集群
2、使用yum安装OBD
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
3、安装oblibs
sudo yum install -y oceanbase-ce-libs
4、安装obclient
sudo yum install -y libobclient
sudo yum install -y obclient
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
6、修改初始化集群文件:#在主节点上执行
obd cluster autodeploy obtest -c 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
7、初始化集群并查看
obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml
obd cluster list
注:如有报错,请按相关报错进行处理
8、配置优化
链接ob:
obclient -h 172.16.79.136 -u root@sys -P 2883 -p'cl8q!a#jrkYgMBHu'
相关查询操作:
#查询系统保留内存,用于程序运行
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;
9、创建使用租户
创建资源单元: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 'cl8q!a#jrkYgMBHu';
在test租户下创建用户并授权
create user if not exists test@'%' identified by 'test';
grant all on *.* to test@'%';
使用test用户登录
obclient -h 172.16.79.136 -P2883 -utest@test -ptest
查看资源分配:
SELECT * FROM gv$unit\G;
#备注,查询资源使用情况,使用root登录到sys,切换到oceanbase库
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, b.build_version , usec_to_time(a.stop_time) stop_time 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 \G;
10、安装ocp监控
创建ocp到资源配置:ocp_unit_config
CREATE RESOURCE UNIT ocp_unit_config MAX_CPU 2, MAX_MEMORY '2G', MAX_IOPS 10000,max_disk_size '20G', MAX_SESSION_NUM 9223372036854775807, MIN_CPU=1, MIN_MEMORY='2G', MIN_IOPS=5000;
创建ocp资源池:ocp_pool
create resource pool ocp_pool unit='ocp_unit_config', zone_list=('zone1','zone2','zone3'), unit_num=1;
创建租户:
create tenant ocp_meta resource_pool_list = ('ocp_pool');
创建ocp资源池:ocp__monitor_pool
create resource pool ocp__monitor_pool unit='ocp_unit_config', zone_list=('zone1','zone2','zone3'), unit_num=1;
创建租户:
create tenant ocp_monitor resource_pool_list = ('ocp__monitor_pool');
授权:
ALTER TENANT ocp_monitor SET VARIABLES ob_tcp_invited_nodes='%';
ALTER TENANT ocp_meta SET VARIABLES ob_tcp_invited_nodes='%';
登录ocp_meta租户并创建用户和数据库:
obclient -h 172.16.79.136 -u root@ocp_meta -P 2883
create user ocp identified by 'ocp@123';
grant all on *.* to ocp;
CREATE DATABASE metadb DEFAULT CHARACTER SET UTF8;
登录ocp_monitor租户并创建用户和数据库:
obclient -h 172.16.79.136 -u root@ocp_monitor -P 2883
create user ocp identified by 'ocp@123';
grant all on *.* to ocp;
CREATE DATABASE monitordb DEFAULT CHARACTER SET UTF8;
ocp所在节点安装docker:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum -y install docker-ce
systemctl start docker
获取安装包:
https://open.oceanbase.com/softwareCenter/community
tar xzvf ocp-3.1.1-ce-bp1.tar.gz
生成配置文件:
cd ocp-ce-3.1.1-bp1/
chmod +x ocp_installer.sh
./ocp_installer.sh genconf -c ocp.yaml
配置文件如下:
grep -Ev "^$|^#" ocp.yaml
OCP_IP_ARRAY=(172.16.79.136)
SSH_USER=root # if not root, make sure remote user can use sudo without password admin ALL=(ALL) NOPASSWD:ALL
SSH_PORT=22
SSH_AUTH=password # can be password or pubkey
SSH_PASSWORD='shuinfo@123' # password for passowrd auth, when use pubkey auth, is passphrase
OCP_METADB_HOST=172.16.79.57
OCP_METADB_PORT=2881
OCP_METADB_USER=ocp@ocp_meta
OCP_METADB_PASSWORD='ocp@123' # password may contains special char, make sure correctly quote
OCP_METADB_DBNAME=metadb
OCP_MONITORDB_USER=ocp@ocp_monitor
OCP_MONITORDB_PASSWORD='ocp@123' # password may contains special char, make sure correctly quote
OCP_MONITORDB_DBNAME=monitordb
OCP_WEB_PORT=8080
OCP_LB_VIP= # HA OCP VIP
OCP_LB_VPORT= # HA OCP VPORT
OCP_IMAGE=/root/ocp-ce-3.1.1-bp1/ocp.tar.gz # absoulute path of ocp image file
OCP_CPU=4
OCP_MEMORY=8G
OCP_LOG_DIR=/data/ocp_logs
#备注:以上链接信息与上面创建的数据库用户名密码保持一致
执行安装ocp:
./ocp_installer.sh install -c ocp.yaml
#确保执行完成不报错
访问并接入ob集群:
http://172.16.79.136:8080/login
默认用户名密码: admin root


备注:需要将ocp节点的root公钥放到各个ob节点上


等待任务执行完成。

点进去即可查看相关资源信息。
【完成】

6052

被折叠的 条评论
为什么被折叠?



