0


猿创征文|OceanBase社区版集群部署

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

前言

OceanBase社区版集群部署分享给大家,一起来为国产数据库添砖加瓦

📣 1.部署环境

1.操作系统:
[root@jeames ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)2.内存
要求:系统内存至少12G
[root@jeames ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:          15870866142962070814642
Swap:          409504095[root@jeames ~]# vi /etc/fstab[root@jeames ~]# tmpfs/dev/shm tmpfs defaults,size=15G 0 0[root@jeames ~]# cat /etc/fstab | grep shm
tmpfs/dev/shm tmpfs defaults,size=15G 00[root@jeames ~]# mount -o remount /dev/shm[root@jeames ~]# 3.OB运行目录
/data/{observer01,observer02,observer03,obproxy}4.关闭防火墙和 SELinux
##查看防火墙状态:
systemctl status firewalld

systemctl disable firewalld 
systemctl stop firewalld
systemctl status firewalld

##关闭 SELinuxvi /etc/selinux/config
确保:SELINUX=disabled
[root@jeames ~]# setenforce 0
setenforce: SELinux is disabled

📣 2.服务器配置

1.修改配置文件

vi /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 =350065535
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 =40968738016777216
net.ipv4.tcp_wmem =40966553616777216
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
vm.max_map_count=655360
fs.aio-max-nr=1048576##让配置生效[root@jeames ~]# sysctl -p2.修改会话变量设置
通过配置 limits.conf 限制修改会话限制。 
OceanBase 数据库的进程涉及的限制包括线程最大栈空间大小(Stack)、最大文件句柄数(Open Files)和 core 文件大小 (Core File Size)

vi /etc/security/limits.conf

* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
* soft stack unlimited
* hard stack unlimited

查看配置方法。退出当前会话,重新登录。执行以下命令,查看配置是否生效:

[root@jeames ~]# ulimit -a

core file size          (blocks, -c)0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e)0file size               (blocks, -f) unlimited
pending signals                 (-i)63407
max locked memory       (kbytes, -l)64
max memory size         (kbytes, -m) unlimited
open files                      (-n)1024
pipe size            (512 bytes, -p)8
POSIX message queues     (bytes, -q)819200
real-time priority              (-r)0
stack size              (kbytes, -s)8192
cpu time(seconds, -t) unlimited
max user processes              (-u)63407
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

3.同步服务
OceanBase 是分布式数据库产品,是一个集群软件,对各个节点之间的时间同步性有要求。
技术上要求所有节点之间的时间误差控制在 50ms 以内。实际生产环境为了稳定性和性能考虑,建议时间误差控制在 10ms 以内。
通常只要节点配置时间同步服务器跟公网时间保持同步即可。

CentOS 或 RedHat 7.x 版本推荐使用 chrony 服务做时间源。
Chrony 是 NTP(Network Time Protocol,网络时间协议,服务器时间同步的一种协议)的另一种实现,
与 ntpd 不同,它可以更快且更准确地同步系统时钟,最大程度的减少时间和频率误差。

判断是否使用 ntpd同步时间
[root@jeames ~]# systemctl status ntpd
Unit ntpd.service could not be found.
如果提示上面这个信息,表示没有使用 ntpd,那就继续。 如果提示有 ntpd 服务,就卸载 ntpd 软件。

安装 chrony服务
这里采用 YUM 安装方法。您也可以下载相应的 RPM 包安装。

[root@jeames ~]# yum -y install chrony[root@jeames ~]# rpm -qa | grep chrony
chrony-3.4-1.el7.x86_64

chrony 服务守护进程名是 chronyd,chronyc 是用来监控 chronyd 性能和配置参数的命令行工具。 
chrony 的主配置文件: /etc/chrony.conf ,配置方法如下:

# 如果是测试环境,没有时间同步服务器,那就选取一台配置为时间同步服务器。# 如果选中的是本机,则配置如下 server
server 127.127.1.0

cat>> /etc/chrony.conf <<"EOF"
server 192.168.1.54
# 指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器
allow 192.168.0.0/16
# 即使没有同步到时间源,也要服务时间
local stratum 10
EOF

查看时间同步活动
chronyc activity

查看时间服务器
chronyc sources

查看同步状态
chronyc sources -v

校准时间服务器:
chronyc tracking

📣 3.软件下载

1.软件下载
##OceanBase 数据库专用的代理服务器
obproxy-3.2.0-1.el7.x86_64.rpm
oceanbase-ce-3.1.4-10000092022071511.el7.x86_64.rpm
##OceanBase运行时所依赖的部分三方动态库
oceanbase-ce-libs-3.1.4-10000092022071511.el7.x86_64.rpm

📣 4.配置安装用户

创建用户 admin 并授予 sudo 权限

1。新增普通用户 admin
[root@jeames ~]# useradd admin# 改用户密码passwd admin

或下面命令指定密码,密码修改为自己的。
echo'admin:admin'| chpasswd

