m6米乐安卓版下载-米乐app官网下载
2

从入门到实战 centos7 手动部暑三节点 oceanbase 社区版 -m6米乐安卓版下载

shunwah 2022-06-20
128

当您学习完使用 obd 自动化部署 oceanbase 集群的方法原理后,就可以再去测试手动部署一套 oceanbase 集群。如果 obd 的功能不满足您的需求时,您可以自己写程序脚本做 oceanbase 集群的部署,或者在集群出异常的时候,能够手动做一些应急处理。

作者:马顺华

从事运维管理工作多年,目前就职于某科技有限公司,熟悉运维自动化、oceanbase部署运维、mysql 运维以及各种云平台技术和产品。并已获得oceanbase认证obca、obcp证书。

前言

obdeploy 简称 obd 是 oceanbase 集群部署的工具,当机器资源和环境都初始化正确后,通过一些简单的命令就能非常快速的完成 oceanbase 部署。但是对于初学者来讲,就会比较困惑,obdeploy 到底执行了哪些操作?具体操作步骤有哪些?虽然部署成功了,但是可能对于细节还是一头雾水。如果部署失败了,也不知道为什么报错,排障的过程比较麻烦。所以我们本节测试,我将尝试脱离 obdeploy,手动去部署 oceanbase 集群,这样就可以了解一下具体的安装细节。新手觉得难的主要原因在于还不太了解ob的步骤原理,所以你想快速了解ob,可以在脱离 obdeploy 的情况下,手动部署 oceanbase。实际过程并不复杂,很容易掌握,也有实际意义。


部署准备

oceanbase 是一个分布式集群产品,在生产环境至少是三台机器。学习环境可以部署单机版本。oceanbase 的部署跟传统数据库的部署有很多共同的地方,对操作系统硬件、软件设置、文件系统等实践建议。

oceanbase是一个集群数据库,至少要三个节点。通常三个节点是要在三台机器上。本文介绍手动部署 oceanbase 集群三节点的方法,使用该方法需要通过中控机直接远程登录到 oceanbase 节点上部署启动 observer 进程,并在中控机上部署 obproxy 进程。

部署资源要求

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


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

oceanbase 对操作系统也有一些要求,目前支持下面这些系统:

  • redhat / centos 7.x/8.x
  • suse / opensuse 15.x
  • anlios 7.x/8.x
  • debian 9.x
  • ubuntu 20.x

测试环镜资源信息

机器类型主机配置备注
oscentos 7.4 
中控机 /obdcpu:8c内存:16g
目标机器 /observercpu:8c内存:32g
系统盘 /dev/vda 100glvs分区、文件系统:ext4
数据盘 /datadev/vdb 200ggpt分区、文件系统:xfs
事务日志盘 /redodev/vdc 100ggpt分区、文件系统:xfs


资源规划

角色机器ip备注
obd112.127.2.131中控机
observer112.127.2.120{2881,2882}, {3881,3882} zone1
 112.127.2.121{2881,2882}, {3881,3882} zone2
 112.127.2.122{2881,2882}, {3881,3882} zone3
obproxy112.127.2.131{2883,2884} 反向代理
obclient112.127.2.131ob命令行客户端

目录规划

软件包默认安装目录是 : /home/admin/oceanbase 目录结构如下:

目录路径(相对于工作目录)备注
etc、etc2、etc3配置文件所在目录。
log运行日志目录。
run运行输出目录,输出 pid 文件。
store数据(包括日志)所在总目录。
store/clogcommit log 所在目录。
store/ilogilog 所在目录。
store/slogslog 所在目录。
store/sstable数据文件 block file 所在目录。

一、学习如何使用 obd 自动化部署多节点集群

1、oceanbase 社区版教程入门指引

链接:


2、官方文档学习

链接:


3、官方视频学习

为您介绍手动部署 oceanbase 三副本集群

链接:


4、官方书籍学习

数据库博大精深,需要系统学习数据库理论知识,如果你想从零开始学习数据库不用先学习mysql和oracle,这本书直接带你从零开始学习数据库,你会发现再学习mysql和oracle等数据库时,已经自通mysql和oracle数据库啦。

推荐学习 oceanbase 开源社区的《oceanbase原生分布式数据库实战教程实体书oceanbase原生分布式数据库实战教程**电子书在 oceanbase 社区版博客阿里云**都有发布。这本与开源社区用户共创的书籍共八章,从 oceanbase 数据库概述开始,到安装部署,到使用,到迁移、再到运维、测试、性能诊断,最后是 oceanbase 生态工具的使用,可以带你全面掌握 oceanbase 实战使用技能!

1)电子文档

链接: 


2)电子书

链接:


3)实体书


二、磁盘文件系统划分

(所有目标节点都要设置)

1、查看原磁盘df -th


2、查看待增加磁盘fdisk-l


3、磁盘划分(gpt)分区

使用 parted 技术对 /dev/vdb 进行划分。gpt分区大小请根据实际磁盘大小调整参数。需要登录到每个节点上手动初始化。

yum -y install gdisk cloud-utils-growpart parted e2fsprogs


[root@caip120 ~]# parted /dev/sdb
# 将设备转换成gpt分区格式。
(parted) mklabel gpt
#划分一个主分区,并设置分区的开始位置和结束位置
#使用全部空间创建一个主分区(请根据实际创建)。通常于前面留出1m的空余空间。
(parted) mkpart primary 1 100%  
# 检查分区是否对齐(如有多个分区,均需检查),此处显示“1 aligned”表示已对齐。
(parted) align-check optimal 1  
#查看分区表
(parted) print
#退出
(parted) quit

