Data versioning

From Server rental store
Revision as of 10:24, 15 April 2025 by Admin (talk | contribs) (Automated server configuration article)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
  1. Data Versioning on MediaWiki Servers

This article details the data versioning strategy employed on our MediaWiki servers. Understanding this is crucial for maintaining data integrity, facilitating rollback operations, and ensuring disaster recovery capabilities. This guide is geared towards new server engineers and administrators.

Overview

Data versioning is the practice of retaining multiple versions of data over time. In the context of our MediaWiki installation, this encompasses the database (containing page content, user data, and configuration settings), the file uploads directory (containing images, documents, and other media), and configuration files. We utilize a multi-layered approach, combining database replication, regular backups, and filesystem snapshots. Effective data versioning allows us to recover from accidental data loss, software errors, or malicious attacks. Proper implementation requires careful coordination with our Database Administration team and adherence to established Backup Procedures.

Database Versioning

The core of our MediaWiki data resides within the database. We employ a master-slave replication setup to provide both redundancy and read scalability. This is supplemented by regular full and incremental backups.

Replication

We utilize asynchronous replication. The master server handles all write operations, and changes are propagated to the slave servers.

Server Role Purpose Status
Master Handles all write operations; primary data source. Active
Slave 1 Read-only replica for reporting and read-heavy operations. Active
Slave 2 Read-only replica; geographical redundancy. Active

The replication lag is monitored via Monitoring Dashboard and alerts are triggered if it exceeds acceptable thresholds. Failover procedures to a slave server are documented in the Disaster Recovery Plan. We use MySQL Replication technology.

Backups

Full database backups are performed weekly, and incremental backups are performed daily. These backups are stored offsite, ensuring protection against site-wide disasters.

Backup Type Frequency Retention Period Storage Location
Full Backup Weekly 4 Weeks Offsite Secure Storage
Incremental Backup Daily 7 Days Offsite Secure Storage

Database backups are tested regularly through Restore Drills to verify their integrity and ensure a quick recovery time objective (RTO). Restoration procedures are outlined in the Database Restoration Guide.


File Uploads Versioning

The `mw-config.php` file defines the location of our uploads directory. Versioning of files within this directory is achieved through filesystem snapshots and regular archiving.

Filesystem Snapshots

Filesystem snapshots are taken hourly, providing a point-in-time copy of the entire uploads directory. These snapshots are stored on a separate storage volume. Snapshots allow for quick rollback to previous versions of files if needed. The snapshot process is automated using LVM Snapshots.

Archiving

Older versions of files (beyond the snapshot retention period) are archived to long-term storage. This archival process is managed by the Storage Management team.

File Versioning Method Retention Period Purpose
Filesystem Snapshots 24 Hours Quick rollback of recent file changes.
Archival Storage Indefinite Long-term preservation of file history.

Configuration File Versioning

Configuration files (such as `LocalSettings.php`, `mw-config.php`, and web server configuration files) are versioned using a version control system – Git.

Git Repository

All configuration files are stored in a private Git repository. Changes are made through pull requests, reviewed by senior engineers, and then merged into the main branch. This ensures that all changes are tracked, auditable, and easily reversible.

Branching Strategy

We use a Gitflow branching strategy with dedicated branches for development, testing, and production. Deployment of configuration changes is automated using Continuous Integration/Continuous Deployment (CI/CD).

Rollback Procedures

In the event of data corruption or accidental changes, the following rollback procedures are followed:

1. **Database:** Restore from the most recent verified backup or failover to a slave server. 2. **File Uploads:** Restore files from a filesystem snapshot. 3. **Configuration Files:** Revert to a previous commit in the Git repository.

Detailed rollback procedures are documented in the Incident Response Guide. Always consult with the Security Team before initiating a rollback.

Future Considerations

We are currently evaluating the implementation of more advanced data versioning technologies, such as:

  • Temporal databases
  • Immutable infrastructure
  • Enhanced snapshot management tools.

These technologies will further strengthen our data protection capabilities and streamline our recovery processes. See the Future Development Roadmap for more details.


Special:Search/Data Versioning Special:WhatLinksHere/Data Versioning Help:Contents MediaWiki FAQs Server Administration Database Maintenance File Management Security Best Practices Disaster Recovery Backup Policy Configuration Management Version Control Systems Monitoring Tools Incident Management


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?

⚠️ *Note: All benchmark scores are approximate and may vary based on configuration. Server availability subject to stock.* ⚠️