当前位置: 首页 > news >正文

OceanBase 4.x 部署实践:如何从单机扩展至分布式部署

OceanBase 4.x 版本支持2种部署模式:单机部署与分布式部署,同时支持从单机平滑扩展至分布式架构。这样,可以有效解决小型业务向大型业务转型时面临的扩展难题,降低了机器资源的成本。

以下将详述如何通过命令行,实现集群扩展的操作步骤。

注:以下操作基于OceanBase 社区版 4.2版本
另:如果集群使用OCP平台做了接管,可以直接在OCP上进行扩展操作,在集群中添加zone即可。
查看集群当前情况

查看当前zone情况

obclient [oceanbase]> select * from dba_ob_zones;
+-------+----------------------------+----------------------------+--------+-----+----------------+-----------+
| ZONE  | CREATE_TIME                | MODIFY_TIME                | STATUS | IDC | REGION         | TYPE      |
+-------+----------------------------+----------------------------+--------+-----+----------------+-----------+
| zone1 | 2023-08-22 17:37:30.158883 | 2023-08-22 17:37:30.159941 | ACTIVE |     | sys_region     | ReadWrite |
+-------+----------------------------+----------------------------+--------+-----+----------------+-----------+
1 rows in set (0.021 sec)

查看当前server情况

obclient [oceanbase]> select * from dba_ob_servers;
+---------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
| SVR_IP        | SVR_PORT | ID | ZONE  | SQL_PORT | WITH_ROOTSERVER | STATUS | START_SERVICE_TIME         | STOP_TIME | BLOCK_MIGRATE_IN_TIME | CREATE_TIME                | MODIFY_TIME                | BUILD_VERSION                                                                             | LAST_OFFLINE_TIME |
+---------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
| 172.24.255.17 |     2882 |  1 | zone1 |     2881 | YES             | ACTIVE | 2023-08-22 17:37:40.814023 | NULL      | NULL                  | 2023-08-22 17:37:30.449287 | 2023-08-22 17:37:42.220860 | 4.2.0.0_100010022023081817-0bdf1c0c5674e88c5ae9a8d0ae4f8077465d7fae(Aug 18 2023 17:32:49) | NULL              |
+---------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
1 rows in set (0.001 sec)

查看当前租户副本情况

obclient [oceanbase]> SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS;
+-----------+-------------+-------------+--------------+---------------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | PRIMARY_ZONE | LOCALITY      |
+-----------+-------------+-------------+--------------+---------------+
|         1 | sys         | SYS         | RANDOM       | FULL{1}@zone1 |
|      1001 | META$1002   | META        | RANDOM       | FULL{1}@zone1 |
|      1002 | ocp         | USER        | RANDOM       | FULL{1}@zone1 |
+-----------+-------------+-------------+--------------+---------------+
3 rows in set (0.010 sec)

新节点安装启动进程

服务器环境配置,保证和已安装节点环境配置相同

具体环境配置参考官方文档:部署前准备

检查安装包,建议使用admin用户,进程启动也是用admin用户

[admin@ob2 rpms]$ ll
-rw-r--r-- 1 admin admin 86234124 Aug 22 17:45 oceanbase-ce-4.2.0.0-100010022023081817.el7.x86_64.rpm
-rw-r--r-- 1 admin admin   158316 Aug 22 17:45 oceanbase-ce-libs-4.2.0.0-100010022023081817.el7.x86_64.rpm

安装软件,先安装lib库

[root@ob2 rpms]# ll
-rw-r--r-- 1 admin admin 86234124 8月  22 17:45 oceanbase-ce-4.2.0.0-100010022023081817.el7.x86_64.rpm
-rw-r--r-- 1 admin admin   158316 8月  22 17:45 oceanbase-ce-libs-4.2.0.0-100010022023081817.el7.x86_64.rpm
[root@ob2 rpms]# rpm -ivh oceanbase-ce-libs-4.2.0.0-100010022023081817.el7.x86_64.rpm
准备中...                          ################################# [100%]
正在升级/安装...1:oceanbase-ce-libs-4.2.0.0-1000100################################# [100%]
[root@ob2 rpms]# rpm -ivh oceanbase-ce-4.2.0.0-100010022023081817.el7.x86_64.rpm
准备中...                          ################################# [100%]
正在升级/安装...1:oceanbase-ce-4.2.0.0-100010022023################################# [100%]

