Data Storage Solutions
- Data Storage Solutions
This article details the various data storage solutions employed by our MediaWiki installation, providing a comprehensive overview for server administrators and those interested in understanding the underlying infrastructure. Proper data storage is critical for the performance, reliability, and scalability of our wiki.
Overview
Our MediaWiki instance relies on a robust data storage system to manage all content, including page revisions, user data, and configuration files. We primarily utilize a relational database management system (RDBMS) for structured data and a file system for media files. Understanding the interaction between these components is vital for effective maintenance and troubleshooting. We will cover the specifics of our database configuration, file storage options, and backup strategies. See also Manual:Configuration settings for general configuration information.
Database Configuration
The core of our MediaWiki data storage lies in the database. We currently use MySQL/MariaDB as our RDBMS. The database stores all wiki content, user information, watchlists, categories, and other essential data. Proper database configuration is paramount to ensure optimal performance.
Database Server Specifications
The following table details the specifications of our primary database server:
Specification | Value |
---|---|
Server OS | Ubuntu Server 22.04 LTS |
RDBMS | MariaDB 10.11 |
CPU | Intel Xeon Gold 6248R @ 3.00GHz (24 cores) |
RAM | 128 GB DDR4 ECC |
Storage | 2 x 1 TB NVMe SSD (RAID 1) |
Database Configuration Parameters
Key database configuration parameters are outlined below. These settings are crucial for performance tuning. Refer to the Manual:Database page for more detailed explanations.
Parameter | Value | Description |
---|---|---|
`innodb_buffer_pool_size` | 64G | Allocates memory for caching table and index data. |
`query_cache_size` | 256M | Caches the results of SELECT queries. (Note: deprecated in newer MariaDB versions, consider Performance Schema) |
`max_connections` | 500 | Maximum number of concurrent connections to the database. |
`wait_timeout` | 600 | Number of seconds the server waits for activity on a non-interactive connection before closing it. |
Database Maintenance
Regular database maintenance is essential. This includes:
- Daily backups (see Manual:Backups for details).
- Weekly optimization of tables using `OPTIMIZE TABLE`.
- Monitoring database performance using tools like `mysqladmin` or phpMyAdmin.
- Regularly reviewing and analyzing slow query logs.
File Storage
MediaWiki stores uploaded files (images, documents, etc.) in the file system. This storage is separate from the database. We utilize a dedicated file server to handle this data. See Manual:Images for information about image handling in MediaWiki.
File Server Specifications
The following table outlines the specifications of our file server:
Specification | Value |
---|---|
Server OS | CentOS Stream 9 |
File System | XFS |
CPU | AMD EPYC 7302P (16 cores) |
RAM | 64 GB DDR4 ECC |
Storage | 8 x 4 TB SATA HDD (RAID 6) |
Storage Location
Uploaded files are stored in the `$wgUploadDirectory` path, which is configured in `LocalSettings.php`. By default, this is typically `/var/www/html/images`. Access permissions must be carefully managed to ensure security.
File System Considerations
- **RAID Configuration:** We employ RAID 6 for data redundancy, allowing for the failure of two disks without data loss.
- **File System Choice:** XFS is chosen for its scalability and performance with large files.
- **Permissions:** The web server user (typically `www-data` or `apache`) requires read and write access to the upload directory. See Manual:Permissions for details.
Backup Strategy
A comprehensive backup strategy is crucial for disaster recovery. We employ a multi-layered approach:
- **Database Backups:** Daily full database backups are performed using `mysqldump`. These backups are stored offsite.
- **File System Backups:** Weekly full file system backups of the upload directory are performed using `rsync`. These backups are also stored offsite. Incremental backups are performed daily.
- **Configuration File Backups:** `LocalSettings.php` and other critical configuration files are version controlled using Git and backed up regularly.
- **Regular Testing:** Backup restoration procedures are tested regularly to ensure their effectiveness. See Manual:Backups for more detailed information.
Future Considerations
We are continuously evaluating new storage technologies to improve performance and scalability. Potential future considerations include:
- **Solid-State Drives (SSDs):** Replacing HDDs in the file server with SSDs for faster access times.
- **Cloud Storage:** Utilizing cloud storage solutions for offsite backups and potentially for serving media files.
- **Database Clustering:** Implementing database clustering for increased availability and scalability.
Manual:Configuration settings
Manual:Database
Manual:Images
Manual:Permissions
Manual:Backups
MySQL/MariaDB
phpMyAdmin
LocalSettings.php
Git
Help:Contents
Special:Statistics
Special:Search
Help:Editing
Help:Formatting
MediaWiki
Server administration
Database administration
Intel-Based Server Configurations
Configuration | Specifications | Benchmark |
---|---|---|
Core i7-6700K/7700 Server | 64 GB DDR4, NVMe SSD 2 x 512 GB | CPU Benchmark: 8046 |
Core i7-8700 Server | 64 GB DDR4, NVMe SSD 2x1 TB | CPU Benchmark: 13124 |
Core i9-9900K Server | 128 GB DDR4, NVMe SSD 2 x 1 TB | CPU Benchmark: 49969 |
Core i9-13900 Server (64GB) | 64 GB RAM, 2x2 TB NVMe SSD | |
Core i9-13900 Server (128GB) | 128 GB RAM, 2x2 TB NVMe SSD | |
Core i5-13500 Server (64GB) | 64 GB RAM, 2x500 GB NVMe SSD | |
Core i5-13500 Server (128GB) | 128 GB RAM, 2x500 GB NVMe SSD | |
Core i5-13500 Workstation | 64 GB DDR5 RAM, 2 NVMe SSD, NVIDIA RTX 4000 |
AMD-Based Server Configurations
Configuration | Specifications | Benchmark |
---|---|---|
Ryzen 5 3600 Server | 64 GB RAM, 2x480 GB NVMe | CPU Benchmark: 17849 |
Ryzen 7 7700 Server | 64 GB DDR5 RAM, 2x1 TB NVMe | CPU Benchmark: 35224 |
Ryzen 9 5950X Server | 128 GB RAM, 2x4 TB NVMe | CPU Benchmark: 46045 |
Ryzen 9 7950X Server | 128 GB DDR5 ECC, 2x2 TB NVMe | CPU Benchmark: 63561 |
EPYC 7502P Server (128GB/1TB) | 128 GB RAM, 1 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (128GB/2TB) | 128 GB RAM, 2 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (128GB/4TB) | 128 GB RAM, 2x2 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (256GB/1TB) | 256 GB RAM, 1 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (256GB/4TB) | 256 GB RAM, 2x2 TB NVMe | CPU Benchmark: 48021 |
EPYC 9454P Server | 256 GB RAM, 2x2 TB NVMe |
Order Your Dedicated Server
Configure and order your ideal server configuration
Need Assistance?
- Telegram: @powervps Servers at a discounted price
⚠️ *Note: All benchmark scores are approximate and may vary based on configuration. Server availability subject to stock.* ⚠️