4、查看分区

此时使用fdisk -l应能查看到分区/dev/sdb1(根据实际显示分区名)。

[root@caip120 ~]# fdisk -l
#格式化文件系统(请使用实际的分区名和文件系统类型)
mkfs.xfs /dev/sdb1     --xfs分区格式化
mkfs.ext4 /dev/sdb1    --ext4分区格式化
#创建挂载点目录
[root@caip120 /]# mkdir data
#使用blkid查看uuid
[root@caip120 ~]# blkid
#备份/etc/fstab,并新增加uuid
vim /etc/fstab
#使用`mount -a`验证fstab配置是否正确。
[root@caip120 ~]# mount -a



5、挂载磁盘

重复上面操作、同上、依次挂载好对应磁盘和目录

(/data、/redo、)
mkdir -p /data  (/dev/sdb)
mkdir -p /redo   (/dev/sdc)

6、检查磁盘

检查划分好的磁盘df -h #检查


三、配置安装用户

oceanbase 本质上是一个软件,可以运行在任意用户下。oceanbase 软件包默认解压目录是在 /home/admin/ 下,生产环境默认也是安装在用户 admin 下。社区版的软件 rpm 包也是这个特点,支持部署在任意用户的任意目录下。

根据官方介绍,建议安装部署在普通用户下,此次测试均以用户 admin 为例。

注意 为 admin 用户赋与 sudo 权限不是必须的,只是为了某些时候方便操作。您可以结合企业安全规范决定是否执行。

1、创建admin用户并设置密码

(所有目标节点都要设置):

[root@caip120 /]# useradd -u admin -d /home/admin -s /bin/bash && echo "sixlens2881" |passwd --stdin admin


2、更改目录属主属组权限

(所有目标节点都要设置):

[root@caip120 /]# chown -r admin.admin /data && chown -r admin.admin /redo && chown -r admin.admin /home/admin


注意:先创建admin用户,后mount挂载/home/admin/ocaeabase 否则创建用户提示家目录存在

3、用户 admin 授予 sudo 权限配置

(所有目标节点都要设置)

[root@caip120 /]# vim /etc/sudoers
## allow root to run any commands anywhere
admin    all=(all)       all


注意:sudoers拒绝所有用户读写,root用户也无权限,需增加权限后更改 #chmod u w /etc/sudoers

四、初始化服务器环境

oceanbase 数据库是单进程软件,需要访问网络,需要打开多个文件以及开启很多 tcp 连接,所以需要修改内核参数和用户会话设置。

注意 您如果在独立服务器上部署 obproxy,也需按本文要求初始化服务器环境。

1、配置 ssh 免密登录

如果您是完全手动部署 oceanbase 集群,登录到相应节点上安装相关软件包,并启动 observer 或 obproxy 进程,则不需要配置 ssh 免密登录。

如果您是使用自动化技术部署 oceanbase 集群,所有的命令通过中控机向 oceanbase 集群节点发出。则需要配置中控机中 obd 运行的用户到 oceanbase 集群节点中 observer 安装的用户的 ssh 免密登录。

此次测试为手动部署 oceanbase 集群,不需要配置 ssh 免密登录

2、配置时间同步服务

oceanbase 数据库是分布式数据库产品,是一个集群软件,对各个节点之间的时间同步性有要求。技术上要求所有节点之间的时间误差需控制在 50ms 以内。实际生产环境中为了稳定性和性能考虑,建议时间误差控制在 10ms 以内。

(中控节点作为时间服务器,以root身份配置):

1)判断是否使用 ntpd 同步时间
[root@caip131 ~]# systemctl status ntpd
unit ntpd.service could not be found.    #未安装


出现上述提示,表示没有使用 ntpd,需要安装 chrony 服务

2)安装 chrony 配置时间同步服务

centos 或 redhat 7.x 版本推荐使用 chrony 服务做时间源

# yum remove ntp -y
# yum -y install chrony
# vim /etc/chrony.conf
server ntp1.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
allow all
stratumweight 0
local stratum 10

3)配置时间同步服务器

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

[root@caip131 ~]# vim /etc/chrony.conf

4)配置时间同步服务器开机自启
[root@caip131 /]#  systemctl start chronyd && systemctl enable chronyd && systemctl status chronyd   #设置开机自启

5)客户端配置

(所有目标节点)

[root@caip120 /]# echo "* * * * * /sbin/ntpdate -u 172.20.2.131 2>&1 1>>/tmp/ntpdate.log" >> /var/spool/cron/root
[root@caip121 /]# echo "* * * * * /sbin/ntpdate -u 172.20.2.131 2>&1 1>>/tmp/ntpdate.log" >> /var/spool/cron/root
[root@caip121 /]# echo "* * * * * /sbin/ntpdate -u 172.20.2.131 2>&1 1>>/tmp/ntpdate.log" >> /var/spool/cron/root



6)中控机检查时间同步

(中控机执行)

[root@caip131 /]#  for i in 120 121 122 ;do clockdiff 172.20.2.$i;done
检查和目标节点时间误差常用命令是: clockdiff

7)客户端检查时间同步