创建目录,保持和已安装节点目录一致

[admin@OMS rpms]# sudo mkdir -p /obdata/{sstable,slog}
[admin@OMS rpms]# sudo mkdir -p /obredo/clog
[admin@OMS rpms]# sudo mkdir -p /home/admin/myoceanbase/oceanbase/{audit,etc2,etc3,log,run}
[admin@OMS rpms]# sudo chown -R admin:admin /obdata /obredo

初始化目录,创建目录软连接

[admin@OMS rpms]# ln -s /obredo/clog /obdata/clog
[admin@OMS rpms]# ln -s /obdata /home/admin/myoceanbase/oceanbase/store

启动节点,启动前配置下环境变量

export LD_LIBRARY_PATH=/home/admin/oceanbase/lib

可以查看已启动节点进程启动命令,参考该命令,启动新的节点

[admin@ob2 ~]$ /home/admin/oceanbase/bin/observer -I 172.24.255.18 -r '172.24.255.18:2882:2881' -p 2881 -P 2882 -z zone2 -n myoceanbase -c 1 -d /obdata -o __min_full_resource_pool_memory=2147483648,enable_syslog_recycle=True,enable_syslog_wf=False,max_syslog_file_count=4,memory_limit=23G,datafile_size=209G,system_memory=5G,log_disk_size=60G,cpu_count=16
/home/admin/oceanbase/bin/observer -I 172.24.255.18 -r 172.24.255.18:2882:2881 -p 2881 -P 2882 -z zone3 -n myoceanbase -c 1 -d /obdata -o __min_full_resource_pool_memory=2147483648,enable_syslog_recycle=True,enable_syslog_wf=False,max_syslog_file_count=4,memory_limit=23G,datafile_size=209G,system_memory=5G,log_disk_size=60G,cpu_count=16
local_ip: 172.24.255.18
rs list: 172.24.255.18:2882:2881
mysql port: 2881
rpc port: 2882
zone: zone3
appname: myoceanbase
cluster id: 1
data_dir: /obdata
optstr: __min_full_resource_pool_memory=2147483648,enable_syslog_recycle=True,enable_syslog_wf=False,max_syslog_file_count=4,memory_limit=23G,datafile_size=209G,system_memory=5G,log_disk_size=60G,cpu_count=16

参数解释:

参数说明
-I | -i-I:指定待启动的节点 IP。在多机部署场景下,不能指定 127.0.0.1 作为目标 IP。
-i:指定网卡名,可通过 ifconfig 命令查看。
-p指定服务端口号,一般指定为 2881。
-P指定 RPC 端口号,一般指定为 2882。
-n指定集群名称。可自定义,不同集群名称不要重复即可。
-z指定启动的 observer 进程所属的 Zone。
-d指定集群主目录,初始化目录时创建的目录。除集群名字 $cluster_name 外,其他不要变动。
-c指定集群 ID。为一组数字,可以自定义,不同集群不要重复即可。
-l指定日志级别。
-r指定 RS 列表,格式是 $ip:2882:2881,分号分割,表示 Root Service 信息。
-o指定集群启动参数,需要根据实际情况设置。
system_memory:指定 OceanBase 内部保留内存,默认是 30G ,机器内存比较少的情况下把这个调小,影响就是可能在性能测试时有内存不足问题。
datafile_size:指定 OceanBase 数据文件 sstable 的大小(一次性初始化),根据 /data/1/ 可用空间评估,建议不少于 100G,同时又保留一些剩余空间。

添加zone

回到已安装节点并登陆

执行添加zone

obclient [oceanbase]> alter system add zone zone2;
Query OK, 0 rows affected (0.003 sec)

执行激活zone

obclient [oceanbase]> alter system start zone zone2;
Query OK, 0 rows affected (0.003 sec)obclient [oceanbase]> select * from dba_ob_zones;
+-------+----------------------------+----------------------------+--------+-----+----------------+-----------+
| ZONE  | CREATE_TIME                | MODIFY_TIME                | STATUS | IDC | REGION         | TYPE      |
+-------+----------------------------+----------------------------+--------+-----+----------------+-----------+
| zone1 | 2023-08-22 17:37:30.158883 | 2023-08-22 17:37:30.159941 | ACTIVE |     | sys_region     | ReadWrite |
| zone2 | 2023-08-22 17:50:09.193881 | 2023-08-22 17:50:20.712790 | ACTIVE |     | default_region | ReadWrite |
+-------+----------------------------+----------------------------+--------+-----+----------------+-----------+
2 rows in set (0.001 sec)

添加server

向zone中添加server

obclient [oceanbase]> ALTER SYSTEM ADD SERVER '172.24.255.18:2882' ZONE 'zone2';
Query OK, 0 rows affected (0.015 sec)obclient [oceanbase]> select * from dba_ob_servers;
+---------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
| SVR_IP        | SVR_PORT | ID | ZONE  | SQL_PORT | WITH_ROOTSERVER | STATUS | START_SERVICE_TIME         | STOP_TIME | BLOCK_MIGRATE_IN_TIME | CREATE_TIME                | MODIFY_TIME                | BUILD_VERSION                                                                             | LAST_OFFLINE_TIME |
+---------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
| 172.24.255.17 |     2882 |  1 | zone1 |     2881 | YES             | ACTIVE | 2023-08-22 17:37:40.814023 | NULL      | NULL                  | 2023-08-22 17:37:30.449287 | 2023-08-22 17:37:42.220860 | 4.2.0.0_100010022023081817-0bdf1c0c5674e88c5ae9a8d0ae4f8077465d7fae(Aug 18 2023 17:32:49) | NULL              |
| 172.24.255.18 |     2882 |  2 | zone2 |     2881 | NO              | ACTIVE | 2023-08-22 19:00:25.594024 | NULL      | NULL                  | 2023-08-22 19:00:16.206194 | 2023-08-22 19:00:27.409670 | 4.2.0.0_100010022023081817-0bdf1c0c5674e88c5ae9a8d0ae4f8077465d7fae(Aug 18 2023 17:32:49) | NULL              |
+---------------+----------+----+-------+----------+-----------------+--------+----------------------------+-----------+-----------------------+----------------------------+----------------------------+-------------------------------------------------------------------------------------------+-------------------+
2 rows in set (0.000 sec)

添加租户副本

此时,租户的副本还只有一个,需要再手动添加副本。这里以ocp租户为例,将ocp租户进行扩容

obclient [oceanbase]> SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS where tenant_name="ocp";
+-----------+-------------+-------------+--------------+---------------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | PRIMARY_ZONE | LOCALITY      |
+-----------+-------------+-------------+--------------+---------------+
|      1002 | ocp         | USER        | RANDOM       | FULL{1}@zone1 |
+-----------+-------------+-------------+--------------+---------------+
1 row in set (0.017 sec)

添加副本前,需要给新增的节点上添加resource_pool,添加resource pool有两种方式,一种是新建resource pool,一种是将现有租户的resource pool扩展到新的节点上

方式一:新增resource pool

添加unit模版(可使用已有unit模版)-> 新增resource_pool -> 为租户添加resource_pool

这里直接使用已有的unit模版,尽量保证每个副本的资源配置相同,查看ocp租户的unit模版名

obclient [oceanbase]> select * from DBA_OB_UNIT_CONFIGS;
+----------------+---------------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+---------------------+---------------------+-------------+
| UNIT_CONFIG_ID | NAME                      | CREATE_TIME                | MODIFY_TIME                | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS            | MIN_IOPS            | IOPS_WEIGHT |
+----------------+---------------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+---------------------+---------------------+-------------+
|              1 | sys_unit_config           | 2023-08-22 17:37:30.017366 | 2023-08-22 17:37:30.017366 |       1 |       1 |  2147483648 |    2147483648 | 9223372036854775807 | 9223372036854775807 |           1 |
|           1003 | ocp_unit                  | 2023-08-22 17:43:41.451573 | 2023-08-22 17:43:41.451573 |       1 |       1 |  2147483648 |    6442450944 | 9223372036854775807 | 9223372036854775807 |           1 |
+----------------+---------------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+---------------------+---------------------+-------------+
2 rows in set (0.001 sec)

或者使用如下方式查看租户的unit

SELECT NAME FROM DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_ID
IN
(SELECT UNIT_CONFIG_ID FROM DBA_OB_UNITS WHERE TENANT_ID
IN
(SELECT TENANT_ID FROM DBA_OB_TENANTS WHERE TENANT_NAME='ocp'));

可以看到ocp租户的unit模版为ocp_unit,因此再新建一个resource pool,使用ocp_unit 模版

查看当前ocp租户的resource_pool

