В этом документе описаны основные функции MatrixGate.
Примечание!
Для интеграции языков программирования с MatrixGate см. Ввод данных — Подключение языков программирования к MatrixGate.
demo в базе данных csvtable.demo=# CREATE TABLE csvtable (
time TIMESTAMP WITH TIME ZONE,
tagid INT,
c1 INT,
c2 INT,
c3 INT
)
USING MARS3
DISTRIBUTED BY (tagid)
ORDER BY (time,tagid);
Отредактируйте файл данных data.csv, указав следующее содержимое:
CODE_BLOCк_1
Запустите mxgate, установив значение --source равным stdin, целевую таблицу — существующую csvtable, а уровень параллелизма — 2. В данном примере хост — mdw.
[mxadmin@mdw ~]$ mxgate \
--source stdin \
--db-database demo \
--db-master-host 127.0.0.1 \
--db-master-port 5432 \
--db-user mxadmin \
--time-format unix-second \
--delimiter "|" \
--target csvtable \
--parallel 2 < data.csv
Подключитесь к базе данных и проверьте успешность загрузки данных.
demo=# SELECT * FROM csvtable ;
time | tagid | c1 | c2 | c3
------------------------+-------+-----+-----+-----
2020-10-27 05:50:23+08 | 3 | 103 | 203 | 303
2020-10-27 05:50:22+08 | 2 | 102 | 202 | 302
2020-10-27 05:50:21+08 | 1 | 101 | 201 | 301
(3 rows)
Создайте таблицу.
demo=# CREATE TABLE json_test(
id int,
j json
)
USING MARS3
ORDER BY (id);
Создайте файл данных.
~/json.csv
1|"{""a"":10, ""b"":""xyz""}"
Загрузите данные
В качестве примера используется режим stdin; другие режимы аналогичны.
Ключевой параметр — --format csv.
[mxadmin@mdw ~]$ mxgate \
--source stdin \
--db-database postgres \
--db-master-host 127.0.0.1 \
--db-master-port 7000 \
--db-user mxadmin \
--time-format raw \
--format csv \
--delimiter "|" \
--target json_test < ~/json.csv
Проверьте загруженные данные.
demo=# SELECT * FROM json_test;
id | j
----+-----------------------
1 | {"a":10, "b":"xyz"}
(1 row)
Создайте таблицу.
demo=# CREATE TABLE json_array_test(
id int,
j json
)
USING MARS3
ORDER BY (id);
Создайте файл данных
~/json_array.csv.
1|"{""{\""a\"":10, \""b\"":\""xyz\""}"",""{\""c\"": 10}""}"
Загрузите данные с помощью mxgate.
[mxadmin@mdw ~]$ mxgate \
--source stdin \
--db-database postgres \
--db-master-host 127.0.0.1 \
--db-master-port 7000 \
--db-user mxadmin \
--time-format raw \
--format csv \
--delimiter "|" \
--target json_array_test < ~/json_array.csv
Проверьте результат.
demo=# SELECT * FROM json_array_test ;
id | j
----+---------------------------------------------
1 | {"{\"a\":10, \"b\":\"xyz\"}","{\"c\": 10}"}
(1 row)
Примечание!
Поскольку столбцы JSON содержат специальные символы, такие как кавычки, параметр --format в mxgate должен быть установлен в значение CSV.
watch — это подкоманда mxgate, которая выводит ряд метрик, описывающих состояние демона mxgate во время выполнения.
watch поддерживает два режима:
[mxadmin@mdw ~]$ mxgate watch
Сбор метрик времени выполнения mxgate каждые три секунды. Пример вывода:
Time WCount ICount WSpeed/s ISpeed/s WBandWidth MB/S BlocakItems
2022-04-28 15:20:58 14478858 14527011 2598081 2627887 2395 0
2022-04-28 15:21:01 22231035 22633254 2584059 2702081 2222 0
2022-04-28 15:21:04 30494310 30500874 2754425 2622540 3551 0
2022-04-28 15:21:07 38004210 38032956 2503300 2510694 2862 0
2022-04-28 15:21:10 46188696 46298223 2728162 2755089 2227 0
...
Используйте параметр --info, чтобы получить описание каждой метрики:
[mxadmin@mdw ~]$ mxgate watch --info
По умолчанию отображаются только метрики скорости. Для диагностики используйте параметр --watch-latency, чтобы отслеживать метрики задержки:
[mxadmin@mdw ~]$ mxgate watch --watch-latency
[mxadmin@mdw ~]$ mxgate watch --history
Вычисляет среднюю скорость ввода данных в час за последние 24 часа до текущего момента. Пример вывода:
TIME RANGE | SPEED/S | BANDWIDTH MB/S | BLOCK ITEMS
2022-04-28 16:00:00-2022-04-28 17:00:00 | 2208010 | 1254.48 | 0
2022-04-28 17:00:00-2022-04-28 18:00:00 | 1157920 | 1327.00 | 0
2022-04-28 18:00:00-2022-04-28 19:00:00 | 2228666 | 2162.32 | 0
2022-04-28 19:00:00-2022-04-28 20:00:00 | 1371092 | 2881.30 | 0
2022-04-28 20:00:00-2022-04-28 21:00:00 | 1575320 | 2608.20 | 0
SPEED/S и BANDWIDTH MB/S обозначают количество записей, вводимых в секунду, и пропускную способность в МБ/с соответственно.
BLOCK ITEMS указывает объем данных, заблокированных в mxgate. Это значение возрастает, когда скорость потребления данных в базе не успевает за скоростью генерации данных в источнике (например, HTTP, Kafka).
Вы можете использовать параметры --watch-start, --watch-end и --watch-duration, чтобы контролировать временной диапазон и интервал при мониторинге исторических данных.
Например:
[mxadmin@mdw ~]$ mxgate watch --history --watch-start '2022-03-27 00:00:00' --watch-end '2022-04-27 00:00:00' --watch-duration '168h'
Эта команда возвращает среднюю скорость ввода данных по неделям (каждые 168 часов) с 27 марта по 27 апреля.
--watch-duration поддерживает три единицы измерения: h, m и s.
mxgate поддерживает изменение параметров параллельной загрузки --stream-prepared и --interval без остановки службы:
--stream-prepared определяет количество активных слотов, используемых mxgate при записи данных в каждую таблицу YMatrix. По умолчанию все таблицы имеют одинаковое количество слотов, но вы можете настроить его вручную для каждого задания (для каждой таблицы разрешено только одно задание).--stream-prepared обычно повышает параллелизм и производительность записи, но требует больше памяти.--stream-prepared снижает использование памяти на сегментах данных (Segments), но может снизить производительность.--interval определяет рабочий интервал для каждого активного слота. Каждый слот ожидает --interval миллисекунд перед отправкой накопленных данных из mxgate в YMatrix.--interval увеличивает задержку записи и размер пакета (при условии непрерывного потока данных в mxgate).--interval снижает задержку и размер пакета.На практике эти два параметра следует настраивать в зависимости от движка хранения и требований пользователя к задержке записи данных.
Пример использования:
$ mxgate set --stream-prepared-cli 3
$ mxgate get --stream-prepared-get
$ mxgate set --job-interval 200
$ mxgate get --job-interval-get
Примечание!
Чтобы установить или получить количество слотов или интервал для конкретной таблицы, добавьте параметр--job <名称>к приведённым выше командам. Каждое задание соответствует одной таблице базы данных. Параметр job состоит из имени схемы и имени таблицы. Например, если ваша таблица называетсяtest_tableв схемеpublic, добавьте--job public.test_tableк команде.
Во время ввода данных источники временных рядов могут эволюционировать, что делает существующие схемы таблиц устаревшими и требует их изменения. В этом разделе объясняется, как mxgate может приостановить запись данных, перезагрузить метаданные таблицы и возобновить запись без остановки службы. Шаги:
mxgate pause -X, чтобы приостановить все слоты таблицы в подготовке к изменению схемы. Параметр -X обязателен для отключения mxgate от слотов базы данных. Изменение схемы невозможно, пока слоты не будут приостановлены. Кроме того, использование параметра -X заставляет команду паузы ожидать синхронно, пока все слоты не будут приостановлены, прежде чем вернуть управление.$ mxgate pause -X
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _`` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
begin to pause all jobs,please wait...
` | __| '__| \ \/ / | _ / _``
* Во-вторых, после приостановки всех слотов целевой таблицы выполните изменения схемы в соответствующей таблице базы данных — например, добавьте или удалите столбцы, удалите таблицу или создайте новую таблицу с тем же именем.
Примечание!
Новая схема таблицы может отличаться, но имя таблицы должно остаться прежним.
Наконец, используйте команду `, чтобы возобновить работу всех слотов таблицы и перезагрузить метаданные таблицы. Параметрmxgate resume -Rобязателен;-Rиresume` вместе завершают операцию перезагрузки.
$ mxgate resume -R
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _`` | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
begin to reload all jobs,please wait...
` | __| '__| \ \/ / | _ / _``
В случаях, когда запущено несколько процессов mxgate, используйте параметр ``, чтобы указать идентификатор процесса. Все приведённые выше команды поддерживают этот параметр, например:
$ mxgate get --job-interval-get -p 70199 --job
Примечание!
Перезагрузка возможна только после приостановки всех слотов соответствующей таблицы в mxgate. В противном случае вы получите ошибку: ``
Примечание!
Если операция приостановки истекает по таймауту (после 50 секунд), операции вставки соответствующего слота отменяются, чтобы гарантировать успешное завершение паузы.
YMatrix реализует функциональность UPSERT в MatrixGate начиная с версии v4.2.0. См. Пакетное объединение данных (UPSERT).
YMatrix реализует миграцию одной таблицы через MatrixGate начиная с версии v4.3.0. См. Миграция одной таблицы.
Примечание!
YMatrix поддерживает не только миграцию одной таблицы, но и миграцию всей базы данных (начиная с версии v4.7.0 и выше). См. Миграция всей базы данных.
Иногда для анализа ключевого поведения mxgate требуются отладочные логи. Однако перезапуск mxgate для включения или отключения отладочного логирования неудобен при диагностике. Поэтому YMatrix предоставляет возможность динамической настройки уровня логирования:
jobs are not paused,please pause them first, чтобы включить подробный уровень логирования mxgate set --log-level VERBOSE, или VERBOSE, чтобы включить самый детализированный уровень mxgate set --log-level DEBUG. Когда отладочное логирование больше не требуется, используйте DEBUG, чтобы вернуть уровень логирования к значению mxgate set --log-level INFO.В некоторых случаях DDL-операции (например, TRUNCATE, ALTER) необходимо выполнять над таблицей, пока mxgate активно вставляет данные. Эта функция позволяет mxgate «освободить» текущие вставки при получении команды DDL, обеспечивая своевременное выполнение DDL.
Поддерживаемые DDL-операции:
=# TRUNCATE TABLE <tablename>;
=# ALTER TABLE <tablename> ADD COLUMN <columnname> <columndatatype>;
=# ALTER TABLE <tablename> DROP COLUMN <columnname>;
=# ALTER TABLE <tablename> ALTER COLUMN <columnname> TYPE <columndatatype>;
=# ALTER TABLE <tablename> RENAME TO <new tablename>;
=# DROP TABLE <tablename>;
=# CREATE TABLE <tablename(column datatype)>;
Обычно параметр stream-prepared (количество параллельных сессий слотов) настраивается вручную в соответствии с нагрузкой различных задач записи (то есть объемом входящих данных). Однако в некоторых сценариях нагрузка записи изменяется динамически и непрерывно, что делает ручную настройку непрактичной.
Поэтому MatrixGate предоставляет механизм автоматической настройки: включите параметр ``, чтобы автоматически адаптироваться к нагрузке записи.
Эту функцию можно включить несколькими способами:
Примечание!
Включение этой функции обеспечивает оптимальную производительность записи в реальном времени, но может не обеспечить наиболее эффективное использование ресурсов сессионных слотов.
Примечание!
Если включена автоматическая настройка и установлен порог high-watermark threshold, автоматическая настройка активируется только при превышении нагрузки записи этого порога.
mxgate поддерживает количественную оценку нагрузки записи от исходной системы в процентах (0–100%). Во время ввода данных вы можете получить нагрузку записи для конкретного задания с помощью следующей команды:
$ mxgate get --source-pressure
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _ | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 source-pressure = 27.26%
Если существует несколько заданий, вы можете получить нагрузку записи для конкретного задания по имени или получить нагрузки сразу для нескольких заданий:
$ mxgate get --source-pressure --job public.t2
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _ | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 source-pressure = 15.73%
$ mxgate get --source-pressure
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _ | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 source-pressure = 35.84%
public.t1 source-pressure = 0%
После количественной оценки нагрузки в процентах вы можете использовать эту метрику для установки порога high-water mark. Если нагрузка записи от источника превышает этот порог, значение отображается красным цветом. В этот момент вы можете вручную скорректировать количество слотов, чтобы уменьшить нагрузку записи, или использовать функцию автоматической настройки слотов mxgate.
Установите порог с помощью следующей команды:
$ mxgate set --high-water-mark <highwatermark> --job <jobname>
Пример:
$ mxgate set --high-water-mark 20 --job public.t2
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _ | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 high-water-mark = 20.00%
Используйте следующую команду, чтобы получить high-water mark для конкретного задания:
$ mxgate get --high-water-mark-get --job public.t2
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _ | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 high-water-mark = 20.00%
$ mxgate get --high-water-mark-get
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _ | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t1 high-water-mark = 0.00%
public.t2 high-water-mark = 20.00%
Примечание!
Если порог превышен, значение давления будет отображаться красным цветом.
Если включена функция автоматической настройки слотов mxgate и установлен high-water mark, количество слотов не будет увеличиваться автоматически, пока нагрузка задания не превысит настроенный порог high-water mark — даже если логика автоматической настройки mxgate предполагает увеличение.
Например, если high-water mark установлен на 75, а текущая нагрузка составляет 35.21, mxgate может определить, что требуется больше слотов. Однако, поскольку нагрузка ниже порога, количество слотов увеличено не будет. Вместо этого появится следующее предупреждение:
[WARN]:-[SlotsLauncher] Sources pressure = 35.21 of job(public.t2) is lower than the high water mark(75), the slot increase is not allowed
Примечание!
Примерные значения приведены только для справки. Устанавливайте high-water mark в соответствии с фактическими требованиями бизнеса и текущими скоростями ввода данных.
Чтобы отключить ограничение high-water mark, используйте следующую команду:
$ mxgate set --disable-high-water-mark=true --job public.t2
******************************************************
__ __ _ _ ____ _
| \/ | __ _| |_ _ __(_)_ __/ ___| __ _| |_ ___
| |\/| |/ _ | __/ _ \
| | | | (_| | |_| | | |> <| |_| | (_| | || __/
|_| |_|\__,_|\__|_| |_/_/\_\\____|\__,_|\__\___|
Version: v5.2.0
Your Copy is Licensed to: yMatrix.cn; 2023-10-26; any
******************************************************
public.t2 high-water-mark = 0.00%
Вы можете выполнить запрос к представлению matrixgate_internal.mxgate_process_view в базе данных matrixmgr, чтобы просмотреть информацию обо всех процессах mxgate, которые в данный момент или ранее подключались к базе данных YMatrix для вставки данных.
matrixmgr=# SELECT * from matrixgate_internal.mxgate_process_view;
id | pid | host | port | source | database | external_table_schema | has_metrics | created_at | exited_at | exited | schema_cleaned | mxgate_config | updated_at
----+--------+------+------+--------+-----------------+----------------------------------+-------------+-------------------------------+-------------------------------+--------+----------------+--------------------------+------------
13 | 63431 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_63431_sdw2_b7b30959 | t | 2024-04-03 16:45:27.789389+08 | 2024-04-03 16:45:27.981513+08 | t | f | {"metrics_interval": 10} |
14 | 66038 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_66038_sdw2_e810e04d | t | 2024-04-03 16:45:54.381101+08 | 2024-04-03 16:45:54.571016+08 | t | f | {"metrics_interval": 15} |
15 | 98535 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_98535_sdw2_b5032eff | f | 2024-04-03 16:49:50.540095+08 | 2024-04-03 16:49:50.753405+08 | t | f | {"metrics_interval": 15} |
16 | 102059 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_102059_sdw2_c0f9dbc4 | f | 2024-04-03 16:50:30.544932+08 | 2024-04-03 16:50:30.749403+08 | t | f | {"metrics_interval": 15} |
17 | 104761 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_104761_sdw2_f284b2f2 | t | 2024-04-03 16:50:40.909025+08 | 2024-04-03 16:50:41.10522+08 | t | f | {"metrics_interval": 10} |
18 | 105109 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_105109_sdw2_9ffa1360 | f | 2024-04-03 16:50:42.324334+08 | 2024-04-03 16:50:42.501187+08 | t | f | {"metrics_interval": 15} |
19 | 110590 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_110590_sdw2_527394f9 | f | 2024-04-03 16:51:28.265894+08 | 2024-04-03 16:51:28.468763+08 | t | f | {"metrics_interval": 0} |
20 | 110760 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_110760_sdw2_c7d787a3 | t | 2024-04-03 16:51:29.730855+08 | 2024-04-03 16:51:29.957642+08 | t | f | {"metrics_interval": 10} |
21 | 110882 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_110882_sdw2_6bdbd471 | f | 2024-04-03 16:51:31.189347+08 | 2024-04-03 16:51:31.383211+08 | t | f | {"metrics_interval": 15} |
22 | 112484 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_112484_sdw2_83dc4c87 | f | 2024-04-03 16:51:47.735186+08 | 2024-04-03 16:51:47.943989+08 | t | f | {"metrics_interval": 0} |
23 | 112608 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_112608_sdw2_ebd6fcb1 | t | 2024-04-03 16:51:49.202759+08 | 2024-04-03 16:51:49.413013+08 | t | f | {"metrics_interval": 10} |
24 | 112746 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_112746_sdw2_804d4e9c | f | 2024-04-03 16:51:50.651448+08 | 2024-04-03 16:51:50.82829+08 | t | f | {"metrics_interval": 15} |
25 | 114206 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_114206_sdw2_1376e4f0 | f | 2024-04-03 16:52:05.954983+08 | 2024-04-03 16:52:06.150763+08 | t | f | {"metrics_interval": 0} |
26 | 114323 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_114323_sdw2_31f5fe71 | t | 2024-04-03 16:52:07.392493+08 | 2024-04-03 16:52:07.606231+08 | t | f | {"metrics_interval": 10} |
27 | 114454 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_114454_sdw2_84a2439d | f | 2024-04-03 16:52:08.849134+08 | 2024-04-03 16:52:09.044388+08 | t | f | {"metrics_interval": 15} |
28 | 118611 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_118611_sdw2_11aa241a | f | 2024-04-03 16:54:08.596567+08 | 2024-04-03 16:54:08.806036+08 | t | f | {"metrics_interval": 0} |
29 | 118754 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_118754_sdw2_9c835dfc | t | 2024-04-03 16:54:10.04123+08 | 2024-04-03 16:54:10.28288+08 | t | f | {"metrics_interval": 10} |
30 | 118879 | sdw2 | 8891 | http | kafka_gate_json | _matrixgate_118879_sdw2_d58b7ed2 | f | 2024-04-03 16:54:11.521661+08 | 2024-04-03 16:54:11.72412+08 | t | f | {"metrics_interval": 15} |
(18 rows)
Либо используйте следующую команду:
$ mxgate get mxgate-process-info

Описание параметров:
| Параметр | Описание |
|---|---|
| id | Автоинкрементный идентификатор |
| pid | PID процесса mxgate |
| host | Имя хоста сервера, на котором запущен mxgate |
| port | Номер порта gRPC-сервиса, предоставляемого mxgate |
| created_at | Время создания процесса mxgate. Этот временной штамп не обновляется после запуска |
| exited | Указывает, завершился ли процесс mxgate. Обычно при работе значение равно f. Если процесс завершается корректно (например, через Ctrl+C или mxgate stop), значение становится t. При аварийном завершении (например, процесс убит или хост отключился) это поле может остаться равным f, поскольку mxgate не успевает обновить его перед завершением |
| schema_cleaned | Указывает, была ли удалена внешняя схема, используемая mxgate. Во время работы значение — f. После нормального завершения процесса оно становится t в течение нескольких секунд. При аварийном завершении очистка может быть выполнена не сразу. YMatrix внутренне отслеживает сигналы «живости» mxgate; если в течение более чем 2 часов сигналы не поступают, схема удаляется, а поле принимает значение t |
| database | База данных, к которой подключён mxgate |
| source | Тип источника данных (stdin, http, grpc, transfer) |
| updated_at | Обновляется каждые 3 секунды процессом mxgate. Отражает время последнего обновления на YMatrix Master. После нормального завершения значение перестаёт обновляться |
| has_metrics | Указывает, активен ли модуль сбора внутренней статистики. Если значение f, команда mxgate get metrics не возвращает данных |
| external_table_schema | Имя схемы, используемой для внешних таблиц, созданных mxgate. Применяется для удаления остаточных схем после аварийного завершения |
| mxgate_config | Хранит ключевые параметры конфигурации из файла настроек mxgate, что позволяет проверить конфигурацию после завершения процесса (поддерживается начиная с версии v5.3.2) |
В настоящее время все источники данных mxgate (stdin, http, grpc, transfer) поддерживают сбор статистики в таблицах каталога вставок и журналах ошибок:
INSERT (успешную, частично успешную или неудачную) на каждый слот mxgate.Просмотр таблицы каталога вставок:
=# SELECT * FROM matrixgate_internal.insert_catalog;
id | mxgate_id | insert_sequence | slot_id | session_id | created_at | status | source | flows_cnt | total_lines | bytes_length | target_table | message | job_id
----+-----------+-----------------+---------+------------+------------------------+---------+--------+-----------+-------------+--------------+-----------------------------------------------------------------+-----------------------+--------
3 | 39 | 1 | 10 | 152832 | 2024-03-15 13:17:32+08 | partial | http | 10 | 100 | 600 | "public"."concurrent_insert_error_log_varification_http_source" | 20 malformed messages | 1
(1 row)
Описание параметров:
| Параметр | Описание |
|---|---|
| id | Автоинкрементный идентификатор |
| mxgate_id | Идентификатор процесса mxgate, соответствует полю id в mxgate_process_view |
| insert_sequence | Порядковый номер операции вставки. Увеличивается на 1 для каждой вставки в пределах одного слота |
| slot_id | Идентификатор слота, выполняющего вставку |
| session_id | Идентификатор сессии соединения между mxgate (в роли клиента) и базой данных |
| created_at | Временная метка создания данной записи о вставке |
| status | Статус вставки: success, partial или failed |
| source | Тип источника данных mxgate |
| flows_cnt | Количество пакетов в данной операции вставки |
| total_lines | Общее количество вставленных строк |
| bytes_length | Общий объём данных в байтах |
| target_table | Целевая таблица для загрузки данных |
| message | Сообщение об ошибке, если вставка завершилась неудачно |
| job_id | Идентификатор задания, формат: <schema>.<table> |
Просмотр таблицы журнала ошибок:
=# SELECT * FROM matrixgate_internal.insert_error_log;
catalog_id | created_at | received_at | line_number | errmsg | rawdata
------------+------------------------+------------------------+-------------+-----------------------------------------------------------+----------
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 6 | invalid input syntax for type integer: "error", column id | error|c5
3 | 2024-03-15 13:17:32+08 | 2024-03-15 13:17:31+08 | 9 | invalid input syntax for type integer: "error", column id | error|c8
(20 rows)
Описание параметров:
| Параметр | Описание |
|---|---|
| catalog_id | Автоинкрементный идентификатор, соответствует id в таблице каталога вставок |
| created_at | Временная метка создания данной записи |
| received_at | Временная метка получения данных процессом mxgate |
| line_number | Номер строки данных |
| errmsg | Сообщение об ошибке |
| rawdata | Исходные входные данные |
Примечание!
Если весь пакет данных не был вставлен в результате одной операции, в таблицеinsert_catalogфиксируется только одна записьfailed. Отдельные ошибочные записи не попадают в таблицуinsert_error_log.