کپی کردن دیتابیس در PostgreSQL

کپی کردن پایگاه داده

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

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

بعضی اوقات و معمولا برای تست گرفتن شما نیاز دارید تا ازیک پایگاه داده رو یک سرور، کپی تهیه کنید.

PostgeSQL این کار را با دستور CREATE DATABASE  بسیار ساده کرده است.

ابتدا باید وارد PSQL شوید، برای اینکار ابتدا روی کاربر postgres سوییچ کرده و سپس psql را اجرا می کنیم:

sudo -i -u postgres
psql

اگر کاربری با نام غیر postgres تعریف کرده اید، آن را جایگزین postgres در دستور بالا کنید. حالا نوبت به اجرای دستور CREATE DATABASE رسیده است:

CREATE DATABASE targetdb 
WITH TEMPLATE sourcedb;

دستور فوق، پایگاه داده sourcedb را روی targetdb کپی می کند.

اگر پایگاه داده دارا ی اتصال فعال باشد (active connections)، شما ارور زیر را خواهید گرفت:

ERROR:  source database "sourcedb" 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 ='sourcedb';

و برای terminateکردن اتصالات به پایگاه داده sourcedb می توانید از کوئری زیر استفاده کنید:

SELECT pg_terminate_backend (pid)
FROM pg_stat_activity
WHERE datname = 'sourcedb';

حال شما مجدد می توانید از دستور CREATE TABLE WITH TEMPLATE مجدد استفاده نمایید تا پایگاه داده sourcedbرا روی targetdb کپی کنید.