obclient [oceanbase]> select * from DBA_OB_RESOURCE_POOLS;
+------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
| RESOURCE_POOL_ID | NAME     | TENANT_ID | CREATE_TIME                | MODIFY_TIME                | UNIT_COUNT | UNIT_CONFIG_ID | ZONE_LIST | REPLICA_TYPE |
+------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
|                1 | sys_pool |         1 | 2023-08-22 17:37:30.020615 | 2023-08-22 17:37:30.027149 |          1 |              1 | zone1     | FULL         |
|             1001 | ocp_pool |      1002 | 2023-08-22 17:37:43.620077 | 2023-08-22 17:43:41.475641 |          1 |           1003 | zone1     | FULL         |
+------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
2 rows in set (0.003 sec)

添加resource_pool

root@oceanbase03:43:05>create resource pool ocp_pool2 unit="ocp_unit", unit_num=1,zone_list=('zone2');
Query OK, 0 rows affected (0.02 sec)obclient [oceanbase]> select * from DBA_OB_RESOURCE_POOLS;
+------------------+-----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
| RESOURCE_POOL_ID | NAME      | TENANT_ID | CREATE_TIME                | MODIFY_TIME                | UNIT_COUNT | UNIT_CONFIG_ID | ZONE_LIST | REPLICA_TYPE |
+------------------+-----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
|                1 | sys_pool  |         1 | 2023-08-22 17:37:30.020615 | 2023-08-22 17:37:30.027149 |          1 |              1 | zone1     | FULL         |
|             1001 | ocp_pool  |      1002 | 2023-08-22 17:37:43.620077 | 2023-08-22 17:43:41.475641 |          1 |           1003 | zone1     | FULL         |
|             1002 | ocp_pool2 |      NULL | 2023-08-22 18:50:46.640215 | 2023-08-22 18:50:46.640215 |          1 |           1004 | zone2     | FULL         |
+------------------+-----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
2 rows in set (0.003 sec)

resource_pool的tenant_id为NULL,为ocp租户添加新建的resource_pool

root@oceanbase03:55:12> alter tenant ocp resource_pool_list=('ocp_pool','ocp_pool2');
Query OK, 0 rows affected (0.79 sec)obclient [oceanbase]> select * from DBA_OB_RESOURCE_POOLS;
+------------------+-----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
| RESOURCE_POOL_ID | NAME      | TENANT_ID | CREATE_TIME                | MODIFY_TIME                | UNIT_COUNT | UNIT_CONFIG_ID | ZONE_LIST | REPLICA_TYPE |
+------------------+-----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
|                1 | sys_pool  |         1 | 2023-08-22 17:37:30.020615 | 2023-08-22 17:37:30.027149 |          1 |              1 | zone1     | FULL         |
|             1001 | ocp_pool  |      1002 | 2023-08-22 17:37:43.620077 | 2023-08-22 17:43:41.475641 |          1 |           1003 | zone1     | FULL         |
|             1002 | ocp_pool2 |      1002 | 2023-08-22 18:50:46.640215 | 2023-08-22 18:50:46.640215 |          1 |           1004 | zone2     | FULL         |
+------------------+-----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
2 rows in set (0.003 sec)

方式二:扩展已有resource pool

或者直接修改现有租户的resource pool

root@oceanbase03:55:12> ALTER RESOURCE POOL ocp_pool ZONE_LIST=('zone1','zone2');

修改租户的locality

obclient [oceanbase]> ALTER TENANT ocp locality="F@zone1, F@zone2";
Query OK, 0 rows affected (0.139 sec)

注:这里有个前提条件,

  • 添加副本时,primary zone所在的region内至少要有2个全功能型副本,否则就会添加失败,报错“primary zone F type replica not enough in its region not allowed”;
  • primary region不能多于1个,否则会报“ERROR 1235 (0A000): tenant primary zone span regions not supported”

这些限制目的主要是防止多数派能跨region,造成延迟过大

obclient [oceanbase]> ALTER TENANT ocp locality="F@zone1, F@zone2";
ERROR 4179 (HY000): primary zone F type replica not enough in its region not allowedobclient [oceanbase]> ALTER TENANT ocp locality="F@zone1, F@zone2, F@zone3";
ERROR 1235 (0A000): tenant primary zone span regions not supported

查看副本添加任务情况

obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE = 'ALTER_TENANT_LOCALITY';
+--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+----------------------------------------------+---------------+---------------+-------------+
| JOB_ID | JOB_TYPE              | JOB_STATUS | RESULT_CODE | PROGRESS | START_TIME                 | MODIFY_TIME                | TENANT_ID | SQL_TEXT                                     | EXTRA_INFO    | RS_SVR_IP     | RS_SVR_PORT |
+--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+----------------------------------------------+---------------+---------------+-------------+
|      1 | ALTER_TENANT_LOCALITY | SUCCESS    |           0 |      100 | 2023-08-23 12:00:33.923511 | 2023-08-23 12:10:58.213438 |      1002 | ALTER TENANT ocp locality="F@zone1, F@zone2" | FULL{1}@zone1 | 172.24.255.17 |        2882 |
+--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+----------------------------------------------+---------------+---------------+-------------+
1 rows in set (0.017 sec)

当 JOB_STATUS 为 SUCCESS,则表示添加成功

再次查看租户的副本情况

obclient [oceanbase]> SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS where tenant_name="ocp";
+-----------+-------------+-------------+--------------+------------------------------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | PRIMARY_ZONE | LOCALITY                     |
+-----------+-------------+-------------+--------------+------------------------------+
|      1002 | ocp         | USER        | zone1;zone2  | FULL{1}@zone1, FULL{1}@zone2 |
+-----------+-------------+-------------+--------------+------------------------------+
1 row in set (0.004 sec)

再添加新的节点,使用同样方式即可。

添加zone3及租户副本

obclient [oceanbase]> ALTER TENANT ocp locality="F@zone1, F@zone2, F@zone3";
Query OK, 0 rows affected (0.121 sec)

添加成功

obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE = 'ALTER_TENANT_LOCALITY';
+--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+-------------------------------------------------------+------------------------------+---------------+-------------+
| JOB_ID | JOB_TYPE              | JOB_STATUS | RESULT_CODE | PROGRESS | START_TIME                 | MODIFY_TIME                | TENANT_ID | SQL_TEXT                                              | EXTRA_INFO                   | RS_SVR_IP     | RS_SVR_PORT |
+--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+-------------------------------------------------------+------------------------------+---------------+-------------+
|      1 | ALTER_TENANT_LOCALITY | SUCCESS    |           0 |      100 | 2023-08-23 12:00:33.923511 | 2023-08-23 12:10:58.213438 |      1002 | ALTER TENANT ocp locality="F@zone1, F@zone2"          | FULL{1}@zone1                | 172.24.255.17 |        2882 |
|      2 | ALTER_TENANT_LOCALITY | SUCCESS    |           0 |      100 | 2023-08-23 13:47:51.957014 | 2023-08-23 14:00:14.633674 |      1002 | ALTER TENANT ocp locality="F@zone1, F@zone2, F@zone3" | FULL{1}@zone1, FULL{1}@zone2 | 172.24.255.17 |        2882 |
+--------+-----------------------+------------+-------------+----------+----------------------------+----------------------------+-----------+-------------------------------------------------------+------------------------------+---------------+-------------+
2 rows in set (0.003 sec)

查看租户副本情况

obclient [oceanbase]> SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS where tenant_name="ocp";
+-----------+-------------+-------------+--------------+---------------------------------------------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | PRIMARY_ZONE | LOCALITY                                    |
+-----------+-------------+-------------+--------------+---------------------------------------------+
|      1002 | ocp         | USER        | zone1;zone2  | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 |
+-----------+-------------+-------------+--------------+---------------------------------------------+
1 row in set (0.006 sec)

高可用测试

创建一张表并插入一条数据

obclient [test]> create table t1(id int);
Query OK, 0 rows affected (0.194 sec)obclient [test]> insert into t1 values(111);
Query OK, 1 row affected (0.008 sec)obclient [test]> select * from t1;
+------+
| id   |
+------+
|  111 |
+------+
1 row in set (0.002 sec)

查看表的leader所在节点

1702610698

表leader在 172.24.255.17 上,通过shell写个脚本,循环每隔一秒查询下t1表

#!/bin/bashfor ((i=1;i<1000; i++));
do
time=$(date "+%Y-%m-%d %H:%M:%S")
obclient -h172.24.255.17 -P2883 -u'root@obtest#myoceanbase' -p'xxxx' -Dtest -A -e "select * from t1;" > /dev/null;
if [ $? -eq 0 ]; thenecho $time: "SUCCESS"
elseecho $time: "FAILED"
fi
sleep 1;
done

