پرش به مطلب اصلی

ابزارهای دیتابیس ابری

با فعال‌کردن Toolset مربوط به dbaas، دستیار می‌تواند کلاسترهای دیتابیس ابری را از طریق MCP بسازد، مقیاس‌دهی کند، بک‌آپ بگیرد و Database و User داخل کلاستر را مدیریت کند. برای نمونه، می‌توانید بنویسید «یک کلاستر PostgreSQL به نام shop می‌خواهم» و دستیار گزینه‌های AZ و پلن را از Catalog به شما نشان می‌دهد.

برای فعال‌سازی، در تنظیمات کلاینت مقدار زیر را در هدر X-Mcp-Toolsets قرار دهید:

X-Mcp-Toolsets: dbaas

اگر هم‌زمان به لاگ ابری هم نیاز دارید، مقدار logs,dbaas را بنویسید:

X-Mcp-Toolsets: logs,dbaas

مفاهیم اصلی​

  • Cluster

    سرویس دیتابیسی است که می‌سازید. هر Cluster یک Primary دارد و می‌تواند هنگام نیاز Standby و Read-only هم بگیرد.

  • Instance / Node

    هر نود داخل کلاستر است: Primary، Standby یا Read-only.

  • Database

    دیتابیس منطقی داخل موتور است (CREATE DATABASE). Database با خود کلاستر یکی نیست.

  • Catalog

    فهرست AZها، موتورها، نسخه‌ها، پلن‌ها و قیمت‌هاست که از dbaas_catalog_get می‌گیرید.

  • Whitelist

    فهرست IP یا CIDRهای مجاز برای اتصال به کلاستر است.

شناسه‌ی اصلی تقریبن همه‌ی عملیات، clusterId مربوط به نود Primary است.

گرفتن مقدارها از Catalog​

پیش از ساخت کلاستر یا تغییر پلن، دستیار باید مقدارهای واقعی را از Catalog بگیرد و چیزی را حدس نزند. برای این کار ابتدا dbaas_catalog_get را صدا می‌زند و گزینه‌های AZ، موتور، نسخه و پلن را به شما نشان می‌دهد. پس از انتخاب شما، dbaas_cluster_create یا dbaas_cluster_resize را اجرا می‌کند.

توجه داشته باشید که نوشتن «تهران» یا «پستگرس» به‌تنهایی برای ساخت کافی نیست؛ مقدار دقیق، مثل ir-thr-ba1 و g2-4-2-0، باید از Catalog انتخاب شود.

اگر هنگام ساخت کلاستر خطای اعتبارسنجی دریافت کردید، احتمالن AZ یا flavorRef ساختگی است. دوباره dbaas_catalog_get را اجرا کنید و مقدار را انتخاب کنید.

ابزارهای Catalog و کلاستر​

برای مدیریت کلاسترها از ابزارهای زیر استفاده کنید:

ابزارکارپارامترهای مهم
dbaas_catalog_getگرفتن Catalog (AZ، موتور، نسخه، پلن، قیمت)بدون پارامتر
dbaas_cluster_listفهرست کلاسترهاpage, perPage, q
dbaas_cluster_getجزییات یک کلاستر: نودها، اتصال، Databaseها و UserهاclusterId
dbaas_cluster_createساخت کلاستر (همیشه Primary)name, az, flavorRef, engine, version, volumeSizeGigaBytes
dbaas_cluster_resizeتغییر پلن یا حجم دیسکclusterId, flavorRef, volumeSizeGigaBytes
dbaas_cluster_deleteحذف کل کلاستر (Primary و همه‌ی نودها)clusterId
dbaas_cluster_set_whitelistجایگزینی کامل WhitelistclusterId, ips
dbaas_cluster_metricsمصرف CPU، RAM، دیسک و شبکهclusterId
dbaas_cluster_logsلاگ موتور (مثلن slow query)clusterId, category

ابزارهای Node​

برای افزودن و حذف Nodeها از ابزارهای زیر استفاده کنید:

ابزارکارپارامترهای مهم
dbaas_cluster_node_addافزودن Standby یا Read-onlyclusterId, nodeType, name, az, flavorRef, volumeSizeGigaBytes
dbaas_cluster_node_removeحذف یک Standby یا Read-onlynodeId, role

برای nodeType در افزودن نود از standby یا readOnly استفاده کنید. این ابزار برای ساخت کلاستر جدید نیست. برای حذف نود، role باید standby یا read-only باشد و نباید Primary باشد.

برای حذف کل سرویس از dbaas_cluster_delete استفاده کنید.

