Multi PostgreSQL славянских репликации: различия между версиями
Ikbot (обсуждение | вклад) |
Ikbot (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| + | <span data-link_translate_en_title="Replication PostgreSQL Slavic multi" data-link_translate_en_url="Replication+PostgreSQL+Slavic+multi"></span>[[:en:Replication PostgreSQL Slavic multi]][[en:Replication PostgreSQL Slavic multi]] | ||
<span data-link_translate_he_title="שכפול מרובה PostgreSQL סלאבית" data-link_translate_he_url="%D7%A9%D7%9B%D7%A4%D7%95%D7%9C+%D7%9E%D7%A8%D7%95%D7%91%D7%94+PostgreSQL+%D7%A1%D7%9C%D7%90%D7%91%D7%99%D7%AA"></span>[[:he:שכפול מרובה PostgreSQL סלאבית]][[he:שכפול מרובה PostgreSQL סלאבית]] | <span data-link_translate_he_title="שכפול מרובה PostgreSQL סלאבית" data-link_translate_he_url="%D7%A9%D7%9B%D7%A4%D7%95%D7%9C+%D7%9E%D7%A8%D7%95%D7%91%D7%94+PostgreSQL+%D7%A1%D7%9C%D7%90%D7%91%D7%99%D7%AA"></span>[[:he:שכפול מרובה PostgreSQL סלאבית]][[he:שכפול מרובה PostgreSQL סלאבית]] | ||
<span data-link_translate_ro_title="Replicare PostgreSQL slave multi" data-link_translate_ro_url="Replicare+PostgreSQL+slave+multi"></span>[[:ro:Replicare PostgreSQL slave multi]][[ro:Replicare PostgreSQL slave multi]] | <span data-link_translate_ro_title="Replicare PostgreSQL slave multi" data-link_translate_ro_url="Replicare+PostgreSQL+slave+multi"></span>[[:ro:Replicare PostgreSQL slave multi]][[ro:Replicare PostgreSQL slave multi]] | ||
Версия 10:24, 3 июня 2016
en:Replication PostgreSQL Slavic multi
he:שכפול מרובה PostgreSQL סלאבית
ro:Replicare PostgreSQL slave multi
pl:Replikacja wielu słowiańskich PostgreSQL
ja:レプリケーション PostgreSQL スラブ マルチ
ar:النسخ المتماثل السلافية كيو متعدد
zh:复制 PostgreSQL 斯拉夫语多
de:Replikation PostgreSQL slawischen multi
nl:Replicatie PostgreSQL Slavische multi
it:Replica PostgreSQL slavo multi
pt:Replicação PostgreSQL eslavo multi
es:Replicación multi de PostgreSQL Slavic
fr:Replication PostgreSQL multi slaves
Эта статья является результатом автоматического перевода, выполняемого программного обеспечения. Вы можете посмотреть исходный статьи здесь.
Введение
Эта страница посвящена реализации асинхронных PostgreSQL потоковой репликации с одной мастер и две рабы. Наши славянские будет настроен как горячий резерв, то есть что это будет возможно для запуска запросов (только чтение ) на них.
Контекст данного размещения :
У нас есть 3 Серверов Debian 8 (Последнее обновление ) :
Postgres 01 (10.1.1.75) : будет нашим господином
Postgres02 (10.1.1.90) : будет рабом
Postgres03 (10.1.1.199) : будет рабом второй
Указанные команды будет выполнять как корень, когда они предваряются "#" и как пользователя Postgres системы когда они предваряются "$".
Установка PostgreSQL и предварительной конфигурации трех серверов
Все команды в этой части, чтобы сделать на каждом из серверов.
В качестве первого шага, рекомендуется иметь один файл /etc/hosts заполняется с матчей каждого сервера, как это (путем адаптации с хостов и IP-адреса ваших собственных серверов ) :
# cat /etc/hosts 127.0.0.1 localhost 10.1.1.75 Postgres 01 10.1.1.90 Postgres 02 10.1.1.199 Postgres 03
Добавьте депозит APT PostgreSQL :
# echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/postgres.list
Мы импортировать открытый ключ этого месторождения :
# gpg --keyserver pgpkeys.mit.edu --recv-key 7FCC7D46ACCC4CF8 && gpg -a --export 7FCC7D46ACCC4CF8 | apt-key add -
gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
gpg: requesting key ACCC4CF8 from hkp server pgpkeys.mit.edu
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key ACCC4CF8: public key "PostgreSQL Debian Repository" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
Он обновляет кэш APT с учетом вклада :
# apt-get update
Установка пакет postgresql (Последняя стабильная версия установки 9.5 в то время, когда эти строки пишутся ) :
# apt-get install postgresql
Мы определяем пароль (по своему выбору, но безопасный ) и генерирует пары ключей ssh (без пароля ) для системы пользователя postgres :
# passwd postgres
# su - postgres
$ ssh-keygen
Мы копируем пользователя postgres с и между каждым сервером общественного ssh ключ :
С момента первого сервера (postgres01 в нашем случае ) к второй (postgres02 для нас ) и troisiseme (postgres03) :
root@postgres01:~# su - postgres
postgres@postgres01:~$ ssh-copy-id postgres02
postgres@postgres01:~$ ssh-copy-id postgres03
Со второго на первый и третий сервер :
root@postgres02:~# su - postgres
postgres@postgres02:~$ ssh-copy-id postgres01
postgres@postgres02:~$ ssh-copy-id postgres03
С третьего на первой и второй сервер :
root@postgres03:~# su - postgres
postgres@postgres03:~$ ssh-copy-id postgres01
postgres@postgres03:~$ ssh-copy-id postgres02
Мастер настройки
Делать только на образце (postgres01 в нашем случае ) :
Это создает роли /пользователя репликации :
# su - postgres
$ psql -c "CREATE USER repuser REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD '<mot de passe repuser>';"
Примечание : Он определяет предел соединения 2 потому что у нас есть 2 Славянские
Редактирование файла конфигурации основной postgresql /etc/postgresql/9.5/main/postgresql.conf Чтобы настроить следующие директивы :
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = 'rsync -av %p postgres@<ip du premier slave>:/var/lib/postgresql/wal_archive/%f'
max_wal_senders = 2
wal_keep_segments = 256
hot_standby = on
Примечание : Мы предоставляем возможность архивирования нашей второй сервер (Настроить IP-адрес вашего сервера ) для еще более меры предосторожности. Мы также определить параметры hot_standby, хорошо, что игнорируется на хозяине, где он должен быть понижен до раба в будущем.
Теперь редактирование файла аутентификации postgresql /etc/postgresql/9.5/main/pg_hba.conf чтобы добавить разрешение нашего пользователя репликации для связи с нашей славянской или следующую строку в конце файла :
hostssl replication repuser <ip du réseau de vos serveurs>/24 md5
Пожалуйста адаптировать эту строку согласно имя пользователя сети и репликации (или соответствующих IP-адресов ) ваши славянских
Это перезапускает службу postgresql принимать во внимание нашу конфигурацию (в корне ) :
# systemctl restart postgresql
Это гарантирует, что служба запускается должным образом :
root@postgres01:~# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
Active: active (exited) since Thu 2016-06-02 12:06:28 CEST; 22s ago
Process: 77056 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 77056 (code=exited, status=0/SUCCESS)
root@postgres01:~# ps -u postgres u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
postgres 77038 0.0 4.4 227300 21836 ? S 12:06 0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.
postgres 77040 0.0 0.8 227300 4160 ? Ss 12:06 0:00 postgres: checkpointer process
postgres 77041 0.0 1.0 227300 4968 ? Ss 12:06 0:00 postgres: writer process
postgres 77042 0.0 1.7 227300 8776 ? Ss 12:06 0:00 postgres: wal writer process
postgres 77043 0.0 1.3 227728 6708 ? Ss 12:06 0:00 postgres: autovacuum launcher process
postgres 77044 0.0 0.6 82244 3392 ? Ss 12:06 0:00 postgres: archiver process
postgres 77045 0.0 0.8 82244 4244 ? Ss 12:06 0:00 postgres: stats collector process
Настройка славян
На первом подчиненном
Мы начинаем с остановить службу postgresql :
# systemctl stop postgresql
Редактирование файла конфигурации основной postgresql /etc/postgresql/9.5/main/postgresql.conf Чтобы настроить же руководящие принципы как мастер, на пошив в команды rsync в архив, либо только на IP-адрес первого раба на втором подчиненном :
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = 'rsync -av %p postgres@<ip du second slave>:/var/lib/postgresql/wal_archive/%f'
max_wal_senders = 2
wal_keep_segments = 256
hot_standby = on
Теперь редактирование файла аутентификации postgresql /etc/postgresql/9.5/main/pg_hba.conf чтобы добавить разрешение нашего пользователя репликации для подключения от других серверов нашей (Это будет использоваться, когда этот раб ожидается способствовал мастер ) :
hostssl replication repuser <ip du réseau de vos serveurs>/24 md5
Примечание : С помощью этой конфигурации похож на наш мастер это позволит легко продвинуть этот раб как master в случае необходимости.
Для операций ниже, войдите в систему как пользователь системы postgres :
# su – postgres
Мы создаем каталог назначения для wal мастер архивов :
$ mkdir /var/lib/postgresql/wal_archive
Она удаляет каталог данных postgresql :
$ rm -rf /var/lib/postgresql/9.5/main
Это делает базовой резервной копии (настроить ip вашего мастера и имя вашего пользователя репликации ), пароль пользователя репликации, вам будет предложено :
$ pg_basebackup -h <ip de votre master> -D /var/lib/postgresql/9.5/main -U repuser -v -P --xlog
Она настраивает репликацию, создав файл /var/lib/postgresql/9.5/main/recovery.conf со следующими параметрами :
standby_mode = on
primary_conninfo = 'host=<ip de votre master> port=5432 user=repuser password=<mot de passe de repuser> sslmode=require application_name=<hostname de votre slave>'
trigger_file = '/var/lib/postgresql/9.5/postgres.trigger'
Примечание : Триггера файл является файлом, мы создаем, когда мы хотим, чтобы его раба остановки репликации и начнет прием заявок — когда вы хотите продвигать его как мастер. До содействия рабом в случае аварии своего хозяина, убедитесь, что первоначальный мастер не будет расти чтобы избежать коррупции.
Мы возвращаем корня и запускает службу :
# systemctl start postgresql
Это гарантирует, что служба запущена правильно :
# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
Active: active (exited) since Thu 2016-06-02 12:53:42 CEST; 1min 6s ago
Process: 8894 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 8894 (code=exited, status=0/SUCCESS)
# ps -u postgres u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
postgres 8878 0.0 4.4 227308 21892 ? S 12:53 0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.
postgres 8879 0.0 1.1 227376 5700 ? Ss 12:53 0:00 postgres: startup process recovering 00000001000000000000000
postgres 8880 0.0 0.8 227308 4140 ? Ss 12:53 0:00 postgres: checkpointer process
postgres 8881 0.0 1.0 227308 5236 ? Ss 12:53 0:00 postgres: writer process
postgres 8882 0.0 0.6 82252 3316 ? Ss 12:53 0:00 postgres: stats collector process
postgres 8883 0.0 1.7 238064 8520 ? Ss 12:53 0:00 postgres: wal receiver process streaming 0/30003E0
Если он подключается к наш мастер, мы уже можем проверить наш репликации между мастером и первый раб функциональных :
Он подключается к нашим мастером и она соединяет в системе пользователя postgres :
# su - postgres
Затем подключение к postgresql :
$ psql
Это позволяет отображать на расширенной и мы проверяем наши репликации :
postgres=# \x
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 78879
usesysid | 16384
usename | repuser
application_name | postgres02
client_addr | 10.1.1.90
client_hostname |
client_port | 49009
backend_start | 2016-06-02 12:53:36.641823+02
backend_xmin |
state | streaming
sent_CRElocation | 0/30004C0
write_location | 0/30004C0
flush_location | 0/30004C0
replay_location | 0/30004C0
sync_priority | 0
sync_state | async
Наши асинхронной потоковой репликации с нашего первого раба хорошо сделал. Этот этап имеет мастер репликации /Классический раба (один раб асинхронной потоковой передачи )
На втором подчиненном
Мы Redid, то же самое, что было сделано на первом подчиненном очевидно адаптации его имя хоста в файле recovery.conf и IP-адрес в команде архивирования в основном конфигурационном файле, если вы также хотите, чтобы включить архивирование на этом втором раба.
Проверка и тестирование наших multi мастер репликации славянских
Он подключается к хозяину и она регистрируется в пользователя postgres :
# su – postgres
Затем подключение к postgresql :
$ psql
Это позволяет отображать на расширенной и мы проверяем наши репликации :
postgres=# \x
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 78879
usesysid | 16384
usename | repuser
application_name | postgres02
client_addr | 10.1.1.90
client_hostname |
client_port | 49009
backend_start | 2016-06-02 12:53:36.641823+02
backend_xmin |
state | streaming
sent_location | 0/5000140
write_location | 0/5000140
flush_location | 0/5000140
replay_location | 0/5000140
sync_priority | 0
sync_state | async
-[ RECORD 2 ]----+------------------------------
pid | 82725
usesysid | 16384
usename | repuser
application_name | postgres03
client_addr | 10.1.1.199
client_hostname |
client_port | 51754
backend_start | 2016-06-02 14:31:43.759683+02
backend_xmin |
state | streaming
sent_location | 0/5000140
write_location | 0/5000140
flush_location | 0/5000140
replay_location | 0/5000140
sync_priority | 0
sync_state | async
Хорошо, так что наши 2 Репликация с наших двух славянских серверах (postgres02 и postgres 03).
По-прежнему подключен к postgresql на мастер, он создает данных база (ex : checkrep ) :
postgres=# CREATE DATABASE checkrep;
Он проверяет, что база данных реплицируется хорошо на наши 2 Славянские :
root@postgres02:~# su - postgres
postgres@postgres02:~$ psql
psql (9.5.3)
Type "help" for help.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
checkrep | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
root@postgres03:~# su - postgres
postgres@postgres03:~$ psql
psql (9.5.3)
Type "help" for help.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
checkrep | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
База данных, которую мы создали на наш мастер это так хорошо, автоматически реплицируются на наших двух славянских.
Чтобы удалить, поскольку мастер :
postgres=# DROP DATABASE checkrep;
Включить автоматическое обновление комментариев