然后把 172.24.255.17 机器上的observer进程kill掉,看下是否能自动实现切换

1702610714

从下面的执行结果来看,SQL在卡了5s左右之后,继续输出了结果,并且因为Paxos协议,这个切换过程中,可以保证数据没有丢失。

1702610728

再次查看表LEADER情况,可以看到进程杀死之后,LEADER切换到了172.24.255.18上

1702610745

相关文章:

OceanBase 4.x 部署实践:如何从单机扩展至分布式部署

OceanBase 4.x 版本支持2种部署模式&#xff1a;单机部署与分布式部署&#xff0c;同时支持从单机平滑扩展至分布式架构。这样&#xff0c;可以有效解决小型业务向大型业务转型时面临的扩展难题&#xff0c;降低了机器资源的成本。 以下将详述如何通过命令行&#xff0c;实现集…...

大数据新视界 --大数据大厂之TeZ 大数据计算框架实战:高效处理大规模数据

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

docker详解介绍+基础操作 (三)

1.docker 存储引擎 Overlay&#xff1a; 一种Union FS文件系统&#xff0c;Linux 内核3.18后支持 Overlay2&#xff1a;Overlay的升级版&#xff0c;docker的默认存储引擎&#xff0c;需要磁盘分区支持d-type功能&#xff0c;因此需要系统磁盘的额外支持。 关于 d-type 传送…...

【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers

【大语言模型-论文精读】谷歌-BERT&#xff1a;用于语言理解的预训练深度双向Transformers 目录 文章目录 【大语言模型-论文精读】谷歌-BERT&#xff1a;用于语言理解的预训练深度双向Transformers目录0. 引言1. 简介2 相关工作2.1 基于特征的无监督方法2.2 无监督微调方法2.3…...

【Java】集合中单列集合详解(一):Collection与List

目录 引言 一、Collection接口 1.1 主要方法 1.1.1 添加元素 1.1.2 删除元素 1.1.3 清空元素 1.1.4 判断元素是否存在 1.1.5 判断是否为空 1.1.6 求取元素个数 1.2 遍历方法 1.2.1 迭代器遍历 1.2.2 增强for遍历 1.2.3 Lambda表达式遍历 1.2.4 应用场景 二、…...

【Fine-Tuning】大模型微调理论及方法, PytorchHuggingFace微调实战

Fine-Tuning: 大模型微调理论及方法, Pytorch&HuggingFace微调实战 文章目录 Fine-Tuning: 大模型微调理论及方法, Pytorch&HuggingFace微调实战1. 什么是微调(1) 为什么要进行微调(2) 经典简单例子&#xff1a;情感分析任务背景微调 (3) 为什么微调work, 理论解释下 2…...

清华系“仓颉”来袭:图形起源:用AI颠覆字体设计,推动大模型商业化落地

大模型如何落地&#xff1f;又该如何实现商业化&#xff1f;这一议题已成为今年科技领域的焦点话题。 在一个鲜为人知的字体设计赛道上&#xff0c;清华创业公司“图形起源”悄然实现了商业变现&#xff1a;他们帮助字体公司将成本降低了80%&#xff0c;生产速度提升了10倍以上…...

分布式一致性协议的深度解析:Paxos与Raft

分布式系统的复杂性源于节点失效、网络分区、消息丢失等诸多不确定性。在这种背景下&#xff0c;分布式一致性问题应运而生&#xff0c;成为解决这些问题的核心。本文将从理论到实践&#xff0c;深入探讨两种经典的一致性协议&#xff1a;Paxos与Raft。文章适合有一定分布式系统…...

ai写作,五款软件助你快速写作!

在这个信息爆炸的时代&#xff0c;内容创作成为了连接用户、传递价值的桥梁。然而&#xff0c;面对日益增长的创作需求&#xff0c;如何在保证质量的同时提升效率&#xff0c;成为了每位创作者面临的难题。幸运的是&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI写作软…...

解决JavaScript 数学运算精度丢失的问题

JavaScript 中执行浮点数运算时可能会遇到精度丢失的问题。这通常是因为浮点数的表示遵循IEEE 754标准&#xff0c;而这种表示法只能精确地表示有限的数字。对于大多数程序员来说&#xff0c;这不是一个问题&#xff0c;因为它允许计算机处理超出精度范围之外的数字。然而&…...

