اتصال به پایگاهداده PostgreSQL
برای اتصال به کلاستر پایگاهداده، ابتدا باید از یک ماشین مجازی در همان subnet مشخصشده در زمان ساخت کلاستر اقدام کنید. به صورت پیشفرض اتصال مستقیم از خارج subnet امکانپذیر نیست.
مشاهده اطلاعات اتصال
- وارد پنل اوشن شوید و از میان سرویسهای ستون، روی پایگاهداده نسخه ۲ کلیک کنید.
- کلاستر مورد نظر خود را انتخاب کنید.
- در تب در یک نگاه، بخش وضعیت اتصال اطلاعات زیر را نمایش میدهد:
- نام کاربری و گذرواژه
- سابنت، پورت و پایگاهداده
- Primary Endpoint: آدرس اتصال به نود Primary
- Reader Endpoint: آردس اتصال با load-balancing بین نودها
- با کلیک روی دکمه
کپی رشته اتصالکنار هر Endpoint، رشته اتصال آماده را دریافت کنید.
نکات مهم
- اتصال به پایگاهداده تنها از VPC و subnet مشخصشده در زمان ساخت کلاستر امکانپذیر است.
- درخواستهای ارسالشده به Primary Endpoint همواره به نودی با نقش Primary هدایت میشوند. برای عملیات خواندن و نوشتن میتوان از این Endpoint استفاده کرد.
- درخواستهای ارسالشده به Reader Endpoint بین تمامی نودهای کلاستر (از جمله نود Primary) با مکانیزم load-balancing توزیع میشوند و برای افزایش ظرفیت پاسخدهی درخواستهای خواندن مناسب هستند. برای عملیات فقط-خواندن میتوان از این آدرس استفاده کرد.
اتصال با ابزار psql
برای اتصال به پایگاهداده، ابتدا از طریق ssh یا بخش ترمینال در پنل ماشین مجازی نسخه ۲ به یکی از ماشینهای موجود در subnet دارای دسترسی به دیتابیس متصل شوید. سپس یکی از روشهای زیر را استفاده کنید.
استفاده از Flags:
psql -h <host> -p <port> -U <username> -d <database>مثال:
psql -h 10.0.10.227 -p 5432 -U sdb_admin -d postgresاستفاده از رشته اتصال (Connection String):
psql "postgresql://<username>:<password>@<host>:<port>/<database>"مثال:
psql "postgresql://sdb_admin:your_password@10.0.10.227:5432/postgres"پس از اتصال موفق، پرامپت psql نمایش داده میشود (مثلا postgres=>) و میتوانید دستورات SQL و مدیریتی را اجرا کنید.
دستورات پرکاربرد psql
| دستور | توضیح |
|---|---|
\l | نمایش فهرست پایگاهدادهها |
\c <database> | اتصال به پایگاهداده دیگر |
\du | نمایش فهرست کاربران |
\dt | نمایش جداول پایگاهداده فعلی |
\dx | نمایش افزونههای نصبشده |
\q | خروج از psql |
اتصال از اپلیکیشن
برای اتصال از زبانهای برنامهنویسی، از رشته اتصال (Connection String) استفاده کنید:
postgresql://<username>:<password>@<host>:<port>/<database>
مثال برای عملیات نوشتن (Primary Endpoint):
postgresql://sdb_admin:your_password@10.0.10.227:5432/postgres
مثال برای عملیات خواندن (Reader Endpoint):
postgresql://sdb_admin:your_password@10.0.10.219:5432/postgres
عیبیابی اتصال
| خطا | علت محتمل | راهحل |
|---|---|---|
Connection timed out | ماشین مبدأ در subnet مجاز نیست | از ماشینی در همان subnet کلاستر اتصال برقرار کنید |
Connection refused | رشته اتصال اشتباه یا Readonly شدن کلاستر | اطلاعات Primary Endpoint را از بخش وضعیت اتصال بررسی کنید. در صورت Readonly شدن فضای دیسک را افزایش دهید. |
