Часто задаваемые вопросы о новой архитектуре

Этот документ описывает распространённые проблемы новой архитектуры YMatrix 5.X.

1 Я слышал, что Supervisor в версии 5.X нельзя перезапускать произвольно. Почему? Что произойдёт при его перезапуске?


В эпоху 4.X поддерживался перезапуск компонентов, таких как графический интерфейс (MXUI), с помощью sudo systemctl restart matrixdb.supervisor.service.
Однако в архитектуре 5.X Supervisor управляет большим количеством дочерних процессов, включая etcd, службы высокой доступности и процессы Postmaster.
Поэтому при произвольном останове или перезапуске Supervisor произойдёт перезапуск ключевых процессов, таких как etcd и Postmaster. В лучшем случае кластер аварийно завершит работу, в худшем — произойдёт потеря данных.

Следовательно, за исключением случаев удаления кластера базы данных, удаления программного обеспечения базы данных и т.п., не используйте команду для перезапуска Supervisor.

2 Почему на каждом сервере запущен процесс Shard/Cluster, но только один из них активен?


Новая архитектура разработана с учётом обеспечения высокой доступности даже при самых строгих сетевых разделениях.

Сервис Cluster/Shard отвечает за управление состоянием кластера базы данных. Если сетевые разделения препятствуют его связи с другими частями кластера, которые должны работать корректно, он не сможет принять правильное решение о состоянии кластера.
Чтобы максимально сохранить доступность кластера базы данных в любой ситуации сбоя, сервисы, требующие принятия решений о состоянии кластера, также обеспечивают собственную высокую доступность. Способность объективно оценивать ситуацию при различных сетевых исключениях — это ключевая причина внедрения кластеров etcd.
Обычно набор сервисов Cluster/Shard запускается на каждом узле. Однако в рамках всего кластера одновременно может быть активен только один экземпляр каждого сервиса. Остальные неактивные экземпляры автоматически выберут один из них в качестве нового активного, как только истечёт таймаут активного экземпляра.

3 Как выполнить масштабирование текущей версии в режиме онлайн?


Вы можете использовать Графический интерфейс для операций масштабирования.

4 Запуск отдельного компонента в YMatrix 5


Причины отказа от использования matrixdb.supervisor.service

В архитектуре YMatrix 5 supervisor управляет большим количеством дочерних процессов, включая кластеры etcd, службы высокой доступности, процессы postmaster и др. Произвольная остановка или перезапуск supervisor приведёт к перезапуску ключевых процессов, таких как etcd и postmaster, что вызовет проблемы с базой данных.
Поэтому при необходимости перезапуска определённого компонента рекомендуется использовать инструмент supervisorctl.

