Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Cинхронная репликация на Firebird 4.0 Beta1  [new]
dedRasta
Member

Откуда:
Сообщений: 129
Пытаюсь настроить синхронную репликацию для Firebird 4.0 Beta1

1) Останавливаю Firebird на мастере (Win64) и реплике (Win32).

2) редактирую replication.conf на стороне мастера:

database = e:\baza4\master.fdb
 {
	# (for synchronous replication)
	sync_replica = SYSDBA:masterkey@repserver/3054:REP
 }


replication.conf со стороны реплики оставляю по умолчанию, кроме строки

verbose_logging = true

3) Копирую master.fdb на сервер реплики, переименовываю в replica.fdb
и выполняю команду

gfix -replica read_only e:\baza4\REPLICA.fdb -user SYSDBA -pass masterkey


4) Стартую Firebird на реплике

5) Стартую Firebird на мастере

6) Вношу изменения на мастере, завершаю транзакцию. На реплике изменений нет, в replication.log пусто.
27 мар 19, 13:18    [21845000]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9073
Плагин репликации не принимает псевдонимы - только абсолютные имена файлов.
Соответственно, сейчас реплика не может работать с "DatabaseAccess = None".
27 мар 19, 14:23    [21845104]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
dedRasta,

попробуй в sync_replica неправильную строку коннекта ввести. Если database = e:\baza4\master.fdb правильно указан ругань должна начаться при подтверждении транзакции на мастере
27 мар 19, 14:24    [21845105]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
Basil A. Sidorov
Плагин репликации не принимает псевдонимы - только абсолютные имена файлов

это касается только конфига. У него там полное имя (e:\baza4\master.fdb).
27 мар 19, 14:37    [21845118]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
Симонов Денис
попробуй в sync_replica неправильную строку коннекта ввести. Если database = e:\baza4\master.fdb правильно указан ругань должна начаться при подтверждении транзакции на мастере

ругаться (в лог) будет сразу при коннекте к мастеру
27 мар 19, 14:40    [21845121]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9073
dimitr
это касается только конфига. У него там полное имя (e:\baza4\master.fdb).
А в строке подключения - псевдоним.
Который ничему не соответствует в replication.conf реплики.
27 мар 19, 14:42    [21845123]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
Basil A. Sidorov
А в строке подключения - псевдоним.
Который ничему не соответствует в replication.conf реплики.

Во-первых, для синхронной репликации настройки в replication.conf на стороне реплики вообще не нужны, они тупо игнорируются. Во-вторых, коннект по алиасу должен отлично работать. В конфиге база ищется после преобразования алиаса в полное имя.
27 мар 19, 14:44    [21845126]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
dedRasta
На реплике изменений нет, в replication.log пусто

replication.log на стороне мастера тоже пустой?
27 мар 19, 14:45    [21845127]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dedRasta
Member

Откуда:
Сообщений: 129
dimitr
dedRasta
На реплике изменений нет, в replication.log пусто

replication.log на стороне мастера тоже пустой?


Да, пустой.
27 мар 19, 15:53    [21845209]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dedRasta
Member

Откуда:
Сообщений: 129
Нашел ошибку - в пути к БД мастера (копипаст окаянный). После этого на мастере в replication.log полезли ошибки, но это уже другая песня.
Когда разбирался с Pooling of External connections, сделал запись из мастера в другую БД по триггеру. вот и получилось:
MASTER (origin) Wed Mar 27 16:07:59 2019
Database: d:\Baza4\MASTER.FDB
ERROR: Execute statement error at isc_dsql_execute2 :
335544361 : attempted update during read-only transaction
335544842 : At procedure 'SP_WRITE_CHG_CONN' line: 20, col: 1


