l 执行alter table,drop database等操作时,有时会出现卡住的情况,show processlist查看sql状态,如果是checking permissions的状态,大概率是被锁阻塞住了。比如这样:
gbase> show processlist;
+------+-----------------+-------------------+------+---------+------+------------------------+-------------------+
| Id | User
| Host | db
| Command | Time | State
| Info |
+------+-----------------+-------------------+------+---------+------+------------------------+-------------------+
| 1 | event_scheduler | localhost
| NULL | Daemon | 5982 | Waiting for event
lock | NULL |
| 832 | root
| localhost | NULL | Query
| 5340 | checking permissions | drop database abc |
| 1688 | gbase
| 10.10.55.12:59078 | NULL | Sleep | 1143 |
|
NULL |
| 1944 | gbase
| 10.10.55.13:40818 | NULL | Sleep | 967 |
|
NULL |
| 2066 | gbase
| 10.10.55.14:34950 | NULL | Sleep | 872 |
|
NULL |
| 8321 | root
| localhost | NULL | Query
| 0 | NULL
| show processlist |
+------+-----------------+-------------------+------+---------+------+------------------------+-------------------+
[gbase@node11 ~]$ gcadmin showlock
+=====================================================================================================+
|
GCLUSTER LOCK
|
+=====================================================================================================+
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
Lock name
| owner | content
| create time |locked|type|
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
gc-event-lock
|10.10.55.14| global master |20230921133450| TRUE | E |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
gc-event-lock
|10.10.55.13| global master |20230921133626|FALSE | E |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
gc-event-lock
|10.10.55.12| global master |20230921133922|FALSE | E |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
gc-event-lock
|10.10.55.11| global master |20230921133730|FALSE | E |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
vc00000.gbase.db_lock
|10.10.55.11|832(LWP:2072152)|20230921134810| TRUE | S |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
vc00000.hashmap_lock |10.10.55.11|832(LWP:2072152)|20230921134810|
TRUE | S |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|vc00001.abc.bd_00dt_idpsa_dp_arg_h1.meta_lock|10.10.55.11|175(LWP:2055728)|20230921111259|
TRUE | E |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
vc00001.abc.db_lock
|10.10.55.11|175(LWP:2055728)|20230921111259| TRUE | S |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
vc00001.abc.db_lock
|10.10.55.11|832(LWP:2072152)|20230921134810|FALSE | E |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
vc00001.abc.table_space_lock
|10.10.55.11|175(LWP:2055728)|20230921111259| TRUE | S |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
vc00001.hashmap_lock
|10.10.55.11|175(LWP:2055728)|20230921111259| TRUE | S |
+---------------------------------------------+-----------+----------------+--------------+------+----+
|
vc00001.hashmap_lock
|10.10.55.11|832(LWP:2072152)|20230921134810| TRUE | S |
+---------------------------------------------+-----------+----------------+--------------+------+----+
| 112 |
abc | bd_00dt_i | 121
| ddl | 20230921133920 |
2 | 10.10.55.11 |
10.10.55.14 | 145
|
| |
| dpsa_dp_a |
| |
| |
|
|
|
| |
| rg_h1 |
|
| |
|
|
| |
+-----------+------------+-----------+------------+-----------+------------------+-------+--------------------+--------------------+-----------------+
l 如果这个锁产生的原因也不明确,可以去排查一下failover的情况,多半是该库下表的failover记录长时间无法恢复导致的阻塞。
[gbase@node14 ~]$ gcadmin showfailover
+====================================================================================================================================================+
| GCLUSTER
FAILOVER
|
+====================================================================================================================================================+
+-----------+------------+-----------+------------+-----------+------------------+-------+--------------------+--------------------+-----------------+
| commit id | database
| table |
scn | type
| create time
| state | original node |
takeover node | takeover number
|
+-----------+------------+-----------+------------+-----------+------------------+-------+--------------------+--------------------+-----------------+
|
112 | abc
| bd_00dt_i | 121 |
ddl | 20230921133920 |
2 | 10.10.55.11 |
10.10.55.14 | 145
|
|
| | dpsa_dp_a | | | | | | | |
|
| | rg_h1
| | | | | | | |
+-----------+------------+-----------+------------+-----------+------------------+-------+--------------------+--------------------+-----------------+
l 此种情况需运维或者用户介入,判定是否可以手工删除此failover;手工删除failover的方法:
[gbase@node14 ~]$ python
Python 2.7.18 (default, Jun 10 2022,
11:23:11)
[GCC 7.3.0] on linux2
Type "help",
"copyright", "credits" or "license" for more information.
>>> import gcware
>>>
gcware.deletefailoverforce(112) #--括号里写的是failover的commit id
0
>>>
[gbase@node14 ~]$ gcadmin showfailover
gcadmin showfailover: no gcluster failover
information now
Failover被删除,被卡住的sql得以进行
gbase> drop database abc;
Query OK, 79 rows affected, 3 warnings
(Elapsed: 01:54:02.33)