2.给予admin用户sudo root权限
方法:admin 加到用户组 wheel 里。
[root@jeames ~]# usermod admin -G wheel[root@jeames ~]# id adminuid=1001(admin)gid=1001(admin)groups=1001(admin),10(wheel)

📣 5.安装软件

使用root用户执行安装:

[root@jeames ~]# rpm -ivh oceanbase-ce-libs-3.1.4-10000092022071511.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:oceanbase-ce-libs-3.1.4-100000920################################# [100%][root@jeames ~]# rpm -ivh oceanbase-ce-3.1.4-10000092022071511.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:oceanbase-ce-3.1.4-10000092022071################################# [100%][root@jeames ~]# rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm
warning: obproxy-3.2.0-1.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID e9b4a7aa: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:obproxy-3.2.0-1.el7              ################################# [100%]
   
查看安装后的信息:
[root@jeames ~]# rpm -ql oceanbase-ce
/home/admin/oceanbase/bin
/home/admin/oceanbase/bin/import_time_zone_info.py
/home/admin/oceanbase/bin/observer
/home/admin/oceanbase/etc
/home/admin/oceanbase/etc/oceanbase_upgrade_dep.yml
/home/admin/oceanbase/etc/priv_checker.py
/home/admin/oceanbase/etc/timezone_V1.log
/home/admin/oceanbase/etc/upgrade_checker.py
/home/admin/oceanbase/etc/upgrade_cluster_health_checker.py
/home/admin/oceanbase/etc/upgrade_post.py
/home/admin/oceanbase/etc/upgrade_post_checker.py
/home/admin/oceanbase/etc/upgrade_pre.py
/home/admin/oceanbase/etc/upgrade_rolling_post.py
/home/admin/oceanbase/etc/upgrade_rolling_pre.py

[root@jeames ~]# rpm -ql oceanbase-ce-libs
/home/admin/oceanbase/lib
/home/admin/oceanbase/lib/libaio.so
/home/admin/oceanbase/lib/libaio.so.1
/home/admin/oceanbase/lib/libaio.so.1.0.1
/home/admin/oceanbase/lib/libmariadb.so
/home/admin/oceanbase/lib/libmariadb.so.3

[root@jeames ~]# rpm -ql obproxy
/home/admin/obproxy-3.2.0/bin
/home/admin/obproxy-3.2.0/bin/obproxy
/home/admin/obproxy-3.2.0/bin/obproxyd.sh

[root@jeames ~]# chown -R admin:admin /home/admin

📣 6.创建运行目录

[root@jeames ~]# mkdir /data[root@jeames ~]# chown admin:admin /data## 切换到admin用户下执行,如果出現提示符不对,执行以下[root@jeames ~]# cp /etc/skel/.bashrc /home/admin[root@jeames ~]# cp /etc/skel/.bash_profile /home/admin## 创建目录[admin@jeames ~]$ mkdir -p /data/{observer01,observer02,obproxy}[admin@jeames ~]$ mkdir -p /data/observer{01,02}/store/{sort_dir,sstable,clog,ilog,slog}

📣 7.配置环境变量

[root@jeames ~]# cd /home/admin[root@jeames admin]# chown -R admin:admin .bash_profile[root@jeames admin]# chmod +x .bash_profile##新建.bash_history[root@jeames admin]# vi .bash_history[root@jeames admin]# chmod 775 .bash_history

--
[root@jeames ~]# su - admin[admin@jeames ~]$
cat>> ~/.bash_profile <<"EOF"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/oceanbase/lib/
EOF[admin@jeames ~]$ echo"export PATH=$PATH:/home/admin/oceanbase/bin:/home/admin/obproxy-3.2.0/bin">> /home/admin/.bash_profile

##变量生效[admin@jeames ~]$ source ~/.bash_profile

📣 8.启动OB进程

[admin@jeames ~]$ cd /data/observer01/ && /home/admin/oceanbase/bin/observer -r "192.168.1.54:2882:2881;192.168.1.54:3882:3881;192.168.1.54:4882:4881" -o __min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=50G,enable_syslog_recycle=True,max_syslog_file_count=10 -z zone1 -p 2881 -P 2882 -c 20221003 -d /data/observer01/store -i ens33 -l INFO

[admin@jeames ~]$ cd /data/observer02/ && /home/admin/oceanbase/bin/observer -r "192.168.1.54:2882:2881;192.168.1.54:3882:3881;192.168.1.54:4882:4881" -o __min_full_resource_pool_memory=268435456,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=16,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,sys_bkgd_migration_retry_num=3,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_size=50G,enable_syslog_recycle=True,max_syslog_file_count=10 -z zone2 -p 3881 -P 3882 -c 20221003 -d /data/observer02/store -i ens33 -l INFO

注意:ens33为本地网卡

