使用chameleon工具从mysql5.7迁移到opengauss:6.0.5

5g以内的库是可以迁移成功,20g的库就直接这样卡死不动,然后opengauss崩掉

把chammeleon代码里面的mysql_lib.py里面的init_migration_progress_var函数实现换成下面这个试试:

def init_migration_progress_var(self):
    """
        The method initialize progress-related global variables,
        each table maintains a list of shards that have been migrated.
    """
    self.logger.info("start to init migration_progress variables.")

    # 使用单个 Manager 管理所有共享对象,避免创建大量进程导致卡死
    self._progress_manager = multiprocessing.Manager()

    self.write_progress_file_lock = self._progress_manager.Lock()
    self.table_slice_num_dict = self._progress_manager.dict()
    self.table_completed_slice_dict = self._progress_manager.dict()
    self.table_slice_num_list = []
    self.table_completed_slice_list = []
    
    table_count = 0
    for schema in self.schema_list:
        for table in self.schema_tables[schema]:
            table_name = '`%s`.`%s`' % (schema, table)
            table_slice_list = self._progress_manager.list()
            self.table_completed_slice_list.append(table_slice_list)
            self.table_completed_slice_dict[table_name] = table_slice_list

            table_slice_num = self._progress_manager.Value('i', -10)
            self.table_slice_num_list.append(table_slice_num)
            self.table_slice_num_dict[table_name] = table_slice_num
            table_count += 1
    
    self.logger.info("Finish initing migration_progress_dict. Total tables: %d" % table_count)