با سلام و درود، تو این مطلب آموزشی به چگونگی کپی گرفتن از یک پایگاه داده روی 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 کپی کنید.
ارسال پاسخ