网站首页 > 博客文章 正文
前面介绍了 OceanBase 按需选择的各种部署方案,本文接着把后半部完成。
1. 监控与管理工具
先来看一下 oceanbase 自带的服务和性能监控工具 grafana 和 prometheus,前一篇我们已经完成了它们的安装,并已启动。
1.1. Grafana
前文提到 Grafana 是一款开源的数据可视化工具,可以将数据源中的各种指标数据进行可视化展示,以便更直观地了解系统运行状态和性能指标。这里也简单的跑起来看看。
不过在这之前,先做个实验,试试把虚拟机的内存从 10G 调低到 8G 是否可行。修改之后重启服务,结果报错:内存不足,没辙只好重新改回 10G。
回到 grafana 的使用吧,在服务启动过程中可以看到 grafana 服务的地址和初始账号信息:
不过要在浏览器中打开,还需要开放端口:
[root@localhost ~]# firewall-cmd --permanent --add-port=3000/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
这时就可以在浏览器中输入 URL,按提示输入用户名密码,就可以看到服务器的性能指标了:
看起来还是不错的[给力]
1.2. Prometheus
再来看 Prometheus,它是一个开源的服务监控系统和时序数据库,其提供了通用的数据模型以及快捷数据采集、存储和查询接口。同样在启动过程中会输出该服务的相关信息:
类似的,也要先开放端口:
[root@localhost ~]# firewall-cmd --permanent --add-port=9090/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
然后在浏览器输入 URL 打开。Alerts 页面用来查看异常情况:
Status 下面的 Rules 页面,可以看到超出规则指标的警告:
2. 数据库规划
- 单机最小化集群:demo (前文已完成)
- 系统租户:sys (随集群自动创建)
- root 用户密码:123456789(密码待修改)
- 连接命令:obclient -h127.0.0.1 -P2881 -uroot@sys -p -Doceanbase -A
- 业务租户:obmysql(待创建)
- root 用户密码:123456(待创建)
- 连接命令:obclient -h127.0.0.1 -uroot@obmysql -P2881 -p123456 -A
- 业务数据库:mydb(待创建)
- user 表(待创建)
2.1. 修改系统租户的密码
系统租户 sys 的 root 用户的默认密码为空,这里把它修改为 123456789。
# admin 账号登录 linux,执行如下命令
[admin@localhost ~] obd cluster edit-config demo
# 在 oceanbase-ce/global的最后增加一行:
# root_password: 123456789,如下图
# 使修改生效
[admin@localhost ~] obd cluster reload demo
分别采用无密码和新密码来连接,验证密码设置成功:
2.2. 创建租户 obmysql(数据库实例)
在 OceanBase 中,数据是按照租户来组织的,所以首先应创建一个租户实例(数据库实例)。创建之前,应该先了解一下租户类型:
- 系统租户:集群默认创建的租户,与集群生命期一致,负责管理集群和所有租户的生命周期。系统租户数据是集群私有的,不支持物理备份恢复。
- 用户租户:用户租户是由用户创建的租户,对外提供完整的数据库功能,支持 MySQL 和 Oracle 两种兼容模式。
- Meta 租户:Meta 租户是 OceanBase 数据库内部自管理的租户,每创建一个用户租户会创建一个对应的 Meta 租户,其生命周期与用户租户保持一致。Meta 租户用于存储和管理用户租户的租户私有数据,这部分数据不需要跨库物理同步以及物理备份恢复。Meta 租户不可登录,普通用户只能通过系统租户的视图查询 Meta 租户下的数据。
部署 OceanBase 之后,建议创建用户租户进行业务操作。sys 租户仅做集群管理使用,不适合在业务场景中使用。租户创建后,租户类型无法修改,因此创建租户前请规划好租户类型。本文选择 MySQL 租户类型。
2.2.1. 创建方法一
使用 obd 工具,用法如下:
# 语法:obd cluster tenant create <deploy name> [-n <tenant name>] [flags]
# -n tenant_name
# --max-iops Max IOPS unit nuber
# --unit-num pool unit nuber
obd cluster tenant create demo -n obmysql --max-cpu=2 --memory-size=2G --log-disk-size=3G --max-iops=10000 --iops-weight=2 --unit-num=1 --charset=utf8mb4
租户创建成功后,默认管理员用户(MySQL 模式为 root,Oracle 模式为 sys)的密码为空。
[admin@localhost ~]$ obclient -h127.0.0.1 -uroot@obmysql -P2881 -p -Doceanbase -A
Enter password:
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 3221494035
Server version: OceanBase_CE 4.2.1.2 (r102000042023120514-ccdde7d34de421336c5362483d64bf2b73348bd4) (Built Dec 5 2023 14:34:01)
Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
查看租户信息,如上使用 obclient 工具连接新创建的租户后,使用下面 SQL 语句查询:
obclient [oceanbase]> select * from __all_unit_config;
obclient [oceanbase]> select * from dba_ob_tenants;
obclient [oceanbase]> show tenant;
修改允许任意主机登录,默认只能从本机登录。
# 使用租户 obmysql 的 root 用户登录
[admin@localhost ~]$ obclient -h127.0.0.1 -uroot@obmysql -P2881 -p -Doceanbase -A
# 修改允许任意主机登录
obclient [oceanbase]> alter tenant obmysql set variables ob_tcp_invited_nodes='%';
看到这里是不是有种强烈的熟悉感,没错和 MySQL 一样的操作。后面就可以把 obmysql 当作 MySQL Server 来看待。
修改租户的 root 用户密码:
# 查看当前租户
obclient [oceanbase]> show tenant;
# 修改当前租户的 root 用户的密码
obclient [oceanbase]> alter user root identified by '123456';
2.2.2. 创建方法二
使用系统租户 sys,连接到 OceanBase 服务器,执行 SQL 命令来创建一个用户租户。
- 步骤一:创建资源规格
# 使用 sys 租户的 root 用户登录
[admin@localhost ~]$ obclient -h127.0.0.1 -P2881 -uroot@sys -p123456789 -A
# 选择 oceanbase 数据库
obclient [(none)]> use oceanbase;
# 通过 DBA_OB_UNIT_CONFIGS 视图,获取已有的资源规格信息
obclient [oceanbase]> select * from dba_ob_unit_configs;
# 创建资源规格
CREATE RESOURCE UNIT dbmysql2_unit_config MEMORY_SIZE = '2G', MAX_CPU = 1, MIN_CPU = 1, LOG_DISK_SIZE = '2G', MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;
# 查看资源规格是否创建成功
obclient [oceanbase]> SELECT * FROM DBA_OB_UNIT_CONFIGS WHERE NAME = 'dbmysql2_unit_config';
- 步骤二:创建资源池
# CREATE RESOURCE POOL dbmysql2_pool UNIT='dbmysql2_unit_config', UNIT_NUM=1, ZONE_LIST=('zone1','zone2');
CREATE RESOURCE POOL dbmysql2_pool UNIT='dbmysql2_unit_config', UNIT_NUM=1;
# 查询 DBA_OB_RESOURCE_POOLS 视图,确认资源池创建成功
obclient [oceanbase]> SELECT * FROM DBA_OB_RESOURCE_POOLS WHERE NAME = 'dbmysql2_pool';
- 步骤三:创建租户
# 创建租户
# CREATE TENANT IF NOT EXISTS dbmysql2 PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('dbmysql2_pool'), charset='utf8mb4' set OB_TCP_INVITED_NODES='%';
CREATE TENANT IF NOT EXISTS dbmysql2 PRIMARY_ZONE='RANDOM', comment 'mysql tenant instance', RESOURCE_POOL_LIST=('dbmysql2_pool'), charset='utf8mb4' set OB_TCP_INVITED_NODES='%';
2.3. 连接租户 obmysql
使用新创建的租户的用户名和密码连接到 OceanBase 服务器。支持通过客户端、驱动或 ORM 框架连接到 OceanBase 数据库的租户。
# 使用租户 obmysql 的 root 用户登录
[admin@localhost ~]$ obclient -h127.0.0.1 -uroot@obmysql -P2881 -p -Doceanbase -A
[admin@localhost ~]$ obclient -h127.0.0.1 -uroot@obmysql -P2883 -p123456 -Doceanbase -A
2.4. 创建业务数据库 mydb 和 user 表
连接到相应的租户 obmysql(可以把它看作是 MySQL Server)后,就可以在其上创建自己的业务数据库了,可以创建很多个哦,和在 MySQL Server 上创建多个 DB 是一样一样的。
obclient> CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 READ WRITE;
obclient> SHOW DATABASES;
obclient> USE mydb;
obclient> CREATE TABLE user (seq INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20), gender VARCHAR(20), birthday DATE);
查看是否创建成功:
插入两条数据:
# 插入两行数据
obclient [mydb]> insert user(name, gender, birthday) values("张三", "男", "2000-01-01"),("李四", "女", "2008-02-02");
Query OK, 2 rows affected (0.038 sec)
Records: 2 Duplicates: 0 Warnings: 0
# 查看数据
obclient [mydb1]> select * from user;
3. SpringBoot3 + MyBatis + OceanBase 实现增删改查
这里不再从头开始,而是基于前面 SpringBoot3 + MyBatis + 达梦8 文章中的实现直接修改依赖,连接字符串,并微调 Mapper 接口即可实现。
3.1. 基于 dm8 的代码,修改驱动依赖,POM.xml
<!-- 把原来达梦的驱动换成 mysql 的驱动 -->
<!-- <dependency>-->
<!-- <groupId>com.dameng</groupId>-->
<!-- <artifactId>DmJdbcDriver18</artifactId>-->
<!-- <version>8.1.3.62</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
3.2. 基于 dm8 的代码实现,修改 application.yml 中的数据源配置
spring:
datasource:
#driver-class-name: dm.jdbc.driver.DmDriver
driver-class-name: com.mysql.cj.jdbc.Driver
#url: jdbc:dm://192.168.1.107:5236?schema=DEMO&genKeyNameCase=2&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&serverTimezone=Asia/Shanghai
url: jdbc:mysql://192.168.1.105:2881/mydb?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root@obmysql
password: '123456'
mybatis:
configuration:
mapUnderscoreToCamelCase: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3.3. 修改 DAO(MyBtis Mapper 接口),去掉为了达梦大小写而加的引号
- 查
@Repository
public interface UserDao {
@Select("select * from user")
List<UserEntity> list();
...
}
- 改
@Repository
public interface UserDao {
... ...
@Update({
"<script>" +
"update user " +
"<set>" +
"<if test='name != null'>name=#{name},</if> " +
"<if test='birthday != null'>birthday=#{birthday},</if> " +
"<if test='gender != null'>gender=#{gender},</if> " +
"</set> " +
"where seq=#{seq}" +
"</script>"
})
int update(UserEntity product);
... ...
}
- 删
@Repository
public interface UserDao {
...
@Delete("delete from user where seq= #{seq}")
int delete(Long seq);
...
}
- 增
@Repository
public interface UserDao {
...
@Insert(
"insert into user (name, birthday, gender) values (#{name}, #{birthday, jdbcType=DATE}, #{gender})"
)
@Options(useGeneratedKeys = true, keyProperty = "seq", keyColumn = "seq")
int insert(UserEntity product);
...
}
全文完成,感谢阅读[比心]
- 上一篇: linux安装oracle
- 下一篇: Java8 升级 Java 17:概述
猜你喜欢
- 2025-01-11 JDK 8中JAVAFX的终结:保持应用程序存活
- 2025-01-11 尝试将springboot2.7.11升级到3.2.3
- 2025-01-11 Java开发环境安装指南
- 2025-01-11 Java入门第一天
- 2025-01-11 Java后端开发岗,从基础到进阶,小白面试必问的6个技术栈
- 2025-01-11 Java Spring应用部署在单台阿里云或腾讯云Windows服务器上
- 2025-01-11 Java路径-02-Java环境配置
- 2025-01-11 600+ 道 Java面试题及答案整理(建议收藏)
- 2025-01-11 Java 近期更新:OpenJDK JDK Jakarta EE Spring等
- 2025-01-11 【基础】JAVA的JDK安装使用(收藏)
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 358℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)