建议:通过 SYS 租户修改业务租户变量中的lower_case_table_names,能不能给业务租户root用户修改

这个参数lower_case_table_names就是看到最让人不解的地方。

通过 SYS 租户修改业务租户变量

注意 部分变量属于租户初始化变量,不能在业务租户里直接修改,需要在 sys 租户里修改。

示例:

$ mysql -h127.1 -uroot@obmysql#obdemo -P2883 -p123456 -c -A oceanbase -Ns
MySQL [oceanbase]> set global lower_case_table_names=0;
ERROR 1238 (HY000): Variable 'lower_case_table_names' is a read only variable

$mysql -h127.1 -uroot@sys#obdemo -P2883 -p123456 -c -A oceanbase -Ns
MySQL [oceanbase]> alter tenant obmysql set variables lower_case_table_names=0;

$ mysql -h127.1 -uroot@obmysql#obdemo -P2883 -p123456 -c -A oceanbase -Ns
MySQL [oceanbase]> show global variables like 'lower_case_table_names';
lower_case_table_names  0

关于这类参数,应该是下发给租户root用户可以修改才行,租户类似MySQL实例,但是租户root却没有权限修改自己的参数。

有些不理解,为什么要这么设计

1 个赞

感觉官方的设计是想逐渐废弃这个参数,官方文档描述为

该变量仅支持使用 CREATE TENANT 语句创建租户时指定,租户创建后不能通过 SQL 语句修改

这个参数在ocp创建租户时不允许自定义添加,且为1,我以为不能修改了

1 个赞

mysql的只读变量在mysql里即使是root也不能修改,需要有主机访问权限的人在外部修改配置文件然后重启实例生效。ob的mysql租户是逻辑实例,没有独立进程,不存在重启操作。所以用有sys租户权限的超级管理员去修改租户的全局参数变量 这种方法,也挺合理的。

1 个赞