ابزارهای Database ،User و بکاپ​

برای مدیریت Database ،User و بکاپ از ابزارهای زیر استفاده کنید:

ابزارکارپارامترهای مهم
dbaas_database_createساخت Database داخل کلاسترclusterId, databaseName
dbaas_database_deleteحذف DatabaseclusterId, databaseName
dbaas_user_createساخت User موتورclusterId, username
dbaas_user_deleteحذف UserclusterId, username
dbaas_backup_createدرخواست بکاپ کاملclusterId, name, description
dbaas_backup_listفهرست بکاپ‌های یک کلاسترclusterId

هنگام ساخت کلاستر رمز نفرستید؛ سرویس کاربر base-user را می‌سازد. ابزار dbaas_user_create فقط username می‌گیرد و رمز را تولید می‌کند، اما رمز را برنمی‌گرداند. dbaas_cluster_get و dbaas_cluster_list هم رمزها را مخفی می‌کنند.

توجه داشته باشید که رمز را از پنل کاربری کپی کنید و آن را در چت وارد نکنید.

اگر رمز در پاسخ دستیار نیست، این رفتار عمدی است. رمز را از پنل کاربری کپی کنید.

ساخت کلاستر​

برای dbaas_cluster_create فیلدهای زیر الزامی‌اند:

  • name

    نام کلاستر است، مثل shop. این فیلد را خودتان انتخاب می‌کنید و اجباری است.

  • az

    AZ کلاستر است، مثل ir-thr-ba1. مقدار را از Catalog بگیرید. این فیلد اجباری است.

  • flavorRef

    شناسه‌ی پلن است، مثل g2-4-2-0. مقدار را از Catalog بگیرید. این فیلد اجباری است.

  • engine

    موتور دیتابیس است، مثل postgresql. مقدار را از Catalog بگیرید. این فیلد اجباری است.

  • version

    نسخه‌ی موتور است، مثل 17.3. مقدار را از Catalog بگیرید. این فیلد اجباری است.

  • volumeSizeGigaBytes

    حجم دیسک بر حسب گیگابایت است، مثل 20. یک عدد صحیح مثبت وارد کنید. این فیلد اجباری است.

فیلدهای زیر اختیاری‌اند:

  • backupRef

    برای بازیابی یک بک‌آپ داخل کلاستر جدید استفاده می‌شود. این فیلد اختیاری است.

  • selectedStandbyCount

    تعداد Standby را هنگام ساخت با HA مشخص می‌کند. این فیلد اختیاری است.

  • multiZone

    Standby چندمنطقه‌ای درخواست می‌کند. این فیلد اختیاری است.

  • standbysInfo

    AZ و Flavor هر Standby را به‌صراحت تعیین می‌کند. این فیلد اختیاری است.

  • nodeType

    مقدار پیش‌فرض آن primary است و برای کلاستر جدید معمولن همین مقدار را استفاده می‌کنید. این فیلد اختیاری است.

پس از پذیرش درخواست، پاسخ معمولن به‌معنی اتمام کار نیست و وضعیت 202 (پذیرفته‌شده) برمی‌گردد. دستیار باید با dbaas_cluster_get صبر کند تا وضعیت ACTIVE شود و سپس کلاستر را آماده اعلام کند. همین الگو برای resize، حذف، بک‌آپ، Database، User ،Whitelist و تغییر نود هم برقرار است: ابتدا درخواست پذیرفته می‌شود، سپس دستیار با get وضعیت را بررسی می‌کند.

اگر کلاستر هنوز آماده نیست، احتمالن فقط پاسخ 202 را دریافت کرده‌اید. با dbaas_cluster_get تا ACTIVE شدن وضعیت صبر کنید.

منبع و پرامپت آماده​

منبع dbaas://docs/provision (با نام dbaas_provision) راهنمای پیدا کردن مقدار فیلدها از Catalog، ساخت کلاستر، بررسی وضعیت و حفظ رمز را در اختیار دستیار قرار می‌دهد.

پرامپت dbaas_provision_cluster ورک‌فلوی ساخت کلاستر است. اگر فیلدها ناقص باشند، دستیار ابتدا Catalog را می‌گیرد، سپس کلاستر را می‌سازد و پس از آن با get صبر می‌کند تا وضعیت ACTIVE شود. آرگومان‌های این پرامپت name ،az ،flavorRef ،engine ،version و volumeSizeGigaBytes هستند.

سناریوهای رایج​

دیدن کلاسترهای موجود​