Т.е. триггеры в реплике во время репликации в read_only реплику срабатывают тоже в read-only transaction.
Завтра их уберу и буду дальше смотреть.
27 мар 19, 16:41    [21845253]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9073
dimitr
Во-первых, для синхронной репликации настройки в replication.conf на стороне реплики вообще не нужны, они тупо игнорируются. Во-вторых, коннект по алиасу должен отлично работать. В конфиге база ищется после преобразования алиаса в полное имя.
В вырожденном случая мастера и ведомого на одном хосте оно работает "как-то не так".
Но я ещё посмотрю повнимательнее.
27 мар 19, 17:49    [21845299]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
dedRasta
Т.е. триггеры в реплике во время репликации в read_only реплику срабатывают тоже в read-only transaction.
Завтра их уберу и буду дальше смотреть.

триггера уровня таблицы в реплике вообще не срабатывают. Триггера уровня БД (ON CONNECT и т.п.) срабатывают, но не имеют права писать в [свою] базу. При желании в них можно это условно "загасить" через проверку RDB$GET_CONTEXT('SYSTEM', 'READ_ONLY').
27 мар 19, 19:21    [21845371]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dedRasta
Member

Откуда:
Сообщений: 129
Репликация вроде пошла, но полезли ошибки.
Создал пустую БД. При попытке выполнить на мастере любой DML запрос
CREATE GENERATOR GEN_BRANCH_ID;

или
CREATE TABLE BRANCH (
    BRANCH_ID    INTEGER NOT NULL,
    BRANCH_NAME  VARCHAR(30) NOT NULL,
    COMMENT      VARCHAR(50)
);

получаю
MASTER Thu Mar 28 15:09:55 2019
Database: d:\Baza4\test.FDB
Replication is stopped due to critical error(s)
Replication error
Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 1, column 1

Когда использую БД с с уже созданной пустой таблицей и пытаюсь залить в нее данные:
INSERT INTO BRANCH (BRANCH_ID, BRANCH_NAME, COMMENT) VALUES (1, 'НПК', 'научно-производственный комплекс');
несколько раз это проходит, но потом неизменно получаю
MASTER Thu Mar 28 15:30:33 2019
Database: d:\Baza4\test.FDB
Replication is stopped due to critical error(s)
Replication error
Transaction 70 already exists

Машинки стоят на соседних столах, соединены через хаб.
28 мар 19, 15:53    [21846260]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
dedRasta,

а ты репликацию DDL включил?
28 мар 19, 16:26    [21846323]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dedRasta
Member

Откуда:
Сообщений: 129
Симонов Денис
dedRasta,

а ты репликацию DDL включил?
А как? В replication.conf и RN ничего про это не нашел.
28 мар 19, 16:32    [21846334]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
dedRasta,

упс, в окончательной версии эту настройку выкинули
28 мар 19, 16:38    [21846341]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
dedRasta,

вот что нашёл

RN
Warning

Read-only connections have the potential to conflict with replication if DDL statements that are performed
on the master database are of the kind that requires an exclusive lock on metadata.
28 мар 19, 20:45    [21846602]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
Симонов Денис
в окончательной версии эту настройку выкинули

ее и не было никогда

Симонов Денис
вот что нашёл

это про чтение из реплики в момент вливания в нее DDL
28 мар 19, 21:03    [21846616]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
dimitr,

ну я подозреваю что она у него в каком-нибудь IBE для просмотра открыта
28 мар 19, 21:27    [21846629]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
Симонов Денис,

ошибка будет вменяемая в этом случае
28 мар 19, 21:32    [21846632]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dedRasta
Member

Откуда:
Сообщений: 129
Сегодня попробовал без IBe (т.е. вообще). Триггер и генератор из таблицы убрал, реплику сделал read_write.
Получается все то же самое:
+
gfix -replica read_write e:\baza4\test_REP.fdb -user SYSDBA -pass masterkey


isql.exe -ch WIN1251 -u SYSDBA -pas masterkey test

