PostgreSQL репликации рабы multi

Материал из Ru Ikoula wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

ru:PostgreSQL репликации рабы multi en:PostgreSQL replication slaves multi he:PostgreSQL שכפול עבדים רב ro:PostgreSQL replicare sclavi multi pl:PostgreSQL replikacji niewolników multi ja:PostgreSQL のレプリケーション スレーブ マルチ ar:كيو النسخ المتماثل العبيد متعددة zh:PostgreSQL 复制奴隶多 de:PostgreSQL Replikation Sklaven multi nl:PostgreSQL replicatie slaven multi it:PostgreSQL replica schiavi multi pt:Multi de escravos de replicação PostgreSQL es:PostgreSQL replicación esclavos multi fr:Replication PostgreSQL multi slaves

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

Введение | _. _. Эта страница посвящена реализации асинхронной потоковой передачи PostgreSQL репликации с одним мастером и двух рабов. Наша Славянская будет настроен в качестве горячего резерва, то есть возможность выполнять запросы | _. _. только для чтения | _. _. на них.

Контекст этой реализации | _. _. Мы имеем | _. _. Серверов Debian | _. _. Обновлен | _. _. Затем мы подключим к ql | _. _. Мы активируем расширенного дисплея и мы проверяем нашу репликацию | _. _. У нас так много наших | _. _. Репликация с нашими двумя славянским серверами | _. _. | _. _. и | _. _. Всегда подключен к ql на образце, создайте тестовую базу данных | _. _. | _. _. | _. _. чтобы убедиться, что репликация функциональной | _. _. Проверьте что база данных хорошо реплицируется на нашем | _. _. Славянская | _. _. База данных, которую мы создали на нашем мастер так хорошо автоматически реплицируются на наших двух славянских. | _. _. будет наш мастер | _. _. | _. _. будет быть рабом | _. _. Postgres | _. _. будет вторым рабом | _. _. Указано, заказы будут болеть, когда они начинаются из | _. _. и в качестве пользователя системы , когда они начинаются из | _. _. Установка PostgreSQL и предварительной конфигурации всех трех серверов: _! _ | Все заказы в этой части должны делать на каждом из серверов. (В качестве первого шага рекомендуется иметь файл | _. _. заполняется с соединениями к каждому серверу, как это: _! _ | путем адаптации с имен хостов и IP-адреса ваших собственных серверов | _. _. Добавить подачи APT PostgreSQL | _. _. Мы импортируем открытый ключ этого месторождения | _. _. Мы обновляем APT кэш, чтобы принимать во внимание депозит | _. _. Мы устанавливаем пакет ql | _. _. Установите это последняя стабильная версия | _. _. на момент написания этой статьи | _. _. Он устанавливает пароль | _. _. по своему выбору, но безопасный | _. _. и создает пары ключей ssh | _. _. без пароля | _. _. для пользователя postgres системы | _. _. Мы копируем пользователя postgres с и между каждого сервера ssh ключ | _. _. С первого сервера | _. _. Postgres | _. _. в нашем случае: _! _ | ко второму | _. _. Postgres | _. _. для нас | _. _. и troisiseme | _. _. Postgres | _. _. Со второго на первый и третий сервер | _. _. С третьего до первого и второго сервера | _. _. Настройка мастера: _! _ | Делать только мастер: _! _ | Postgres | _. _. в нашем случае: _! _ | Мы создаем роль | _. _. Репликация пользователей: _! _ | Примечание: _! _ | Мы определяем предел соединения | _. _. потому что у нас | _. _. Славянская | _. _. Мы редактируем основной конфигурационный файл postgresql | _. _. Чтобы настроить следующие руководящие принципы: _! _ | Примечание: _! _ | Мы активируем архивирования на наш второй сервер | _. _. Настройка IP вашего сервера | _. _. для еще больше мер предосторожности, но это не является обязанностью. Мы также определяем параметры hot_standby, хорошо, что игнорировался мастера, в случае его должно быть понижен до раба в будущем. ) В настоящее время публикует файл аутентификации postgresql | _. _. чтобы добавить наших пользователей авторизации репликации для подключения из наших славянских или следующую строку в конце файла: _. _ | Пожалуйста адаптировать эту линию по имени сети и репликации пользователя | _. _. или соответствующих IP-адресов: _! _ | из вашего славянским | _. _. Перезапустите службу postgresql, чтобы принимать во внимание нашу конфигурацию | _. _. в корень | _. _. Это гарантирует, что служба успешно запущена | _. _. Конфигурация славянских | _. _. На первом подчиненном | _. _. Давайте остановить службу postgresql | _. _. Мы редактируем основной конфигурационный файл postgresql | _. _. Чтобы настроить же руководящие принципы, как мастер по пошиву одежды только IP-адрес первого раба, второй раб в архив rsync команды, если вы хотите, чтобы активировать его либо | _. _. В настоящее время публикует файл аутентификации postgresql | _. _. чтобы добавить разрешение нашего пользователя репликации для подключения с наших серверов: _! _ | Он будет делать это в случае, если этот раб следует пропагандировать мастер | _. _. Примечание: _! _ | С этой конфигурацией, похож на наш мастер позволяет легко продвинуть этот раб как мастер в случае необходимости.


