دیتابیس رابطه‌ای

MariaDB مدیریت‌شده، سازگار با MySQL

MariaDB با همان کلاینت‌ها و درایورهای MySQL کار می‌کند؛ اپ‌های PHP و Laravel بدون تغییر کد به آن وصل می‌شوند.

نسخه
MariaDB 11 (پیش‌فرض)
سازگاری
کلاینت و درایورهای MySQL
پورت
3306
پشتیبان
دستی و زمان‌بندی‌شده
لوگوی MariaDB

جایگزین متن‌باز MySQL

MariaDB از همان ریشه‌ی MySQL آمده و پروتکل و دستورهایش را حفظ کرده است. درایورهای MySQL در PHP، Node.js و Python بدون تغییر به آن وصل می‌شوند.

اگر اپ شما روی MariaDB توسعه یافته یا سیستم قبلی شما MariaDB است، همین را انتخاب کنید تا رفتار کوئری‌ها و نوع داده‌ها همان بماند.

مناسب برای

  • اپ‌های PHP و Laravel
  • WordPress و Joomla
  • مهاجرت از هاست اشتراکی
  • سامانه‌های تراکنشی

از ساخت تا اتصال

  1. ساخت

    دیتابیس با نسخه‌ی پیش‌فرض MariaDB 11 ساخته می‌شود.

    --type mariadb
  2. لینک به اپ

    متغیرهای DATABASE_* به اپ تزریق می‌شوند.

    apps link-db
  3. استفاده

    درایور MySQL همان آدرس را می‌خواند.

    mysql://

خروجی ساخت سرویس

sakoocloud db
sakoocloud db create --name app-db --type mariadb
✔ Provisioning app-db · db_4n8x2p
ℹ Ready in ~90s. Get credentials: sakoocloud db credentials db_4n8x2p
sakoocloud apps link-db db_4n8x2p --app my-api
✔ Linked database. Env vars injected under DATABASE_*.
# DATABASE_URL=mysql://app:••••@…:3306/app-db

ساخت دیتابیس

با CLI یا از کنسول.

terminal
sakoocloud db create --name app-db --type mariadb --storage 10

تنظیمات

متغیرهایی که به اپ تزریق می‌شوند

پیشوند پیش‌فرض DATABASE است؛ با --prefix می‌توانید نام دیگری بدهید، مثلاً DATABASE.

متغیرمقدار
DATABASE_URLmysql://user:pass@host:3306/db
DATABASE_HOST و DATABASE_PORTآدرس و پورت داخلی
DATABASE_USER و DATABASE_PASSWORDنام کاربری و رمز تولیدشده
DATABASE_NAMEنام دیتابیس

پشتیبان‌گیری

پشتیبان‌ها به‌صورت dump منطقی گرفته و جدا از دیسک دیتابیس، روی فضای ذخیره‌سازی سازگار با S3 نگهداری می‌شوند.

نوعدر دسترس
پشتیبان دستیهمه‌ی پلن‌ها، از جمله پلن رایگان
زمان‌بندی خودکارپلن‌های پولی
بازگردانیروی همان دیتابیس یا یک نمونه‌ی تازه (backups clone)

عملیات روزمره

کاردستور
اطلاعات اتصالsakoocloud db credentials <id>
اتصال مستقیم با کلاینت mariadbsakoocloud db connect <id>
افزایش دیسک یا حافظهsakoocloud db resize <id> --storage 20
پشتیبان دستیsakoocloud db backups create <id>
ساخت نسخه‌ی staging از پشتیبانsakoocloud db backups clone <id> <backup-id>

اتصال از اپ

از درایور MySQL زبان خودتان استفاده کنید.

<?php
$pdo = new PDO(
    sprintf("mysql:host=%s;port=%s;dbname=%s", getenv("DATABASE_HOST"), getenv("DATABASE_PORT"), getenv("DATABASE_NAME")),
    getenv("DATABASE_USER"),
    getenv("DATABASE_PASSWORD"),
);

رانتایم‌هایی که معمولاً به آن وصل می‌شوند

خطاهای رایج

از سیستم خودم وصل نمی‌شوم

علتآدرس داخلی فقط از اپ‌های همان پروژه در دسترس است.

راه‌حلبرای اتصال از بیرون، دسترسی عمومی را روشن کنید و آدرس و پورت خارجی را از sakoocloud db credentials بگیرید.

terminal
sakoocloud db public-access <db-id>
sakoocloud db credentials <db-id>

Access denied for user

علتاطلاعات اتصال قدیمی یا دستی وارد شده است.

راه‌حلاز متغیرهای تزریق‌شده استفاده کنید.

Too many connections

علتاتصال‌های باز از سقف بیشتر شده‌اند.

راه‌حلاستخر اتصال اپ را محدود کنید یا سقف را از کنسول بالا ببرید.

پرسش‌های متداول

MariaDB یا MySQL؟

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

می‌توانم از MySQL به MariaDB مهاجرت کنم؟

در بیشتر موارد بله؛ dump را بگیرید و در MariaDB بازگردانی کنید. قابلیت‌های خاص MySQL 8 را قبلش بررسی کنید.

پشتیبان‌گیری چطور است؟

مثل MySQL: پشتیبان دستی روی همه‌ی پلن‌ها و زمان‌بندی خودکار روی پلن‌های پولی.

جزئیات بیشتر در راهنمای MariaDB در مستندات و مرجع CLI.

سریع‌ترین مسیر از کد تا انتشار.

ابتدا ابزار خط فرمان را نصب کنید، سپس همین‌جا امتحان کنید. (بنویسید، یا یکی از پیشنهادهای پایین ترمینال را بزنید)

~/projects/my-app
امتحان کنید