oceanbase(ob)基于备份集搭建备租户方式

一、搭建备租户方式(基于备份的方式)

注意事项:要有一个源端OB集群和目标端OB集群。

1、新建主租户(如果原来有主租户可是省略)

#创建unit
create resource unit ut_2c2g max_cpu=2, memory_size='2G', max_iops=10000,log_disk_size='20G';

#创建资源池
create resource pool pl_2c2g unit=ut_2c2g, unit_num=1;

#创建mysql租户
CREATE TENANT IF NOT EXISTS test_tenant PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('pl_2c2g'), CHARSET='utf8mb4' SET ob_tcp_invited_nodes TO '%';

2、开启主租户日志归档

#租户调整指定租户的日志归档并发度
ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = test_tenant;

#设置归档目录
ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data1/nfs/log' TENANT = test_tenant;

#开启归档
ALTER SYSTEM ARCHIVELOG TENANT = test_tenant;

#查看归档状态
SELECT DEST_ID, ROUND_ID, DEST_NO, STATUS, CHECKPOINT_SCN, CHECKPOINT_SCN_DISPLAY, PATH FROM oceanbase.CDB_OB_ARCHIVELOG;

3、开启物理备份

#设置备份目录
ALTER SYSTEM SET DATA_BACKUP_DEST= 'file:///data1/nfs/data' TENANT = test_tenant;

#设置权重
ALTER SYSTEM SET ha_low_thread_score = 4 TENANT = 'test_tenant';

#物理备份
ALTER SYSTEM BACKUP TENANT = test_tenant PLUS ARCHIVELOG;

#查看备份进度
SELECT * FROM oceanbase.CDB_OB_BACKUP_JOBS\G
 
#查看备份集
SELECT * FROM oceanbase.DBA_OB_BACKUP_JOB_HISTORY;

2、创建数据库用户

MySQL

-- obclient -h127.0.0.1 -P2881 -uroot@test_tenant -c -A oceanbase
  
CREATE USER repl IDENTIFIED BY '123456';
GRANT SELECT ON oceanbase.* TO repl;

Oracle

-- obclient -h127.0.0.1 -P2881 -usys@oraclet2 -c -A
  
CREATE USER css IDENTIFIED BY 123456;
-- V4.2.2 直接授予角色
GRANT STANDBY_REPLICATION TO css;
  
-- V4.2.1 的需要手动授予以下权限
GRANT CONNECT TO rep_user;
GRANT SELECT on SYS.GV$OB_LOG_STAT to rep_user;
GRANT SELECT on SYS.GV$OB_UNITS to rep_user;
GRANT SELECT on SYS.GV$OB_PARAMETERS to rep_user;
GRANT SELECT on SYS.DBA_OB_ACCESS_POINT to rep_user;
GRANT SELECT on SYS.DBA_OB_TENANTS to rep_user;
GRANT SELECT on SYS.DBA_OB_LS to rep_user;

获取访问主库信息

该步骤为下一步创建空备租户提前准备连接信息
sys租户获取所有租户的连接信息

SELECT * FROM oceanbase.CDB_OB_ACCESS_POINT;
+-----------+-------------+--------------+----------+
| TENANT_ID | TENANT_NAME | SVR_IP       | SQL_PORT |
+-----------+-------------+--------------+----------+
|         1 | sys         | 10.10.30.160 |     2881 |
|      1001 | META$1002   | 10.10.30.160 |     2881 |
|      1002 | mysqlt1     | 10.10.30.160 |     2881 |
|      1003 | META$1004   | 10.10.30.160 |     2881 |
|      1004 | oraclet2    | 10.10.30.160 |     2881 |
+-----------+-------------+--------------+----------+

MySQL

SELECT * FROM oceanbase.DBA_OB_ACCESS_POINT;

Oracle

SELECT * FROM SYS.DBA_OB_ACCESS_POINT;

创建备租户

#创建unit
create resource unit ut_2c2g max_cpu=2, memory_size='2G', max_iops=10000,log_disk_size='20G';

#创建资源池
create resource pool pl_2c2g unit=ut_2c2g, unit_num=1;

#恢复方式
ALTER SYSTEM RESTORE test_tenant FROM 'file:///data1/nfs/data,log' WITH  'pool_list=pl_2c2g&concurrency=50';

持续复制

ALTER SYSTEM RECOVER STANDBY TENANT = test_tenant UNTIL UNLIMITED;
以下是基于 OceanBase 官方文档和常见实践,基于 API 创建租户的一般步骤及示例代码(以 Python 和 OceanBase 的 MySQL 协议 API 为例): ### 前提条件 - 已经安装并启动了 OceanBase 数据库,且拥有创建租户的权限。 - 安装了相应的 Python MySQL 驱动,例如 `mysql-connector-python`。 ### 实现步骤 #### 1. 连接到 OceanBase 数据库 ```python import mysql.connector # 连接到 OceanBase 数据库 config = { 'user': 'root', 'password': 'your_password', 'host': 'your_host', 'port': 'your_port', 'database': 'oceanbase' } try: conn = mysql.connector.connect(**config) cursor = conn.cursor() print("成功连接到 OceanBase 数据库") except mysql.connector.Error as err: print(f"连接数据库失败: {err}") ``` #### 2. 创建租户OceanBase 中,可以使用 SQL 语句来创建租户。以下是一个创建租户的示例 SQL 语句: ```python # 创建租户的 SQL 语句 create_tenant_sql = """ CREATE TENANT IF NOT EXISTS your_tenant_name RESOURCE_POOL_LIST = (your_resource_pool_name), CHARACTER SET = 'utf8mb4', LOCALE = 'zh_CN.utf8'; """ try: cursor.execute(create_tenant_sql) conn.commit() print("成功创建租户") except mysql.connector.Error as err: print(f"创建租户失败: {err}") conn.rollback() ``` #### 3. 关闭数据库连接 ```python # 关闭游标和连接 cursor.close() conn.close() print("数据库连接已关闭") ``` ### 代码解释 1. **连接数据库**:使用 `mysql.connector` 库连接到 OceanBase 数据库。 2. **创建租户**:使用 `CREATE TENANT` 语句创建一个新的租户。需要指定租户名称、资源池列表、字符集和语言环境等信息。 3. **关闭连接**:操作完成后,关闭游标和数据库连接。 ### 注意事项 - 请将 `your_password`、`your_host`、`your_port`、`your_tenant_name` 和 `your_resource_pool_name` 替换为实际的值。 - 在创建租户之前,需要确保已经创建了相应的资源池。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值