إنتقل إلى المحتوى الرئيسي

إعداد قاعدة البيانات

يستخدم FeedbackPulse SaaS MySQL أو MariaDB كقاعدة بياناته الأساسية.


✅ قواعد البيانات المدعومة

قاعدة البياناتالإصدارالحالة
MySQL8.0+✅ مدعوم بالكامل (موصى به)
MariaDB10.6+✅ مدعوم بالكامل
PostgreSQL15+⚠️ تجريبي (قد تحتاج الترحيلات إلى تعديل)
SQLite3.35+⚠️ للتطوير فقط (ليس للإنتاج)

🔧 إنشاء قاعدة البيانات

قبل تشغيل المثبّت:

-- Connect to MySQL
mysql -u root -p

-- Create database with proper character set
CREATE DATABASE feedbackpulse
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- Create a dedicated user (recommended for security)
CREATE USER 'feedbackpulse'@'localhost'
IDENTIFIED BY 'your_strong_password_here';

-- Grant permissions
GRANT ALL PRIVILEGES ON feedbackpulse.*
TO 'feedbackpulse'@'localhost';

FLUSH PRIVILEGES;
EXIT;

⚠️ لماذا utf8mb4؟ يدعم مجموعة أحرف Unicode الكاملة بما فيها الرموز التعبيرية. كثيراً ما تحتوي تغذية العملاء الراجعة على رموز تعبيرية، لذا هذا أمر مهم!


⚙️ إعداد ملف .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=feedbackpulse
DB_USERNAME=feedbackpulse
DB_PASSWORD=your_strong_password_here

المشكلات الشائعة

المشكلةالحل
SQLSTATE[HY000] [2002] Connection refusedاستخدم 127.0.0.1 بدلاً من localhost
SQLSTATE[HY000] [1045] Access deniedتحقق من اسم المستخدم/كلمة المرور، وتأكد من امتلاك المستخدم الصلاحيات
SQLSTATE[42S01] Table already existsقاعدة البيانات لم تكن فارغة. احذفها وأعد إنشاءها، أو استخدم علامة --force
ظهور الرموز التعبيرية كـ ????يجب أن يكون ترميز قاعدة البيانات utf8mb4 وليس utf8

🔍 ضبط أداء MySQL

لخوادم الإنتاج ذات المستأجرين الكثيرين، قم بتحسين MySQL:

# /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
# InnoDB buffer pool (set to 50-70% of available RAM)
innodb_buffer_pool_size = 1G

# Log file size
innodb_log_file_size = 256M

# Max connections (increase for high-traffic platforms)
max_connections = 200

# Query cache (disable in MySQL 8.0+, it's deprecated)
query_cache_type = 0

# Slow query log (for debugging performance issues)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

أعد تشغيل MySQL:

sudo systemctl restart mysql

💾 النسخ الاحتياطي والاستعادة

باستخدام لوحة الإدارة

يمتلك FeedbackPulse ميزة نسخ احتياطي مدمجة:

  1. انتقل إلى Admin → Backups
  2. انقر على Create Backup
  3. نزّل ملف .sql.gz

النسخ الاحتياطي اليدوي

mysqldump -u feedbackpulse -p feedbackpulse | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz

الاستعادة

gunzip < backup_20240101_120000.sql.gz | mysql -u feedbackpulse -p feedbackpulse

⏭️ الخطوات التالية