<< Click to Display Table of Contents >> Администрирование (Linux) > Расширенная установка > Настройка отказоустойчивого кластера PostgreSQL > РЕД ОС Перенос кластера PostgreSQL под управлением Patroni на другой диск
|
![]() ![]() |
Иногда администратору может потребоваться перенести БД на другой диск. Например, при смене серверного оборудования или расширении дисковой системы.
Перед переносом БД PostgreSQL на другой диск выполните подготовительные действия:
1.Остановите все сервисы. Для этого перейдите в папку с Directum Launcher, запустите командную строку и выполните команду:
./do.sh all stop
2.Выполните резервное копирование БД, которые необходимо перенести, с помощью команды:
pg_basebackup
Перенос данных
1.Остановите Patroni на всех узлах кластера с помощью команды:
systemctl stop patroni
2.К каждому узлу кластера подключите новый диск, на который будут переноситься данные.
ВАЖНО. Диски на каждом узле должны быть одинаковыми по размеру и типу носителя.
3.Проверьте расположение каталога данных с помощью команды:
psql -U postgres -c "SHOW data_directory;"
Пример результата выполнения:
data_directory
-----------------------------
/data/patroni
(1 row)
4.Перенесите данные с помощью утилиты rsync на новый диск. Далее в примерах вместо значений, выделенных жирным шрифтом, укажите свои значения:
rsync -av /data/patroni /pgdata
5.Установите владельца:
chown -R postgres:postgres /pgdata
ПРИМЕЧАНИЕ. Убедитесь, что имя каталога не содержит в конце символ /, иначе – удалите его из команды.
6.На каждом узле кластера в конфигурационном файле PostgreSQL /etc/patroni/patroni.yml в параметре data_dir укажите путь к папке с данными на новом диске.
Пример настройки:
...
postgresql:
listen: <patroni1IP>:5432
connect_address: <patroni1IP>:5432
data_dir: /pgdata/patroni
pgpass: /tmp/pgpass
...
7.Поочередно на каждом узле кластера запустите Patroni. Для этого выполните команду:
systemctl start patroni
8.Выведите информацию о текущем состоянии узлов. Для этого выполните команду:
patronictl -c /etc/patroni/patroni.yml list
Пример результата выполнения:
+ Cluster: postgres (7020291101513301143) --+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------+--------------+---------+---------+----+-----------+
| pg01 | <patroni1IP> | Leader | running | 30 | |
| pg02 | <patroni2IP> | Replica | running | 30 | 0 |
+--------+--------------+---------+---------+----+-----------+
9.Сравните значение параметра TL на узлах. Если оно разное и растет значение Lag in MB, то резервный узел всегда будет отставать от ведущего. Чтобы исправить это, с помощью команды запустите повторную инициализацию резервного узла. Укажите его имя в качестве параметра:
patronictl -c /etc/patroni/patroni.yml reinit <cluster_name> <node_name>
В результате папка с данными удаляется на резервном узле и заново скачивается с ведущего. Значения параметра TL становятся равны на обоих узлах.
© Компания Directum, 2024 |