در چت بنویسید:

لیست کلاسترهای DBaaS من را نشان بده. جزییات کلاستر shop را با host اتصال و وضعیت نودها بگو؛ رمز را نشان نده.

دستیار برای این کار dbaas_cluster_list و dbaas_cluster_get را اجرا می‌کند.

ساخت کلاستر جدید​

در چت بنویسید:

یک کلاستر PostgreSQL به نام shop می‌خواهم. اول Catalog را بگیر و گزینه‌های AZ و پلن را نشان بده؛ تا خودم انتخاب نکردم چیزی نساز.

اگر همه‌ی فیلدها را می‌دانید، می‌توانید از پرامپت آماده استفاده کنید:

از پرامپت provision cluster استفاده کن: name=shop، az=ir-thr-ba1، flavorRef=g2-4-2-0، engine=postgresql، version=17.3، volumeSizeGigaBytes=20.

دستیار نباید پلن یا AZ را خودش انتخاب کند، مگر این‌که شما به‌صراحت گفته باشید.

ساخت Database و User داخل کلاستر​

در چت بنویسید:

روی کلاستر shop یک Database به نام book_store1 بساز. یک User به نام app_rw بساز و بگو رمز را از پنل کپی کنم.

پیش از این کار وضعیت کلاستر باید ACTIVE باشد. فهرست Database و User را می‌توانید با dbaas_cluster_get ببینید.

بکاپ و بازیابی​

در چت بنویسید:

از کلاستر shop یک بکاپ به نام shop-before-migrate بگیر. بک‌آپ‌های shop را list کن.

برای بازیابی، شناسه‌ی بکاپ را به‌عنوان backupRef به dbaas_cluster_create بدهید تا کلاستر جدید از روی آن بالا بیاید.

مقیاس‌دهی، Whitelist و مانیتورینگ​

در چت بنویسید:

پلن کلاستر shop را به g2-4-4-0 و دیسک را به 40 گیگ تغییر بده؛ از Catalog تایید کن. Whitelist کلاستر shop را روی 203.0.113.10/32 بگذار. مصرف CPU و RAM کلاستر shop را نشان بده. slow_queryهای اخیر shop را بیاور.

توجه داشته باشید که dbaas_cluster_set_whitelist فهرست فعلی را جایگزین می‌کند. فقط IPهایی را بفرستید که باید بمانند.

حذف امن​

در چت بنویسید:

کلاستر test-old را پیدا کن. قبل از حذف، id و نام و نودها را نشان بده و منتظر تایید من بمان. فقط Standby مربوط به shop را حذف کن؛ خود کلاستر را پاک نکن.

ابزار dbaas_cluster_delete کل کلاستر را برمی‌دارد. برای حذف یک نود جانبی از dbaas_cluster_node_remove استفاده کنید.

نمونه‌ی پیکربندی کلاینت​

برای این‌که فقط ابزارهای دیتابیس ابری در دسترس کلاینت باشد، پیکربندی را به‌شکل زیر بنویسید و به‌جای YOUR-MACHINE-USER-UUID شناسه‌ی ماشین یوزر خود را قرار دهید:

{
"mcpServers": {
"arvancloud": {
"url": "https://mcp.arvancloud.ir",
"headers": {
"Arvancloud-Api-Key": "apikey YOUR-MACHINE-USER-UUID",
"X-Mcp-Toolsets": "dbaas"
}
}
}
}

برای فعال‌کردن هر دو محصول، مقدار X-Mcp-Toolsets را روی logs,dbaas بگذارید:

{
"mcpServers": {
"arvancloud": {
"url": "https://mcp.arvancloud.ir",
"headers": {
"Arvancloud-Api-Key": "apikey YOUR-MACHINE-USER-UUID",
"X-Mcp-Toolsets": "logs,dbaas"
}
}
}
}

اگر پس از اتصال خطای 401 دریافت کردید، کلید API نامعتبر است، هدر Arvancloud-Api-Key را بررسی کنید. اگر خطای 400 روی اتصال MCP دیدید، مقدار X-Mcp-Toolsets خالی یا نامعتبر است و باید آن را روی dbaas یا logs,dbaas بگذارید. اگر ابزارهای دیتابیس ابری دیده نمی‌شوند، هدر Toolset و دسترسی‌های ماشین یوزر به دیتابیس ابری را بررسی کنید.

جزییات اتصال کلاینت‌ها در تنظیم کلاینت‌ها آمده است. اگر هنوز MCP را وصل نکرده‌اید، از شروع سریع شروع کنید.