جایگزین متنباز MySQL
MariaDB از همان ریشهی MySQL آمده و پروتکل و دستورهایش را حفظ کرده است. درایورهای MySQL در PHP، Node.js و Python بدون تغییر به آن وصل میشوند.
اگر اپ شما روی MariaDB توسعه یافته یا سیستم قبلی شما MariaDB است، همین را انتخاب کنید تا رفتار کوئریها و نوع دادهها همان بماند.
مناسب برای
- اپهای PHP و Laravel
- WordPress و Joomla
- مهاجرت از هاست اشتراکی
- سامانههای تراکنشی
از ساخت تا اتصال
ساخت
دیتابیس با نسخهی پیشفرض MariaDB 11 ساخته میشود.
--type mariadbلینک به اپ
متغیرهای
DATABASE_*به اپ تزریق میشوند.apps link-dbاستفاده
درایور MySQL همان آدرس را میخواند.
mysql://
خروجی ساخت سرویس
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 یا از کنسول.
sakoocloud db create --name app-db --type mariadb --storage 10
تنظیمات
متغیرهایی که به اپ تزریق میشوند
پیشوند پیشفرض DATABASE است؛ با --prefix میتوانید نام دیگری بدهید، مثلاً DATABASE.
| متغیر | مقدار |
|---|---|
DATABASE_URL | mysql://user:pass@host:3306/db |
DATABASE_HOST و DATABASE_PORT | آدرس و پورت داخلی |
DATABASE_USER و DATABASE_PASSWORD | نام کاربری و رمز تولیدشده |
DATABASE_NAME | نام دیتابیس |
پشتیبانگیری
پشتیبانها بهصورت dump منطقی گرفته و جدا از دیسک دیتابیس، روی فضای ذخیرهسازی سازگار با S3 نگهداری میشوند.
| نوع | در دسترس |
|---|---|
| پشتیبان دستی | همهی پلنها، از جمله پلن رایگان |
| زمانبندی خودکار | پلنهای پولی |
| بازگردانی | روی همان دیتابیس یا یک نمونهی تازه (backups clone) |
عملیات روزمره
| کار | دستور |
|---|---|
| اطلاعات اتصال | sakoocloud db credentials <id> |
| اتصال مستقیم با کلاینت mariadb | sakoocloud 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"),
);
import mysql from "mysql2/promise";
const pool = mysql.createPool(process.env.DATABASE_URL);
خطاهای رایج
از سیستم خودم وصل نمیشوم
علتآدرس داخلی فقط از اپهای همان پروژه در دسترس است.
راهحلبرای اتصال از بیرون، دسترسی عمومی را روشن کنید و آدرس و پورت خارجی را از sakoocloud db credentials بگیرید.
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.