1. -d 是指定存放 OB节点的数据文件和日志文件的目录。这个目录下必须存在几个子目录。如果你重装了,把 -d 的目录清空重新创建。
2. -r 是指定OB节点的信息。上面是单节点。后面再看三节点的示例。
3. -o 是指定OB进程启动参数,如果你熟悉OB参数,可以在这里调整。这里的 memory_limit=8G,表示启动一个8G的OB进程。如果你机器实际内存比这个大,可以改大它。内存越大的话,你甚至可以去掉这些内存相关的参数。data_size是数据文件大小,确保可以分配出来并且分配后剩余空间比例不低于10%以及是内存 2 倍以上。
4. -i 是网卡名,跟 -r 后面的IP要对应上。
5. 启动目录改到 /data/observer01下,这样相关的运行日志会在这个目录下。后面还要启动多个节点,每个节点的observer进程运行日志是分开存放的。

#以上命令中指定的参数作用可参考obd自动部署过程yaml文件的说明,
https://gitee.com/oceanbase/obdeploy/tree/master/example

# 查看进程信息[admin@jeames ~]$ ps -ef |grep observer
[admin@jeames ~]$ netstat -tulnp |grep88(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        000.0.0.0:3882            0.0.0.0:*               LISTEN      2134/observer       
tcp        000.0.0.0:2881            0.0.0.0:*               LISTEN      2079/observer       
tcp        000.0.0.0:2882            0.0.0.0:*               LISTEN      2079/observer       
tcp        000.0.0.0:3881            0.0.0.0:*               LISTEN      2134/observer     

在这里插入图片描述

📣 9 初始化集群

# 默认空密码[admin@jeames ~]$ mysql -h192.168.1.54 -uroot -P2881 -p -c -A
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3221225472
Server version: 5.7.25 OceanBase 3.1.4 (r10000092022071511-b4bfa011ceaef428782dcb65ae89190c40b78c2f)(Built Jul 15202211:45:14)

Copyright (c)2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h'for help. Type '\c' to clear the current input statement.

mysql>set session ob_query_timeout=1000000000; 

--单节点集群初始化
mysql> alter system bootstrap ZONE 'zone1' SERVER '192.168.1.54:2882';
Query OK, 0 rows affected (2 min 37.70 sec)

--多节点集群初始化
mysql> alter system bootstrap ZONE 'zone1' SERVER '192.168.1.54:2882',ZONE 'zone2' SERVER '192.168.1.54:3882';
Query OK, 0 rows affected (4 min 7.39 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          || information_schema || mysql              || SYS                || LBACSYS            || ORAAUDITOR         ||test|
+--------------------+
7 rows inset(0.71 sec)# 修改root密码
mysql> alter user root identified by 'jem';
mysql> create user proxyro identified by 'jem';
mysql> grant select on *.* to proxyro;

mysql> create database jem_db;

在这里插入图片描述

📣 10.配置obproxy

obproxy启动后,默认用 root@proxysys 登录,密码为空。需要改密码(通过proxy参数obproxy_sys_password指定)。
obproxy启动后,还需要修改proxyro的密码(通过proxy参数observer_sys_password指定),设置为跟OB集群里创建的proxyro密码一致才能链接那个OB集群。

1.启动obproxy,其中-c 对应集群的名称,和前面的observer的启动参数对应。
[admin@jeames ~]$ cd /data/observer01/ && /home/admin/oceanbase/bin/observer -r 

cd /data/obproxy && /home/admin/oceanbase/bin/obproxy -r "192.168.1.54:2881;192.168.1.54:3881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c 20221003[admin@jeames ~]$ netstat -ntlp |grep obproxy
[admin@jeames ~]$ ps -ef|grep ob
[admin@jeames ~]$ netstat -ntlp |grep88[admin@jeames ~]$ mysql -h192.168.1.54 -uroot@proxysys -P2883 -p
MySQL [(none)]> show proxyconfig like '%sys_password%';
MySQL [(none)]> alter proxyconfig setobproxy_sys_password='jem';
MySQL [(none)]> alter proxyconfig setobserver_sys_password='jem';[admin@jeames ~]$ mysql -h192.168.1.54 -uroot@sys -P2883 -plhr -A oceanbase
MySQL [oceanbase]>select * from oceanbase.__all_server;

📣 11.登录ob数据库并创建租户

1.创建资源单元、资源池、租户
mysql -uroot@sys -pjem -h192.168.1.54 -P2883

MySQL [oceanbase]> CREATE resource unit S4C1G max_cpu=4, min_cpu=4, max_memory='1G', min_memory='1G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='1024G'; 

MySQL [oceanbase]> CREATE resource pool my_pool unit ='S4C1G', unit_num =1;

MySQL [oceanbase]> create tenant obmysql resource_pool_list=('my_pool'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8'setob_tcp_invited_nodes='%', ob_compatibility_mode='mysql';2.登录obmysql或tenant并创建数据库及表等
C:\Users\wangd> mysql -uroot@obmysql -p -h192.168.1.54 -P2883

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          || information_schema || mysql              ||test|
+--------------------+

MySQL [test]> create database jemdb charset utf8mb4;

在这里插入图片描述

标签: oceanbase 5g 数据库

本文转载自: https://blog.csdn.net/weixin_41645135/article/details/127157063
版权归原作者 IT邦德 所有, 如有侵权,请联系我们删除。

“猿创征文|OceanBase社区版集群部署”的评论:

还没有评论