Database: test, User: SYSDBA
SQL> CREATE TABLE BRANCH (
CON> BRANCH_ID INTEGER NOT NULL,
CON> BRANCH_NAME VARCHAR(30) NOT NULL,
CON> COMMENT VARCHAR(50)
CON> );
SQL> commit;
SQL> show tables;
BRANCH

SQL> quit;

d:\Firebird-4.0.0.1433-0_x64>

MASTER

firebird.log:

MASTER Fri Mar 29 10:00:55 2019
Database: d:\Baza4\test.FDB
Replication is stopped due to critical error(s)
Replication error
Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 1, column 1

replication.log:

MASTER (origin) Fri Mar 29 10:00:55 2019
Database: d:\Baza4\test.FDB
ERROR: Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 1, column 1

REP

REP (replica) Fri Mar 29 10:00:54 2019
Database: e:\Baza4\test_REP.FDB
ERROR: Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 1, column 1



Database: localhost/3050:test, User: SYSDBA
SQL> show tables;
BRANCH

SQL> select * from branch;
SQL> INSERT INTO BRANCH (BRANCH_ID, BRANCH_NAME, COMMENT)
CON> VALUES (1, 'НПК', 'научно-производственный комплекс');
SQL> commit;
SQL>

firebird.log
MASTER Fri Mar 29 10:43:08 2019
Database: d:\Baza4\test.FDB
Replication is stopped due to critical error(s)
Replication error
Transaction 9 already exists

replication.log
WSSP670 (origin) Fri Mar 29 10:43:08 2019
Database: d:\Baza4\test.FDB
ERROR: Transaction 9 already exists

replication.log
REP (replica) Fri Mar 29 10:43:08 2019
Database: e:\Baza4\test_REP.FDB
ERROR: Transaction 9 already exists
29 мар 19, 11:00    [21846856]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9393
dedRasta,

ты CREATE TABLE в embedded что ли делаешь? Это намеренно?
Можешь проверить x64 и x64? Может там что-то несовместимо получилось
29 мар 19, 11:16    [21846879]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
dedRasta,

сейчас буду у себя проверять
29 мар 19, 11:56    [21846929]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dedRasta
Member

Откуда:
Сообщений: 129
Симонов Денис
dedRasta,
ты CREATE TABLE в embedded что ли делаешь? Это намеренно?
Можешь проверить x64 и x64? Может там что-то несовместимо получилось

C TCP/IP то же самое:
+
isql.exe -ch WIN1251 -u SYSDBA -pas masterkey MASTER/3050:test

Database: MASTER/3050:test, User: SYSDBA
SQL> show tables;
There are no tables in this database
SQL> CREATE TABLE BRANCH (
CON> BRANCH_ID INTEGER NOT NULL,
CON> BRANCH_NAME VARCHAR(30) NOT NULL,
CON> COMMENT VARCHAR(50)
CON> );
SQL> commit;
SQL>

MASTER:
firebird.log
MASTER Fri Mar 29 14:07:42 2019
Database: d:\Baza4\test.FDB
Replication is stopped due to critical error(s)
Replication error
Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 1, column 1

replication.log
MASTER (origin) Fri Mar 29 14:07:42 2019
Database: d:\Baza4\test.FDB
ERROR: Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 1, column 1

REP - replication.log
REP5 (replica) Fri Mar 29 14:07:42 2019
Database: e:\Baza4\test_REP.FDB
ERROR: Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 1, column 1
С Win64-Win64 разрядностью не могу проверить - в ближайшей окрестности только у меня машинка Win64.
29 мар 19, 14:35    [21847104]     Ответить | Цитировать Сообщить модератору
 Re: Cинхронная репликация на Firebird 4.0 Beta1  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6847
dedRasta
С Win64-Win64 разрядностью не могу проверить - в ближайшей окрестности только у меня машинка Win64.

с самой на себя проверь, через localhost. Один и тот же инстанс ФБ, разные базы.
29 мар 19, 15:19    [21847216]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить