پرش به محتوا

MariaDB در Debian و تنظیم حافظه

MariaDB پیش‌فرض Debian را نصب و ایمن کنید و مهم‌ترین تنظیم کارایی، یعنی اندازه‌ی buffer pool، را متناسب با حافظه‌ی سرور تعیین کنید.

Debian 13سطح: مقدماتیبرای: Debian 13، Debian 12به‌روزرسانی: ۱۶ آبان ۱۴۰۵

۱. نصب و ایمن‌سازی

bash
sudo apt update
sudo apt install -y mariadb-server
sudo mariadb-secure-installation

در Debian کاربر root پایگاه داده از طریق unix socket احراز هویت می‌شود؛ یعنی فقط sudo mariadb به آن دسترسی دارد و رمز لازم نیست. این حالت امن است؛ آن را عوض نکنید.

۲. کاربر برنامه

bash
sudo mariadb -e "CREATE DATABASE erp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'erp'@'localhost' IDENTIFIED BY 'رمز-قوی';
GRANT ALL ON erp.* TO 'erp'@'localhost';"

۳. تنظیم حافظه

مهم‌ترین تنظیم کارایی InnoDB، innodb_buffer_pool_size است. روی سروری که فقط پایگاه داده اجرا می‌کند، حدود ۶۰ تا ۷۰ درصد حافظه، و روی سرور مشترک حدود ۲۵ درصد:

bash
sudo nano /etc/mysql/mariadb.conf.d/60-tuning.cnf
ini
[mysqld]
innodb_buffer_pool_size = 4G
innodb_log_file_size    = 512M
max_connections         = 200
slow_query_log          = 1
slow_query_log_file     = /var/log/mysql/slow.log
long_query_time         = 1
bash
sudo systemctl restart mariadb
sudo mariadb -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"

۴. کوئری‌های کند

bash
sudo tail -f /var/log/mysql/slow.log

کوئری‌هایی که این‌جا ظاهر می‌شوند، معمولاً با یک index مناسب چند ده برابر سریع‌تر می‌شوند.

۵. بکاپ بدون قفل

bash
sudo mariadb-dump --single-transaction --routines --triggers erp | gzip > erp-$(date +%F).sql.gz