Переименование таблицы в SymmetricDS с помощью Transform - PullRequest
0 голосов
/ 14 апреля 2020

Я хотел бы использовать symbricDS для копирования таблицы с клиентского узла на главный узел, но с другим именем таблицы на главном узле. Я использую «преобразование», чтобы переименовать таблицу. Это нормально работает, если моя переименованная таблица находится в схеме главного узла (где также расположены все основные таблицы символов).

Но у меня есть две проблемы:

a) На В тот момент, когда мне всегда нужно создать целевую разметку таблицы перед синхронизацией. Возможно ли, что symbricDSD автоматически создает переименованную целевую таблицу?

б) Переименование таблицы больше не работает, если я нахожу переименованную таблицу в другой базе данных (называемой master_db), даже если я везде указываю target_catalog_name это необходимо.

Я благодарен за любую помощь по этой проблеме.

Ниже приведен код, который я использую для настройки главного и клиентского узлов.

- главный узел конфигурации:

    INSERT INTO `symmetricds_master`.`sym_node_group` (`node_group_id`)
    VALUES ('master_node');

    INSERT INTO `symmetricds_master`.`sym_node_group_link` 
    (`source_node_group_id`,`target_node_group_id`,`data_event_action`) 
    VALUES ('client_node', 'master_node', 'P');

    INSERT INTO `symmetricds_master`.`sym_node_group_link` 
    (`source_node_group_id`, `target_node_group_id`, `data_event_action`) 
    VALUES ('master_node', 'client_node', 'W');

- клиентский узел конфигурации:

    insert into  symmetricds.`SYM_ROUTER` 
    (router_id,source_node_group_id,target_catalog_name,target_node_group_id,create_time,last_update_time) 
    values ('client2master','client_node','master_db','master_node',current_timestamp, current_timestamp);

    insert into symmetricds.sym_trigger 
    (trigger_id,source_catalog_name, source_table_name,channel_id,last_update_time,create_time)
    values ('TriggerA','source_db','ATable','default',current_timestamp,current_timestamp);

    insert into symmetricds.sym_trigger_router 
    (trigger_id, router_id, initial_load_order, create_time, last_update_time)
    values ('TriggerA', 'client2master', 1, current_timestamp, current_timestamp);

    insert into symmetricds.sym_transform_table 
    (transform_id,source_node_group_id,target_node_group_id,transform_point,source_catalog_name,source_table_name,target_catalog_name,target_table_name,delete_action,column_policy)
    values ('TransfAtoB', 'client_node', 'master_node', 'Load','source_db','ATable','master_db','BTable', 'DEL_ROW', 'IMPLIED');

1 Ответ

0 голосов
/ 14 апреля 2020

Мое первое наблюдение заключается в том, что существуют две разные схемы базы данных конфигурации symbricDs. Это не нужно. Достаточно иметь одну основную базу данных конфигурации simricricDs - на центральном узле разрешить всем клиентам при регистрации загрузить соответствующую конфигурацию и применить ее к своим локальным схемам symbricD.

a) На данный момент я всегда нужно создать целевую разметку таблицы перед синхронизацией. Возможно ли, что symbricDS автоматически создает переименованную целевую таблицу?

Используйте команды администратора DDL для создания отсутствующей таблицы на узле назначения

b) Переименование таблицы не больше не будет работать, если я найду свою переименованную таблицу в другой базе данных (называемой master_db), даже если я указываю target_catalog_name везде, где это необходимо.

У вас должен быть один master_db. Зачем вам находить таблицу в другой базе данных?

...