在GBase 8a V95版本里,如果开启了虚拟集群功能,则在连接时如果指定了用户数据库,且用户没有配置默认VC,则必须指定所属的VC。否则报错信息就是ERROR 1818 (HY000): No VC selected。
目录导航
报错样例
如下是gccli登录时,指定了testdb为默认数据库。在V8和没有开启vc功能的V9里,可以正常运行。
[gbase@gbase_rh7_001 ~]$ gccli testdb
ERROR 1818 (HY000): No VC selected.
原因
是因为
- 开启了VC功能
- 指定的数据库为用户自己创建的数据库,属于某个VC
- 登录的用户没有默认的VC. 请参考: GBase 8a集群创建用户create user完整语法
查看VC
通过gcadmin查看当前集群的VC情况,如下样例显示有2个vc,名字分别是vc01和vc02。
[gbase@gbase_rh7_001 ~]$ gcadmin
CLUSTER STATE: ACTIVE
=============================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
=============================================================
| NodeName | IpAddress | gcware | gcluster | DataState |
-------------------------------------------------------------
| coordinator1 | 10.0.2.101 | OPEN | OPEN | 0 |
-------------------------------------------------------------
===========================================================
| GBASE VIRTUAL CLUSTER INFORMATION |
===========================================================
| VcName | DistributionId | comment |
-----------------------------------------------------------
| vc01 | 1 | first vc with one node |
-----------------------------------------------------------
| vc02 | 2 | second vc with one node |
-----------------------------------------------------------
2 virtual cluster: vc01, vc02
1 coordinator node
0 free data node
[gbase@gbase_rh7_001 ~]$
而testdb数据库是属于vc01虚拟集群的,默认的gbase/root数据库用户没有默认VC,所以无法直接访问。
[gbase@gbase_rh7_001 ~]$ gccli -uroot testdb
ERROR 1818 (HY000): No VC selected.
[gbase@gbase_rh7_001 ~]$
如果是系统元数据,比如gbase库和information_schema,不属于vc,则可以直接访问。
[gbase@gbase_rh7_001 ~]$ gccli gbase
GBase client 9.5.2.36.125743. Copyright (c) 2004-2021, GBase. All Rights Reserved.
gbase> ^CAborted
解决方案
没有默认VC的用户,根据数据库所属vc,指定vc名字和库名。比如 vc01.testdb
[gbase@gbase_rh7_001 ~]$ gccli vc01.testdb
GBase client 9.5.2.36.125743. Copyright (c) 2004-2021, GBase. All Rights Reserved.
gbase> ^CAborted
有默认VC的用户,可以直接访问,比如testdb用户默认的vc是vc01.
[gbase@gbase_rh7_001 ~]$ gccli -uroot testdb
[gbase@gbase_rh7_001 ~]$ gccli -utestdb -ptestdb
GBase client 9.5.2.36.125743. Copyright (c) 2004-2021, GBase. All Rights Reserved.
gbase> ^CAborted
总结
GBase 8a的虚拟集群,对管理员带来了使用上的差异,多了vc这一层。
对于普通用户,一般都设置了默认vc,则不会出现这个情况,和使用普通集群无差别。只有在跨VC访问数据时,才需要在SQL语法上进行适配。