Управление отдельными компонентами

  1. Проверка статуса и информации о supervisor
    [mxadmin@mdw3 ~]$ systemctl status matrixdb5.supervisor.service
    ● matrixdb5.supervisor.service - MatrixDB 5 Supervisord Daemon
    Loaded: loaded (/usr/lib/systemd/system/matrixdb5.supervisor.service; enabled; vendor preset: enabled)
    Active: active (running) since Wed 2023-05-24 21:04:35 PDT; 1h 28min ago
    Process: 4426 ExecStop=/bin/bash -c exec "$MXHOME"/bin/supervisorctl shutdown (code=exited, status=1/FAILURE)
    Main PID: 4439 (supervisord)
    Memory: 605.4M
    CGroup: /system.slice/matrixdb5.supervisor.service
            ├─  954 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
            ├─  955 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
            ├─ 3357 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
            ├─ 4439 /opt/ymatrix/matrixdb5/bin/supervisord -c /etc/matrixdb5/supervisor.conf
            ├─ 4451 mxctl telegraf exec --gpname mdw3 --mxui-collector --socket-addr mdw3:51574 --cluster-id AuWFhsrjyywC4xfMahgyor --master-role --dbhost mdw3 --dbport ...
            ├─ 4461 mxctl telegraf exec --gpname mdw3 --mxui-collector --socket-addr mdw3:56639 --cluster-id GFpQhTxkwGqb7qM6iYVA8y --master-role --dbhost mdw3 --dbport ...
            ├─ 4470 /opt/ymatrix/matrixdb5/bin/cylinder -nofile -port 4637 -db-cluster-id AuWFhsrjyywC4xfMahgyor
            ├─ 4479 /opt/ymatrix/matrixdb5/bin/telegraf --config /tmp/mxui_collector_AuWFhsrjyywC4xfMahgyor.conf
            ├─ 4515 /opt/ymatrix/matrixdb5/bin/telegraf --config /tmp/mxui_collector_GFpQhTxkwGqb7qM6iYVA8y.conf
            ├─ 4528 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
            ├─ 4539 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
            ├─ 4997 /opt/ymatrix/matrixdb5/bin/mxui
            ├─12093 /usr/lib64/sa/sadc -S DISK 4 2 /tmp/sysstat-3640257011
            └─12094 /usr/lib64/sa/sadc -S DISK 4 2 /tmp/sysstat-3256168522
  2. Проверка состояния работы каждого компонента
    [mxadmin@mdw3 ~]$ supervisorctl status
    Status:
         1. pc_id:{group:"mxui_collector_AuWFhsrjyywC4xfMahgyor" name:"mxui_collector_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4451, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/mxui_collector_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/mxui_collector_AuWFhsrjyywC4xfMahgyor.log" pid:4451
         2. pc_id:{group:"cylinder_AuWFhsrjyywC4xfMahgyor" name:"cylinder_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4470, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/cylinder_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/cylinder_AuWFhsrjyywC4xfMahgyor.log" pid:4470
         3. pc_id:{group:"shard_AuWFhsrjyywC4xfMahgyor" name:"shard_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4477, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/shard_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/shard_AuWFhsrjyywC4xfMahgyor.log" pid:4477
         4. pc_id:{group:"mxui" name:"mxui"} describe:"pid 4997, uptime 1:24:43" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/mxui.log" stdout_log_file:"/var/log/matrixdb5/mxui.log" pid:4997
         5. pc_id:{group:"replication-1_AuWFhsrjyywC4xfMahgyor" name:"replication-1_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4484, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/replication-1_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/replication-1_AuWFhsrjyywC4xfMahgyor.log" pid:4484
         6. pc_id:{group:"replication-3_AuWFhsrjyywC4xfMahgyor" name:"replication-3_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4466, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/replication-3_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/replication-3_AuWFhsrjyywC4xfMahgyor.log" pid:4466
         7. pc_id:{group:"etcd" name:"etcd"} describe:"pid 4450, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/mxdata_20230514185455/etcd/log/etcd.log" stdout_log_file:"/mxdata_20230514185455/etcd/log/etcd.log" pid:4450
         8. pc_id:{group:"replication-2_AuWFhsrjyywC4xfMahgyor" name:"replication-2_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4453, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/replication-2_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/replication-2_AuWFhsrjyywC4xfMahgyor.log" pid:4453
         9. pc_id:{group:"cluster_AuWFhsrjyywC4xfMahgyor" name:"cluster_AuWFhsrjyywC4xfMahgyor"} describe:"pid 4454, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/cluster_AuWFhsrjyywC4xfMahgyor.log" stdout_log_file:"/var/log/matrixdb5/cluster_AuWFhsrjyywC4xfMahgyor.log" pid:4454
         10. pc_id:{group:"deployer" name:"deployer"} describe:"pid 4457, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/deployer.log" stdout_log_file:"/var/log/matrixdb5/deployer.log" pid:4457
         11. pc_id:{group:"mxui_collector_GFpQhTxkwGqb7qM6iYVA8y" name:"mxui_collector_GFpQhTxkwGqb7qM6iYVA8y"} describe:"pid 4461, uptime 1:29:17" now:1684992833 state:"Running" log_file:"/var/log/matrixdb5/mxui_collector_GFpQhTxkwGqb7qM6iYVA8y.log" stdout_log_file:"/var/log/matrixdb5/mxui_collector_GFpQhTxkwGqb7qM6iYVA8y.log" pid:4461
  3. Перезапуск компонента, например: графический интерфейс (Mxui)
    [mxadmin@mdw3 ~]$ supervisorctl restart mxui
    Restarted:
         1. name:"mxui"

5 Может ли Supervisor автоматически восстановить Segment?


Нет.

Сервис Supervisor не запускает Segment (или группу процессов PostgreSQL) автоматически. Supervisor может запускать только те сервисы, которые зарегистрированы в нём. Группа процессов PostgreSQL является потомком процесса службы репликации и управляется именно этим процессом, а не сервисом Supervisor. Запуск и остановка группы процессов осуществляются исключительно инструментами управления кластером (mxstart, mxstop, mxrecover и др.) через вызов API службы репликации.