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)
