# Rollback Plan: v2.3 Deploy
## 1. Pre-Deploy: Verified Backup
Before executing the v2.3 deploy, a verified backup of the Postgres database **must** be created.
1. **Create Backup:**
```bash
pg_dump -Fc -f /backups/ferrite_v2.2_pre_deploy.dump
2. **Verify Backup Integrity:**
Check the file size and verify the checksum to ensure the backup is complete and not corrupted.
```bash
sha256sum /backups/ferrite_v2.2_pre_deploy.dump
*Note: Do not proceed with the deploy if the backup file is missing or the checksum verification fails.*
## 2. Rollback Execution
If the v2.3 deploy fails (e.g., migration errors, application crashes), execute the following steps immediately.
1. **Stop the Sync Engine:**
```bash
systemctl stop ferrite-sync
2. **Restore Database:**
Restore the verified backup created in Step 1.
```bash
pg_restore -c -d ferrite_db /backups/ferrite_v2.2_pre_deploy.dump
3. **Revert Application:**
Deploy the previous version (v2.2) of the sync engine binary.
```bash
# Example: Replace the v2.3 binary with the v2.2 binary
cp /opt/ferrite/bin/sync_engine_v2.2 /opt/ferrite/bin/sync_engine
4. **Start the Sync Engine:**
```bash
systemctl start ferrite-sync
## 3. Post-Rollback Verification
After rollback, verify the system state.
1. **Check Service Status:**
```bash
systemctl status ferrite-sync
2. **Check Database Consistency:**
Ensure the database is accepting connections and the expected tables exist.
```bash
psql -d ferrite_db -c "SELECT 1;"
3. **Monitor Logs:**
Check `/var/log/ferrite/sync.log` for any error messages post-restore.
## 4. Escalation
If the rollback fails or data inconsistency is detected after restore, **DO NOT** attempt further automated fixes.
* **Contact:** Marcus Chen (Tech Lead)
* **Action:** Manual DBA intervention required.