客户端检查时间同步(所有目标节点)

[root@caip120 /]# clockdiff 112.127.2.131  #目标机到中控机之间时间同步检查
[root@caip121 /]# clockdiff 112.127.2.131  #目标机到中控机之间时间同步检查
[root@caip122 /]# clockdiff 112.127.2.131  #目标机到中控机之间时间同步检查

如果有机子clockdiff报错,使用tsandaddr

# ping -t tsandaddr 112.127.2.131  
[admin@caip120 oceanbase]$ ping -t tsandaddr 112.127.2.131 -c 2


3、修改会话变量设置

(所有目标节点)

您可以通过配置 limits.conf 修改会话限制。oceanbase 数据库的进程涉及的限制包括:线程最大栈空间大小(stack)、最大文件句柄数(open files)和 core 文件大小(core file size)。

您可以使用以下两种方法修改资源限制:

  • 通过启动时在会话级别修改。如:ulimit -c unlimited,通过此方法修改只影响当前会话。如果会话断开之后重连,则又会是默认配置。

  • 通过配置文件 /etc/security/limits.conf 在全局级别修改。

    注意 修改后,已经登录的会话需要退出后重新登录才生效。

全局修改配置limits.conf(所有目标节点)最大文件句柄数设置为 655350,core 文件大小设置为 unlimited 。

[root@caip120 /]# 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,查看配置是否生效:

[root@caip120 /]# ulimit -a


4、内核参数修改

修改(所有目标节点)配置文件 /etc/sysctl.conf

[root@caip120 /]# vim /etc/sysctl.conf
fs.aio-max-nr=1048576
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


加载配置,使配置生效

[root@caip120 /]# sysctl -p  


5、关闭防火墙和 selinux

不同操作系统的防火墙设置可能会有不同,本次是以 centos 7 系统为例进行测试。(所有目标节点都要设置)

1)查看防火墙状态
[root@caip120 /]# systemctl status firewalld   

2)关闭防火墙

如果是 inactive 那就不用管。如果是 active,那就永久关闭

[root@caip120 /]# systemctl stop firewalld
[root@caip120 /]# systemctl disable firewalld 
[root@caip120 /]# systemctl status firewalld
3)关闭 selinux

修改 selinux 配置文件中的 selinux 选项。

[root@caip120 /]# vim /etc/selinux/config
# this file controls the state of selinux on the system.
# selinux= can take one of these three values:
#     enforcing - selinux security policy is enforced.
#     permissive - selinux prints warnings instead of enforcing.
#     disabled - no selinux policy is loaded.
selinux=disabled  


配置文件修改后只会重启主机后生效,还需要使用下面命令立即生效。

[root@caip120 /]# setenforce 0

6、安装相关工具软件

未安装工具后面相关命令无法执行(所有目标节点都要设置)

[root@caip120 /]# yum install epel-release -y
[root@caip120 /]# yum install -y net-tools lrzsz tree htop dstat sysvinit-tools
查看 observer 进程特点
yum -y install sysvinit-tools
ps -ef|grep observer
查看进程监听端口
yum install -y net-tools
netstat -ntlp
查看 oceanbase 工作目录结构
yum -y install tree
tree /root/ob
tree /root/obce/   


五、安装 oceanbase 软件包

oceanbase 本质上是一个单进程的软件,可执行文件名叫 observer 。可以通过 rpm 包安装,也可以通过源码直接编译安装。手动部署,需要安装 oceanbase 的 observer 软件 。本次手动测试是通过 rpm 包方式安装。

1、新建soft软件包临时目录

(所有目标机器切换admin用户)

[root@caip120 /]# su - admin
[admin@caip120 ~]$ mkdir ~/soft
[root@caip121 /]# su - admin
[admin@caip121 ~]$ mkdir ~/soft
[root@caip122 /]# su - admin
[admin@caip122 ~]$ mkdir ~/soft


2、初始化数据目录

这一步只用于第一次部署时执行。如果是重复部署,目录已经创建的情况下,不需要再执行这一步。

手动部署时,oceanbase 节点上的相关目录都需要手动创建。

(所有目标机器)创建oceanbase目录,配置软连接:

[admin@caip121 ~]$ mkdir -p ~/oceanbase/store/obdemo  /data/obdemo/{sstable,etc3} /redo/obdemo/{clog,ilog,slog,etc2}
[admin@caip121 ~]$ for f in {clog,ilog,slog,etc2}; do ln -s /redo/obdemo/$f ~/oceanbase/store/obdemo/$f ; done
[admin@caip121 ~]$ for f in {sstable,etc3}; do ln -s /data/obdemo/$f ~/oceanbase/store/obdemo/$f; done    




3、oceanbase 软件包下载:

**注意:**版本号后期会变,以实际版本为主。

1)ob阿里云rpm包下载地址
https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/

2)安装 oceanbase 软件包

手动部署,需要安装 oceanbase 的 observer 软件 。(所有目标机器)准备好 oceanbase 的 rpm 包,安装oceanbase-ce oceanbase-ce-libs libobclient obclient




ivh一键安装软件包

注意:本次测试的安装包可能不是最新版本,建议下载最新的安装包,详细信息请参考ob官方网站。

[admin@caip120 soft]$ sudo rpm -ivh *.rpm  #
rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm
rpm -ivh oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm
rpm -ivh oceanbase-ce-3.1.1-4.el7.x86_64.rpm
rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm
rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm



3)查询已安装rpm包

(所有目标机器)

[admin@caip121 soft]$ rpm -qa |grep oceanbase-ce-libs-3.1.1-4.el7
[admin@caip121 soft]$ rpm -qa |grep libobclient-2.0.0-2.el7
[admin@caip121 soft]$ rpm -qa |grep obclient-2.0.0-2.el7
[admin@caip121 soft]$ rpm -qa |grep oceanbase-ce-3.1.1-4.el7
[admin@caip121 soft]$ rpm -qa |grep obproxy-3.2.0-1.el7
sudo rpm -e --nodeps




软件包默认安装目录是 : /home/admin/oceanbase

4)检查目录结构,目录结构如下:

(所有目标机器)

[admin@caip120 ~]$ tree ~/oceanbase/store/ /data/ /redo/
/home/admin/oceanbase/store/
└── obdemo
    ├── clog -> /redo/obdemo/clog
    ├── etc2 -> /redo/obdemo/etc2
    ├── etc3 -> /data/obdemo/etc3
    ├── ilog -> /redo/obdemo/ilog
    ├── slog -> /redo/obdemo/slog
    └── sstable -> /data/obdemo/sstable
/data/
├── nfs
└── obdemo
    ├── etc3
    └── sstable
/redo/
└── obdemo
    ├── clog
    ├── etc2
    ├── ilog
    └── slog
16 directories, 0 files




提示:您也可以对 rpm 包直接解压到指定目录,就不用安装到默认目录。

(可选)清理目录和数据

第一次部署不需要执行这步。

如果后面安装部署失败,必需要清空目录和数据重新部署,否刚还会报错。

