导入数据报错:Minor freeze not allowed now

当我导入表的时候总是报Minor freeze not allowed now,我truncate这个表也不给truncate。
请问我应该如何不触发这个问题,让我可以一直导入呢?速度慢点没关系。

[admin@host0 test]$ obclient -h192.168.31.203 -P2881 -uroot test <tpch.orders.000000000.sql
ERROR 4263 (HY000) at line 870616: Minor freeze not allowed now

obclient [test]> truncate table orders;
ERROR 4263 (HY000): Minor freeze not allowed now
obclient [test]> select version();
+------------------------------+
| version()                    |
+------------------------------+
| 5.7.25-OceanBase_CE-v4.0.0.0 |
+------------------------------+
1 row in set (0.037 sec)

其中有一个节点的CPU特别高,我一共4个CPU,基本都用了,我没有做任何查询。

cpu高的obsever.log日志如下:
observer_last10000.log.tar.gz (931.5 KB)

建议调大 租户级参数 compaction_high_thread_score为10 再试试;

你这个ob 用的内存太少了, 扛不住你这个量, 建议你用更大的内存

BTW: 你这个名字取的让人很不舒服, 如果你觉得ob 不行, 可以不用, 当然, 任何情况下, 我们都欢迎你给我们提意见, 但没有必要这么恶心别人, 更何况开源某种意义还是帮助中国技术进步, 而且很多时候, 是免费服务大家.

2 个赞

我这个内存每个节点是24GB的,我之前的一张比这个大好几倍的表都能导入的,今天导入这张表就不行了。我本来没起这个名字,我是被之前的版本安装给难受到了,实在受不了了,我浪费在太多时间折腾在安装上。4.0就比较容易安装,马上改名字。

好像没办法改名字,可以让管理帮我改下吗?可以改为enjoyOB

我按照这个修改了然后重启了集群,现在是每一个节点的CPU都吃3个多。导入数据性能比较慢,基本上5000条需要十几秒,之前每秒至少几万。

要看你给这个租户分配的内存,不是你本地服务器的内存。
去检查你租户的内存,应该是分配太少了。可以调大了试试

不能在问答区改,首页中账户基本资料应该是可以改的,试一下https://www.oceanbase.com/user/info

建议先查下历史转储信息:

select * from __all_virtual_compaction_history where tenant_id = xxx and type like ‘%MINI%’ order by finish_time desc limit XXX;

查看comments列,如果发现wait_schedule_time比较大,说明转储频繁,转储线程数不够导致队列积压,此时可以调大租户级参数 compaction_high_thread_score 和compaction_mid_thread_score(默认都为6,表示6个线程);

导数过程中频繁转储会降低导数性能,需要及时做合并,可以视情况调整下租户级参数major_compact_trigger(每转储n次,会自动发起一次合并)

请问你的环境memory_limit和租户内存分别配置的多大

从你上传的日志看是因为导入的数量超过了分配的磁盘空间,转储不了引发的问题,尝试调整一下租户的磁盘空间配置看看

[2022-11-03 08:20:32.091891] WARN [STORAGE.BLKMGR] alloc_block (ob_block_manager.cpp:305) [9021][T1_MINI_MERGE][T1][YB42C0A81FCA-0005EC7D0FFFD8D6-0-0] [lt=22] Failed to alloc block from io device(ret=-4184)
[2022-11-03 08:20:32.091896] WARN [STORAGE] alloc_block (ob_macro_block_writer.cpp:1132) [9021][T1_MINI_MERGE][T1][YB42C0A81FCA-0005EC7D0FFFD8D6-0-0] [lt=4] Fail to pre-alloc block for new macro block(ret=-4184, current_index=0, current_macro_seq=0)

1 个赞

memory_limit是16G,租户内存最大是8G

obclient [(none)]> show parameters like 'memory_limit' \G
*************************** 1. row ***************************
      zone: zone1
  svr_type: observer
    svr_ip: 192.168.31.201
  svr_port: 2882
      name: memory_limit
 data_type: NULL
     value: 16G
      info: the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [4G,).
   section: OBSERVER
     scope: CLUSTER
    source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
*************************** 2. row ***************************
      zone: zone2
  svr_type: observer
    svr_ip: 192.168.31.202
  svr_port: 2882
      name: memory_limit
 data_type: NULL
     value: 16G
      info: the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [4G,).
   section: OBSERVER
     scope: CLUSTER
    source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
*************************** 3. row ***************************
      zone: zone3
  svr_type: observer
    svr_ip: 192.168.31.203
  svr_port: 2882
      name: memory_limit
 data_type: NULL
     value: 16G
      info: the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [4G,).
   section: OBSERVER
     scope: CLUSTER
    source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
3 rows in set (0.088 sec)

obclient [oceanbase]> select * from __all_tenant  \G
*************************** 1. row ***************************
           gmt_create: 2022-11-02 21:44:55.366246
         gmt_modified: 2022-11-02 21:44:55.366246
            tenant_id: 1
          tenant_name: sys
            zone_list: zone1;zone2;zone3
         primary_zone: RANDOM
               locked: 0
       collation_type: 0
                 info: system tenant
             locality: FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3
    previous_locality: 
default_tablegroup_id: -1
   compatibility_mode: 0
     drop_tenant_time: -1
               status: NORMAL
        in_recyclebin: 0
1 row in set (0.005 sec)

obclient [oceanbase]> select * from V$OB_UNITS \G
*************************** 1. row ***************************
          SVR_IP: 192.168.31.201
        SVR_PORT: 2882
         UNIT_ID: 1
       TENANT_ID: 1
            ZONE: zone1
         MAX_CPU: 1
         MIN_CPU: 1
     MEMORY_SIZE: 8589934592
        MAX_IOPS: 10000
        MIN_IOPS: 10000
     IOPS_WEIGHT: 1
   LOG_DISK_SIZE: 3489660928
 LOG_DISK_IN_USE: 2790003364
DATA_DISK_IN_USE: 6408896512
          STATUS: NORMAL
     CREATE_TIME: 2022-11-02 21:44:14.340310
1 row in set (0.005 sec)

多谢,看着应该是磁盘用完了,请问有办法进行扩容吗?我本地空间还有比较多,就是初始化的时候没给太大。

kill -9 进程后,在启动参数里给大点的硬盘,我这么操作过好像没问题,你这样操作一下试试

谢谢,我卸载重装了,初始化时候弄大就好了。

请问如何调大租户级参数?我也有这个问题,但是和楼主的情况不一样,磁盘空间还剩比较多