mysql学习教程,从入门到精通,SQL窗口函数(38)

1、SQL窗口函数 SQL窗口函数&#xff08;Window Functions&#xff09;是一种强大的数据分析工具&#xff0c;它们允许你在结果集的行上执行计算&#xff0c;而不需要将这些行分组到单独的输出行中。窗口函数通常与OVER()子句一起使用&#xff0c;该子句定义了窗口或分区&…...

gbase8s数据库实现黑白名单的几种方案

1、借用操作系统的黑白名单 2、使用数据库 TRUSTED CONTEXT 机制 CREATE TRUSTED CONTEXT tcx1USER rootATTRIBUTES (ADDRESS 172.16.39.162)ATTRIBUTES (ADDRESS 172.16.39.163)ENABLEWITH USE FOR wangyx WITHOUT AUTHENTICATION; 如上创建 可信任上下文对象 tcx1 在 jdb…...

Qt-窗口布局按钮输入类

1. 窗口布局 Qt 提供了很多摆放控件的辅助工具&#xff08;又称布局管理器或者布局控件&#xff09;&#xff0c;它们可以完成两件事&#xff1a; 自动调整控件的位置&#xff0c;包括控件之间的间距、对齐等&#xff1b; 当用户调整窗口大小时&#xff0c;位于布局管理器内的…...

Apache DolphinScheduler社区9月进展记录

各位热爱 Apache DolphinScheduler 的小伙伴们&#xff0c;社区 9 月月报更新啦&#xff01;这里将记录 Apache DolphinScheduler 社区每月的重要更新&#xff0c;欢迎关注&#xff01; 月度 Merge Star 感谢以下小伙伴上个月为 Apache DolphinScheduler 做的精彩贡献&#x…...

在docker中安装并运行mysql8.0.31

第一步&#xff1a;命令行拉取mysql镜像 docker pull mysql:8.0.31查看是否拉取成功 docker images mysql:latest第二步&#xff1a;运行mysql镜像&#xff0c;启动mysql实例 docker run -p 3307:3307 -e MYSQL_ROOT_PASSWORD"123456" -d mysql:8.0.313307:3307前…...

C++ | Leetcode C++题解之第458题可怜的小猪

题目&#xff1a; 题解&#xff1a; class Solution { public:int poorPigs(int buckets, int minutesToDie, int minutesToTest) {if (buckets 1) {return 0;}vector<vector<int>> combinations(buckets 1,vector<int>(buckets 1));combinations[0][0] …...

【万字长文】Word2Vec计算详解(三)分层Softmax与负采样

【万字长文】Word2Vec计算详解&#xff08;三&#xff09;分层Softmax与负采样 写在前面 第三部分介绍Word2Vec模型的两种优化方案。 【万字长文】Word2Vec计算详解&#xff08;一&#xff09;CBOW模型 markdown行 9000 【万字长文】Word2Vec计算详解&#xff08;二&#xff0…...

【分布式微服务云原生】探索Dubbo:接口定义语言的多样性与选择

目录 探索Dubbo&#xff1a;接口定义语言的多样性与选择引言Dubbo的接口定义语言&#xff08;IDL&#xff09;1. Java接口2. XML配置3. 注解4. Protobuf IDL 流程图&#xff1a;Dubbo服务定义流程表格&#xff1a;Dubbo IDL方式比较结论呼吁行动Excel表格&#xff1a;Dubbo IDL…...

SAP将假脱机(Spool requests)内容转换为PDF文档[RSTXPDFT4]

将假脱机(Spool requests)内容转换为PDF文档[RSTXPDFT4] 有时需要将Spool中的内容导出成PDF文件&#xff0c;sap提供了一个标准程序RSTXPDFT4可以实现此功能。 1, Tcode:SP01, 进入spool requests list 2, SE38 运行程序RSTXPDFT4 输入spool reqeust号码18680&#xff0c;然后…...

DNS能加速游戏吗?

在游戏玩家追求极致游戏体验的今天&#xff0c;任何可能提升游戏性能的因素都备受关注&#xff0c;DNS&#xff08;域名系统&#xff09;便是其中一个被探讨的对象。那么&#xff0c;DNS能加速游戏吗&#xff1f; 首先&#xff0c;我们需要了解DNS的基本功能。DNS就像是互联网…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...