kill -9 `pidof observer`
/bin/rm -rf ~/oceanbase/store/obdemo/*/*

六、启动 observer

每个机器的启动参数大部分一样,只有少数不一样,需要特别留意。

1、启动三节点observer

1)启动第一台服务器112.127.2.120 (zone1)
echo 'export ld_library_path=$ld_library_path:~/oceanbase/lib' >> ~/.bash_profile
. ~/.bash_profile  #将 oceanbase 数据库的 lib 加到环境变量 ld_library_path 中
cd ~/oceanbase && bin/observer -i ens192 -p 2881 -p 2882 -z zone1 -d ~/oceanbase/store/obdemo -r '112.127.2.120:2882:2881;112.127.2.121:2882:2881;112.127.2.122:2882:2881' -c 20220217 -n obdemo -o "memory_limit=20g,cache_wash_threshold=8g,__min_full_resource_pool_memory=268435456,system_memory=3g,memory_chunk_cache_size=128m,cpu_count=16,net_thread_count=4,datafile_size=50g,stack_size=1536k,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"

2)启动第二台服务器172.20.2.121 (zone2)
echo 'export ld_library_path=$ld_library_path:~/oceanbase/lib' >> ~/.bash_profile
. ~/.bash_profile  #将 oceanbase 数据库的 lib 加到环境变量 ld_library_path 中
cd ~/oceanbase && bin/observer -i ens192 -p 2881 -p 2882 -z zone2 -d ~/oceanbase/store/obdemo -r '112.127.2.120:2882:2881;112.127.2.121:2882:2881;112.127.2.122:2882:2881' -c 20220217 -n obdemo -o "memory_limit=20g,cache_wash_threshold=8g,__min_full_resource_pool_memory=268435456,system_memory=3g,memory_chunk_cache_size=128m,cpu_count=16,net_thread_count=4,datafile_size=50g,stack_size=1536k,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"

3)启动第三台服务器172.20.2.122 (zone3)
echo 'export ld_library_path=$ld_library_path:~/oceanbase/lib' >> ~/.bash_profile
. ~/.bash_profile  #将 oceanbase 数据库的 lib 加到环境变量 ld_library_path 中
cd ~/oceanbase && bin/observer -i ens192 -p 2881 -p 2882 -z zone3 -d ~/oceanbase/store/obdemo -r '112.127.2.120:2882:2881;112.127.2.121:2882:2881;112.127.2.122:2882:2881' -c 20220217 -n obdemo -o "memory_limit=20g,cache_wash_threshold=8g,__min_full_resource_pool_memory=268435456,system_memory=3g,memory_chunk_cache_size=128m,cpu_count=16,net_thread_count=4,datafile_size=50g,stack_size=1536k,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"


配置填写正确,服务启动应该不会有什么问题。

如果三个节点机型都一致,那么启动参数里只有一个参数不一样,就是 -z指定该节点是哪个 zone 。三个 zone 的三个节点初始化为一个三副本集群。后面 -o 参数不是必须的。这里主要是测试机器内存不足,所以需要指定一些影响内存的参数。如果您机器内存足够(如大于64g),则可以不需要 -o 参数部分。

4)验证服务是否启动:
[admin@caip121 oceanbase]$ ps aux |grep obs
[admin@caip121 oceanbase]$ pidof observer


进程 observer 第一次启动时,需要通过参数 -p 指定连接端口,通过参数 -p 指定节点 rpc 通信端口。默认是 -p 2881 -p 2882。进程启动成功后,几秒就可以运行到监听环节。

2、集群自举(初始化)

当 oceanbase 集群三个节点都正常启动,并且监听正常时,中控机连接到任一节点(通过 2881 端口直连),进行自举(bootstrap 集群初始化)操作。 初始密码是空

1)连接 oceanbase 集群

有一种无缝使用mysql的感觉,因为oceanbase的连接信息跟mysql连接的协议就是兼容mysql的。这么做是考虑到mysql的普及性让更多人和应用能接受oceanbase。跟传统mysql 不一样的地方是 observer 连接端口是 2881 , 连接用户名是 :root@sys ,密码是前面 obd 配置文件ex里指定的。

[admin@caip131 ~]$ obclient -h 112.127.2.120 -u root -p 2881 -p -c -a

2)执行初始化操作
mysql [(none)]> set session ob_query_timeout=1000000000; alter system bootstrap zone 'zone1' server '112.127.2.120:2882', zone 'zone2' server '112.127.2.121:2882', zone 'zone3' server '112.127.2.122:2882' ;


通常来说,只要严格按照前面步骤设置目录结构和权限、启动参数,集群自举都能成功。如果不成功,常见原因如下:

  • 集群节点之间时间同步延时超过 50ms 。
  • 集群节点之间网络延时超过 100ms 。
  • 集群节点上 observer 相关目录结构不对或者目录权限不对。
  • 集群节点上进程 observer 启动参数写的不对。注意隐含参数的名字(如__min_full_resource_pool_memory )、参数 -d 的目录是否正确、参数 -z 跟 ip 的对应关系、 参数中多了空格或分隔符错误(有的是 , ,有的是;)。
  • 集群节点可用内存低于进程 observer 启动参数 memory_limit 值。

3、登录测试

1)连接 oceanbase 集群:

bootstrap集群初始化成功后可以用root@sys系统租户连入

[admin@caip131 ~]$ obclient -h 112.127.2.120 -u root@sys -p 2881 -p -c -a

2)检查数据库

是不是有一种无缝使用mysql的感觉

mysql [(none)]> show databases;
 -------------------- 
| database           |
 -------------------- 
| oceanbase          |
| information_schema |
| mysql              |
| sys                |
| lbacsys            |
| oraauditor         |
| test               |
 -------------------- 
7 rows in set (0.005 sec)
mysql [(none)]> 


4、设置集群管理员(root@sys)密码

1)设置集群密码

集群管理员root@sys的密码默认是空的,这里需要给root@sys租户设置一个密码。

mysql [(none)]> alter user root identified by 'ob2881';
query ok, 0 rows affected (0.033 sec)

2)测试连接

通过 obclient 探索 oceanbase mysql 租户,使用root@sys登陆数据库。

[admin@caip131 ~]$ obclient -h 112.127.2.120 -uroot@sys -p 2881 -p -c -a oceanbase

3)查看集群状态:

通过视图查看 observer 状态

  • 如果返回结果为 active,说明 observer 处于正常运行状态。

  • 如果返回结果为 inactive,说明 observer 处于下线状态。

  • 如果返回结果为 deleting,说明 observer 处于正在被删除状态。

    mysql [oceanbase]> select * from __all_server;


5、创建proxyr用户

在oceanbase 集群上创建proxyr用户obproxy 用户名(proxyro)密码默认obproxy 连接 oceanbase 集群使用用户 proxyro 。这个用户不存在,需要提前创建:

mysql [oceanbase]> grant select on oceanbase.* to proxyro identified by 'ob2881';
query ok, 0 rows affected (0.064 sec)


七、安装 obproxy 软件包

手动部署社区版 oceanbase ,还需要手动安装 oceanbase 的 obproxy 软件 。理论上obproxy可以安装在任何机器上。如安装在observer上,或者独立的机器上,或者应用服务器上。并且obproxy由于只做路由功能,非常轻量,无状态,支持安装多个obproxy。安装多个obproxy的时候,可以再前面再通过负载均衡机制做一个vip,肩负起 obproxy的高可用和负载均衡作用。这样就不怕某个obproxy挂掉或者压力过大了。

1、m6米乐安卓版下载官网下载 obproxy 软件包


手动部署,需要安装 oceanbase 的 obproxy 软件 。(如已经安装忽略此步骤)

部署obproxy到(中控机):

[admin@caip131 ~]$ sudo rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm 


目前社区版的 obproxy 安装后的文件还是很简单的,后面可能会微调。

2、启动 obproxy

启动 obproxy 进程也推荐在软件安装目录,进程 pbproxy 会在该目录下生成目录 etc 保存 obproxy 的运行参数,以及目录 log 保存运行日志。第一次启动obproxy的时候,也需要指定一些参数。如rootservice 列表。以及指定监听端口(2883,也可以写别的任意端口,不跟已有端口冲突即可)

1)手动启动 obproxy
[admin@caip131 ~]$ cd ~/obproxy-3.2.0 && bin/obproxy -r "112.127.2.120:2881;112.127.2.121:2881;112.127.2.122:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo 


启动-c 指定的集群名obdemo和observer的集群名保持一致才能启动

2)检查 obproxy 监听

进程 obproxy 默认会监听2个端口:2883 和 2884 。

[admin@caip131 ~]$ ps -ef|grep obproxy
[admin@caip131 ~]$ netstat -ntlp |grep obproxy    


3、修改 obproxy 密码

1)登录 obproxy
[admin@caip131 obproxy-3.2.0]$ obclient -h 112.127.2.131 -u root@proxysys -p 2883 -p
enter password: 
welcome to the oceanbase.  commands end with ; or \g.
your mysql connection id is 1
server version: 5.6.25
米乐app官网下载 copyright (c) 2000, 2018, oracle, mariadb corporation ab and others.
type 'help;' or '\h' for help. type '\c' to clear the current input statement.
mysql [(none)]> 


可以看出 跟连接mysql很像,区别在于 user的格式。登录用户名:root@proxysys, 端口:2883 ,初始密码:空。

2)修改 obproxy 管理密码

修改 obproxy 用户密码是通过修改参数的方式,命令是:alter proxyconfig set

mysql [(none)]> show proxyconfig like '%sys_password%';  #测试 proxyro 连通性
 ------------------------ ------- -------------------------------- ------------- --------------- 
| name                   | value | info                           | need_reboot | visible_level |
 ------------------------ ------- -------------------------------- ------------- --------------- 
| observer_sys_password1 |       | password for observer sys user | false       | sys           |
| observer_sys_password  |       | password for observer sys user | false       | sys           |
| obproxy_sys_password   |       | password for obproxy sys user  | false       | sys           |
 ------------------------ ------- -------------------------------- ------------- --------------- 
3 rows in set (0.001 sec)
mysql [(none)]> alter proxyconfig set obproxy_sys_password = 'ob2881';
query ok, 0 rows affected (0.003 sec)   

3)测试obproxy 管理密码连接
[admin@caip131 obproxy-3.2.0]$ obclient -h 112.127.2.131 -u root@proxysys -p 2883 -p
enter password: 
welcome to the oceanbase.  commands end with ; or \g.
your mysql connection id is 3
server version: 5.6.25
米乐app官网下载 copyright (c) 2000, 2018, oracle, mariadb corporation ab and others.
type 'help;' or '\h' for help. type '\c' to clear the current input statement.
mysql [(none)]> 

4)修改 obproxy 连接 oceanbase 集群用户 proxyro 的密码。

这样 obproxy 才能跟 oceanbase 集群正常连接。这个密码就是前面 oceanbase 集群初始化后创建的用户 proxyro 的密码

mysql [(none)]> alter proxyconfig set observer_sys_password = 'ob2881';
query ok, 0 rows affected (0.003 sec)


4、测试 obproxy 连接

通过 obproxy 连接 oceanbase , 如果能查看所有会话,则说明 obproxy 部署成功

[admin@caip131 obproxy-3.2.0]$ obclient -h112.127.2.131 -uroot@sys#obdemo -p2883 -p -c -a oceanbase
enter password: 
welcome to the oceanbase.  commands end with ; or \g.
your mysql connection id is 4
server version: 5.6.25 oceanbase 3.1.1 (r4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e) (built oct 21 2021 10:33:14)
米乐app官网下载 copyright (c) 2000, 2018, oracle, mariadb corporation ab and others.
type 'help;' or '\h' for help. type '\c' to clear the current input statement.
mysql [oceanbase]> 


查看租户会话

mysql [oceanbase]> show processlist;  
mysql [oceanbase]> show full processlist;    


八、创建资源池和租户

oceanbase 数据库面向多租户设计。 在一个大集群中,您可以创建很多租户,不同的部门使用不同的租户。租户和租户之间资源已经进行了隔离,保障了相互之间访问不受影响,类似于数据库中的实例。(sys租户执行)

1、查询资源总计

1)查询系统资源总计资源
mysql [oceanbase]> select svr_ip,svr_port, cpu_total, mem_total/1024/1024/1024, disk_total/1024/1024/1024, zone from __all_virtual_server_stat;
 -------------- ---------- ----------- -------------------------- --------------------------- ------- 
| svr_ip       | svr_port | cpu_total | mem_total/1024/1024/1024 | disk_total/1024/1024/1024 | zone  |
 -------------- ---------- ----------- -------------------------- --------------------------- ------- 
| 172.20.2.120 |     2882 |        14 |          17.000000000000 |           50.000000000000 | zone1 |
| 172.20.2.121 |     2882 |        14 |          17.000000000000 |           50.000000000000 | zone2 |
| 172.20.2.122 |     2882 |        14 |          17.000000000000 |           50.000000000000 | zone3 |
 -------------- ---------- ----------- -------------------------- --------------------------- ------- 
3 rows in set (0.004 sec)   

2)查询租户已分配资源
mysql [oceanbase]> select sum(c.max_cpu), sum(c.max_memory)/1024/1024/1024 from __all_resource_pool as a, __all_unit_config as c where a.unit_config_id=c.unit_config_id;
 ---------------- ---------------------------------- 
| sum(c.max_cpu) | sum(c.max_memory)/1024/1024/1024 |
 ---------------- ---------------------------------- 
|              5 |                   5.099999999627 |
 ---------------- ---------------------------------- 
1 row in set (0.038 sec)

注意:资源池cpu共14c/17g/50g 租户已用 5c/5g 新建租户最大可用为不能超过可用资源池(超分会报错)

oceanbase 数据库默认会自动创建 sys 租户,sys 租户负责一部分 oceanbase 数据库的管理工作,并且能够访问系统元数据表,sys 自动预留了一定的资源。

2、创建资源单元

在创建租户前,需要先确定租户的资源单元配置和资源使用范围。租户使用的资源被限制在资源单元的范围内,如果当前存在的资源单元配置无法满足新租户的需要,可以新建资源单元配置。

1)创建资源单元(unitob)
mysql [oceanbase]> create resource unit unitob max_cpu = 6, max_memory = '8g', min_memory = '8g', max_iops = 100000, min_iops = 100000, max_session_num = 30000, max_disk_size = '50g';
query ok, 0 rows affected (0.070 sec)

2)查看新创建的资源单元
mysql [oceanbase]> select unit_config_id,name,max_cpu,min_cpu,max_memory,min_memory,max_disk_size from __all_unit_config;
 ---------------- ----------------- --------- --------- ------------ ------------ --------------- 
| unit_config_id | name            | max_cpu | min_cpu | max_memory | min_memory | max_disk_size |
 ---------------- ----------------- --------- --------- ------------ ------------ --------------- 
|              1 | sys_unit_config |       5 |     2.5 | 5476083302 | 4563402752 |   53687091200 |
|           1001 | unitob          |       6 |       6 | 8589934592 | 8589934592 |   53687091200 |
 ---------------- ----------------- --------- --------- ------------ ------------ --------------- 
2 rows in set (0.012 sec)


3、创建资源池(poolob)

在使用 sql 语句创建资源池前,请确认已创建了待使用的资源单元配置

mysql [oceanbase]> create resource pool poolob unit = 'unitob', unit_num = 1,zone_list = ('zone1', 'zone2', 'zone3');
query ok, 0 rows affected (0.027 sec)

  • 参数 unit_num 表示在集群的一个 zone 里面包含的资源单元个数。该值小于等于一个 zone 中的 observer 的个数。
  • 参数 zone_list 表示资源池的 zone 列表,显示该资源池的资源在哪些 zone 中被使用。

4、创建租户

oceanbase 社区版数据库仅支持一种租户: mysql 租户。只有 root 用户连接到 sys 租户(root@sys)才能执行 create tenant 命令去创建租户。新建租户后默认密码为空,需修改租户密码,以保证数据安全。

1)创建租户(tenantob)

租户就是实例,创建租户也是瞬间完成,需要关联到某个资源池。

使用 root 账号登陆到 sys 租户中,使用 mysql 或 obclient 访问 oceanbase 数据库:

mysql [oceanbase]> create tenant tenantob resource_pool_list=('poolob'), charset=utf8mb4, replica_num=3, zone_list('zone1', 'zone2', 'zone3'), primary_zone=random, locality='f@zone1,f@zone2,f@zone3' set variables ob_compatibility_mode='mysql', ob_tcp_invited_nodes='%';

2)查看租户

创建租户后,您可以通过查询 tenant 相关视图来确认租户是否创建成功。

mysql [oceanbase]> select tenant_id,tenant_name,primary_zone from __all_tenant;
 ----------- ------------- ------------------- 
| tenant_id | tenant_name | primary_zone      |
 ----------- ------------- ------------------- 
|         1 | sys         | zone1;zone2,zone3 |
|      1001 | tenantob    | random            |
 ----------- ------------- ------------------- 
2 rows in set (0.008 sec)


九、创建用户

首次使用新租户连接 oceanbase 数据库时,您必须使用 root 用户。成功连接后,您可以创建新用户连接 oceanbase 数据库。数据库在运行过程中,往往需要创建不同的用户,并为用户赋予相应的权限,一般被授予 create user 权限的用户可以创建用户。由于 create user 权限较大,默认仅集群管理员和租户管理员拥有此系统权限,其他用户如果需要创建用户,则需要被授予 create user 权限。

1、连接租户

1)登录新创建的tenantsixlens租户

(默认租户密码为空):

[admin@caip131 obproxy-3.2.0]$ obclient -h112.127.2.131 -uroot@tenantob#obdemo -p2883 -c -a oceanbase
welcome to the oceanbase.  commands end with ; or \g.
your mysql connection id is 7
server version: 5.6.25 oceanbase 3.1.1 (r4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e) (built oct 21 2021 10:33:14)
米乐app官网下载 copyright (c) 2000, 2018, oracle, mariadb corporation ab and others.
type 'help;' or '\h' for help. type '\c' to clear the current input statement.
mysql [oceanbase]> 

2)创建用户并设置密码(userob)
mysql [oceanbase]> create user 'userob' identified by 'ob2881';
query ok, 0 rows affected (0.036 sec)

3)查看创建成功的用户
mysql [oceanbase]> select user from mysql.user;
 ------------ 
| user       |
 ------------ 
| root       |
| oraauditor |
| userob     |
 ------------ 
3 rows in set (0.032 sec)


2、授权用户

oceanbase 数据库社区版(mysql模式)普通租户下的用户只能拥有该租户下对象的访问权限,权限设计与 mysql 数据库兼容。由于普通用户主要进行数据库对象的访问和操作,故必须拥有本租户对应数据库对象的访问和操作权限。普通用户通常由具有租户管理员权限的用户创建并赋权。

1)授权用户
mysql [oceanbase]> grant all privileges on *.* to userob with grant option;
query ok, 0 rows affected (0.040 sec)

2)查看用户授权

通过 show grants 语句查看某个用户被授予的权限。

mysql [oceanbase]> show grants for userob;
 ----------------------------------------------------------- 
| grants for userob@%                                       |
 ----------------------------------------------------------- 
| grant all privileges on *.* to 'userob' with grant option |
 ----------------------------------------------------------- 
1 row in set (0.020 sec)

3)租户登录测试:
[admin@caip131 obproxy-3.2.0]$ obclient -h112.127.2.131 -uuserob@tenantob#obdemo -p -p2883 -c -a oceanbase
enter password: 
welcome to the oceanbase.  commands end with ; or \g.
your mysql connection id is 8
server version: 5.6.25 oceanbase 3.1.1 (r4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e) (built oct 21 2021 10:33:14)
米乐app官网下载 copyright (c) 2000, 2018, oracle, mariadb corporation ab and others.
type 'help;' or '\h' for help. type '\c' to clear the current input statement.


3、连接白名单设置

租户白名单指的是该租户允许登录的客户端列表。(否则只能127.0.0.1登录)

1)sys租户登录
[admin@caip131 obproxy-3.2.0]$ obclient -h112.127.2.131 -uroot@sys#obdemo -p2883 -p -c -a oceanbase
enter password: 
welcome to the oceanbase.  commands end with ; or \g.
your mysql connection id is 9
server version: 5.6.25 oceanbase 3.1.1 (r4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e) (built oct 21 2021 10:33:14)
米乐app官网下载 copyright (c) 2000, 2018, oracle, mariadb corporation ab and others.
type 'help;' or '\h' for help. type '\c' to clear the current input statement.

2)租户白名单设置(tenantob)
mysql [oceanbase]> alter tenant tenantob set variables ob_tcp_invited_nodes='%';
query ok, 0 rows affected (0.005 sec)


十、创建业务数据库

设置好白名单后,再来创建业务数据库

本节主要介绍 mysql 模式中数据库的创建语句及操作方法。

1、使用租户新用户登录ob集群:

[admin@caip131 obproxy-3.2.0]$ obclient -h112.127.2.131 -uuserob@tenantob#obdemo -p -p2883 -c -a oceanbase
enter password: 
welcome to the oceanbase.  commands end with ; or \g.
your mysql connection id is 10
server version: 5.6.25 oceanbase 3.1.1 (r4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e) (built oct 21 2021 10:33:14)
米乐app官网下载 copyright (c) 2000, 2018, oracle, mariadb corporation ab and others.
type 'help;' or '\h' for help. type '\c' to clear the current input statement.


2、创建测试表:

mysql [oceanbase]> create database obtest;
query ok, 1 row affected (0.047 sec)
mysql [oceanbase]> use obtest;
database changed
mysql [obtest]> create table obtest (id int,name varchar(20));
query ok, 0 rows affected (0.175 sec)
mysql [obtest]> insert into obtest(id,name) values(20220217,"obdemo");
query ok, 1 row affected (0.049 sec)
mysql [obtest]> show tables;
 ------------------ 
| tables_in_obtest |
 ------------------ 
| obtest           |
 ------------------ 
1 row in set (0.024 sec)
mysql [obtest]> select * from obtest;
 ---------- -------- 
| id       | name   |
 ---------- -------- 
| 20220217 | obdemo |
 ---------- -------- 
1 row in set (0.008 sec)


十一、寻求帮助

1、官方社区问答板块寻求帮助

ob开源团队老师和同学非常乐于跟用户交流ob技术。你可以在oceanbase 社区问答板块提问、分享、查找之前别人遇到过的问题?在寻求帮助的过程中, 也不断的锻炼自己, 让自己的知识越来越丰富。

问答链接:


2、官方钉钉群寻求帮助

ob开源团队老师和同学非常乐于跟用户交流ob技术。加入钉钉社群,提问、分享、查找之前别人遇到过的问题? 在寻求帮助的过程中, 也不断的锻炼自己, 让自己的知识越来越丰富。

钉钉群号 33254054



结语:

使用obd自动化安装部署社区版 oceanbase 后,再手动部署 oceanbase 集群,整体还是有些难度的。不过已经有自动部署经验了,再手动部署时细心一点多检查各种参数再执行。最后,将所有存在的问题记录,并且在obm6米乐安卓版下载官网找出解决建议,参照建议解决问题,并再次运行环境检查。ob官方网站文档中心提供了比较详细的资料,按照文档提示正确设置即可。但是在实验环境中安装还是会遇到各种问题,大家如果有机会可以自己搭建起来,对于理解ob的架构有些帮助。

  1. 有一种无缝使用mysql的感觉,因为oceanbase的连接信息跟mysql连接的协议就是兼容mysql的。这么做是考虑到mysql的普及性让更多人和应用能接受oceanbase。
  2. oceanbase关于mysql的兼容性,业务可以最大程度的使用两者的特性功能,总体来说和测试文档来看,还是有不少的期待。
  3. oceanbase集群搭建好后默认有个系统租户sys。sys租户的root用户是集群里最大权限可以定义资源规格、创建资源池、observer的扩容和缩容相关操作等等。
  4. 如果部署遇到报错,找你看得懂的error日志。或者根据错误号到m6米乐安卓版下载官网问答区查看别人发布过的问题,参考是如何解决的,可以参照建议解决问题,或在钉钉群提问。总会找到有用的线索,并再次运行环境检查。
  5. 不管是官方文档部署还是网络方法部署,只是测试。在测试ob之前至少得先确保熟悉原理,在根据实际环境部署。
最后修改时间:2022-06-21 15:56:47
「喜欢文章,快来给作者赞赏墨值吧」
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

网站地图