مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۲ دقیقه·۴ ماه پیش

راهنمای کامل کپی پایگاه داده PostgreSQL

در این راهنمای جامع، خواهید آموخت که چگونه یک پایگاه داده PostgreSQL را در همان سرور یا از یک سرور به سرور دیگر کپی کنید.

کپی پایگاه داده PostgreSQL در همان سرور

گاهی اوقات نیاز دارید تا یک پایگاه داده PostgreSQL را برای اهداف آزمایش در همان سرور کپی کنید. PostgreSQL این کار را با استفاده از عبارت CREATE DATABASE بسیار آسان کرده است:

CREATE DATABASE targetdb

WITH TEMPLATE sourcedb;

این دستور، پایگاه داده sourcedb را به targetdb کپی می‌کند. به عنوان مثال، برای کپی کردن پایگاه داده نمونه dvdrental به dvdrental_test، از دستور زیر استفاده کنید:

CREATE DATABASE dvdrental_test

WITH TEMPLATE dvdrental;

بسته به اندازه پایگاه داده منبع، این فرآیند ممکن است کمی زمان ببرد. اگر پایگاه داده dvdrental دارای اتصالات فعال باشد، با خطای زیر مواجه خواهید شد:

ERROR:  source database “dvdrental” is being accessed by other users

DETAIL:  There is 1 other session using the database.

برای مشاهده اتصالات فعال، از کوئری زیر استفاده کنید:

SELECT pid, usename, client_addr

FROM pg_stat_activity

WHERE datname =’dvdrental’;

برای خاتمه دادن به اتصالات فعال، از کوئری زیر استفاده کنید:

SELECT pg_terminate_backend (pid)

FROM pg_stat_activity

WHERE datname = ‘dvdrental’;

سپس می‌توانید دستور CREATE DATABASE WITH TEMPLATE را دوباره اجرا کنید.

کپی پایگاه داده PostgreSQL از یک سرور به سرور دیگر

راه‌های مختلفی برای کپی کردن پایگاه داده بین سرورهای PostgreSQL وجود دارد. اگر اندازه پایگاه داده بزرگ است و ارتباط بین سرورها کند است، می‌توانید از روش زیر استفاده کنید:

  1. پایگاه داده منبع را در یک فایل تخلیه کنید:

pg_dump -U postgres -d sourcedb -f sourcedb.sql

  1. فایل dump را در سرور راه دور کپی کنید.
  2. یک پایگاه داده جدید در سرور راه دور ایجاد کنید:

CREATE DATABASE targetdb;

  1. فایل dump را در سرور راه دور بازیابی کنید:

psql -U postgres -d targetdb -f sourcedb.sql

مثال: کپی کردن پایگاه داده dvdrental

برای کپی کردن پایگاه داده dvdrental از سرور محلی به سرور راه دور، مراحل زیر را دنبال کنید:

  1. پایگاه داده dvdrental را در یک فایل dump قرار دهید:

pg_dump -U postgres -O dvdrental -f dvdrental.sql

  1. فایل dump را در سرور راه دور کپی کنید.
  2. پایگاه داده dvdrental را در سرور راه دور ایجاد کنید:

CREATE DATABASE dvdrental;

  1. فایل dump dvdrental.sql را در سرور راه دور بازیابی کنید:

psql -U postgres -d dvdrental -f dvdrental.sql

اگر ارتباط بین سرورها سریع است و حجم دیتابیس بزرگ نیست، می‌توانید از دستور زیر استفاده کنید:

pg_dump -C -h local -U localuser sourcedb | psql -h remote -U remoteuser targetdb

به عنوان مثال، برای کپی کردن پایگاه داده dvdrental از سرور localhost به سرور راه دور، می‌توانید دستور زیر را اجرا کنید:

pg_dump -C -h localhost -U postgres dvdrental | psql -h remote -U postgres dvdrental

نتیجه‌گیری

در این راهنما، نحوه کپی کردن یک پایگاه داده PostgreSQL در همان سرور و همچنین از یک سرور به سرور دیگر را یاد گرفتید.


کپی پایگاهپایگاه postgresqlخدمات postgresqlمشاوره postgresqlپایگاه داده پستگرس
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید