הבדלים בין גרסאות בדף "שכפול מרובה PostgreSQL סלאבית"

מתוך He Ikoula wiki
Jump to navigation Jump to search
 
(10 גרסאות ביניים של אותו משתמש אינן מוצגות)
שורה 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_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_ru_title="Multi PostgreSQL славянских репликации"  data-link_translate_ru_url="Multi+PostgreSQL+%D1%81%D0%BB%D0%B0%D0%B2%D1%8F%D0%BD%D1%81%D0%BA%D0%B8%D1%85+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8"></span>[[:ru:Multi PostgreSQL славянских репликации]][[ru:Multi PostgreSQL славянских репликации]]
 +
<span data-link_translate_pl_title="Replikacja wielu słowiańskich PostgreSQL"  data-link_translate_pl_url="Replikacja+wielu+s%C5%82owia%C5%84skich+PostgreSQL"></span>[[:pl:Replikacja wielu słowiańskich PostgreSQL]][[pl:Replikacja wielu słowiańskich PostgreSQL]]
 +
<span data-link_translate_ja_title="レプリケーション PostgreSQL スラブ マルチ"  data-link_translate_ja_url="%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+PostgreSQL+%E3%82%B9%E3%83%A9%E3%83%96+%E3%83%9E%E3%83%AB%E3%83%81"></span>[[:ja:レプリケーション PostgreSQL スラブ マルチ]][[ja:レプリケーション PostgreSQL スラブ マルチ]]
 +
<span data-link_translate_ar_title="النسخ المتماثل السلافية كيو متعدد"  data-link_translate_ar_url="%D8%A7%D9%84%D9%86%D8%B3%D8%AE+%D8%A7%D9%84%D9%85%D8%AA%D9%85%D8%A7%D8%AB%D9%84+%D8%A7%D9%84%D8%B3%D9%84%D8%A7%D9%81%D9%8A%D8%A9+%D9%83%D9%8A%D9%88+%D9%85%D8%AA%D8%B9%D8%AF%D8%AF"></span>[[:ar:النسخ المتماثل السلافية كيو متعدد]][[ar:النسخ المتماثل السلافية كيو متعدد]]
 +
<span data-link_translate_zh_title="复制 PostgreSQL 斯拉夫语多"  data-link_translate_zh_url="%E5%A4%8D%E5%88%B6+PostgreSQL+%E6%96%AF%E6%8B%89%E5%A4%AB%E8%AF%AD%E5%A4%9A"></span>[[:zh:复制 PostgreSQL 斯拉夫语多]][[zh:复制 PostgreSQL 斯拉夫语多]]
 +
<span data-link_translate_de_title="Replikation PostgreSQL slawischen multi"  data-link_translate_de_url="Replikation+PostgreSQL+slawischen+multi"></span>[[:de:Replikation PostgreSQL slawischen multi]][[de:Replikation PostgreSQL slawischen multi]]
 +
<span data-link_translate_nl_title="Replicatie PostgreSQL Slavische multi"  data-link_translate_nl_url="Replicatie+PostgreSQL+Slavische+multi"></span>[[:nl:Replicatie PostgreSQL Slavische multi]][[nl:Replicatie PostgreSQL Slavische multi]]
 +
<span data-link_translate_it_title="Replica PostgreSQL slavo multi"  data-link_translate_it_url="Replica+PostgreSQL+slavo+multi"></span>[[:it:Replica PostgreSQL slavo multi]][[it:Replica PostgreSQL slavo multi]]
 +
<span data-link_translate_pt_title="Replicação PostgreSQL eslavo multi"  data-link_translate_pt_url="Replica%C3%A7%C3%A3o+PostgreSQL+eslavo+multi"></span>[[:pt:Replicação PostgreSQL eslavo multi]][[pt:Replicação PostgreSQL eslavo multi]]
 
<span data-link_translate_es_title="Replicación multi de PostgreSQL Slavic"  data-link_translate_es_url="Replicaci%C3%B3n+multi+de+PostgreSQL+Slavic"></span>[[:es:Replicación multi de PostgreSQL Slavic]][[es:Replicación multi de PostgreSQL Slavic]]
 
<span data-link_translate_es_title="Replicación multi de PostgreSQL Slavic"  data-link_translate_es_url="Replicaci%C3%B3n+multi+de+PostgreSQL+Slavic"></span>[[:es:Replicación multi de PostgreSQL Slavic]][[es:Replicación multi de PostgreSQL Slavic]]
 
<span data-link_translate_fr_title="Replication PostgreSQL multi slaves"  data-link_translate_fr_url="Replication_PostgreSQL_multi_slaves"></span>[[:fr:Replication PostgreSQL multi slaves]][[fr:Replication PostgreSQL multi slaves]]
 
<span data-link_translate_fr_title="Replication PostgreSQL multi slaves"  data-link_translate_fr_url="Replication_PostgreSQL_multi_slaves"></span>[[:fr:Replication PostgreSQL multi slaves]][[fr:Replication PostgreSQL multi slaves]]

גרסה אחרונה מ־10:25, 3 ביוני 2016

en:Replication PostgreSQL Slavic multi ro:Replicare PostgreSQL slave multi ru:Multi PostgreSQL славянских репликации 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 דביאן שרתים 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


הוסף את הפיקדון אפט 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-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 כדי להגדיר את ההנחיות באותו הבסיס, על ידי התאמת רק ה-ip של העבד הראשון על ידי העבד השני ב- rsync הפקודה כדי לאחסן בארכיון גם :

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

הערה : בתצורה זו דומה למורה שלנו זה יאפשר לקדם בקלות העבדים כמאסטר במקרה הצורך.


הפעולות שלהלן, היכנס כמשתמש postgres מערכת :

# su – postgres


אנו יוצרים את ספריית היעד עבור החומה לאכול את התפוחים של הארכיונים מאסטר :

$ 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 כתובת בפקודה של ארכיון בקובץ התצורה הראשי, אם גם אתם רוצים לאפשר אחסון בארכיון על העבדים השני.

אימות ובדיקות רב שלנו לשלוט שכפול סלאבי

זה מקשר המאסטר ואת זה הוא מחובר המשתמש 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;



אין באפשרותך לפרסם תגובות.