三台中有一台宕机后,不能ddl操作???

【产品名称】

Oceanbase

【产品版本】

3.1.1

【问题描述】

三台机器,其中一个主机测试reboot后,发现连接进入后,dml操作可执行,但ddl操作都报错,不是应该不影响业务操作的吗?

MySQL [oceanbase]> select zone,svr_ip,svr_port,inner_port,with_rootserver,status,gmt_create from __all_server order by zone, svr_ip;

±------±---------------±---------±-----------±----------------±---------±---------------------------+

| zone | svr_ip | svr_port | inner_port | with_rootserver | status | gmt_create |

±------±---------------±---------±-----------±----------------±---------±---------------------------+

| zone1 | 192.168.52.141 | 2882 | 2881 | 1 | active | 2021-11-11 15:26:32.658022 |

| zone2 | 192.168.52.142 | 2882 | 2881 | 0 | inactive | 2021-11-11 15:26:29.811987 |

| zone3 | 192.168.52.143 | 2882 | 2881 | 0 | active | 2021-11-11 15:26:32.184517 |

±------±---------------±---------±-----------±----------------±---------±---------------------------+

3 rows in set (0.002 sec)

MySQL [jyc]> create table t1 as select * from test;

ERROR 4624 (HY000): machine resource is not enough to hold a new unit

MySQL [jyc]> create table t1 as select * from test;

ERROR 4624 (HY000): machine resource is not enough to hold a new unit

MySQL [jyc]> select * from test;

±-----+

| id |

±-----+

| 1 |

±-----+

1 row in set (0.001 sec)

MySQL [jyc]> insert into test values(1);

Query OK, 1 row affected (0.002 sec)

MySQL [jyc]> select * from test;

±-----+

| id |

±-----+

| 1 |

| 1 |

±-----+

2 rows in set (0.001 sec)

默认情况是的。租户变量 ob_create_table_strict_mode 是控制这个的。


把那个 strict 模式关闭 set global ob_create_table_strict_mode=off;


可以让ddl 不报错。

谢谢回复,为何不默认打开呢?这么设计是出于什么考虑,是存在什么风险吗?

没什么风险,只是以前蚂蚁内部业务追求严格的安全。  在蚂蚁内部业务里,ddl 失败影响可控。外部客户如果不能接受这个报错,可以关闭这个参数。

明白了,多谢!

这个参数只是影响create table吧,其他ddl例如alter table之类是否会有类似的报错呢