Для операций ниже, войдите качестве пользователя системы postgres | _. _. Мы создаем каталог назначения wal мастер архивов | _. _. Мы удалить каталог данных postgresql | _. _. Это делает базовую резервную копию | _. _. настроить имя вашего пользователя репликации и ip вашего мастера :


, вам будет предложено для пароля вашего пользователя репликации | _. _. Настройка репликации путем создания файла | _. _. со следующими параметрами: _! _ | Примечание: _! _ | Триггер файл — это файл, который мы создаем, когда мы хотим остановить репликацию его рабом и начинает принимать Писания, что когда мы хотим развивать его как оригинал. Прежде чем содействие крах раба своего хозяина, пожалуйста, убедитесь, что первоначальный мастер придумать нет, чтобы избежать каких-либо повреждений. 3 Корень, мы вернемся, и мы начинаем сервис: _! _ | Это гарантирует, что служба успешно запущена | _. _. Если мы подключаемся к нашим господином, мы уже можем проверить нашу репликацию между мастером и первый подчиненный функциональный | _. _. Он подключается к нашим господином и мы подключены в системе пользователя postgres | _. _. Затем мы подключим к postgresql | _. _. Мы активируем расширенного дисплея и мы проверяем нашу репликацию | _. _. Наша асинхронной потоковой репликации с нашим первым рабом хорошо сделал. На данный момент у нас мастер репликации | _. _. Классический раб | _. _. один раб асинхронной потоковой передачи | _. _. На втором подчиненном | _. _. Повторите то же самое, что было сделано на первом подчиненном, очевидно адаптации имя хоста в файле recovery.conf и IP-адрес в порядке регистрации заезда в основном конфигурационном файле, если требуется также включить архивирование на этот второй раб. 8 (Аудит и испытания наших multi master репликации славян | _. _. Он подключается к хозяину и вы зарегистрированы пользователь postgres) :

Postgres01 (10.1.1.75) : Чтобы удалить его, поскольку мастер

Postgres02 (10.1.1.90) :

Postgres03 (10.1.1.199) :


"#"  "$".

/etc/hosts  ()  :
# cat /etc/hosts
127.0.0.1       localhost

10.1.1.75       postgres01
10.1.1.90       postgres02
10.1.1.199      postgres03


:
# 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-get update


( 9.5 ) :
# apt-get install postgresql


()  ()  :
# passwd postgres
# su - postgres
$ ssh-keygen


:


(postgres01 )  (postgres02 )  (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


/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

: ()


/etc/postgresql/9.5/main/pg_hba.conf  :
hostssl replication     repuser <ip du réseau de vos serveurs>/24     md5

()


() :
# 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

:
# systemctl stop 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 second slave>:/var/lib/postgresql/wal_archive/%f'
max_wal_senders = 2
wal_keep_segments = 256
hot_standby = on


/etc/postgresql/9.5/main/pg_hba.conf  () :
hostssl replication     repuser <ip du réseau de vos serveurs>/24     md5

 :


:
# su – postgres


:
$ mkdir /var/lib/postgresql/wal_archive


:
$ rm -rf /var/lib/postgresql/9.5/main


() :
$ 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


:
:
# su - postgres


:
$ 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

/ ()

:
# su – postgres
:
$ 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 03).


(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;



Вы не можете оставлять комментарии.