Managed MySQL fit
Compatible on paper
MySQL 8.0, 320 GB minimum storage, private bare-metal connectivity, two nodes, automatic failover, asynchronous replication, 14-day backups and a 99.95% Production SLA. Available in both RBX and ERI.
OCI → OVH migration dossier
A decision-ready view of the current Oracle estate, the live Magento codebase, and the two credible OVH landing patterns. Two physical servers fit the measured load; the real choice is paying OVHcloud to operate MySQL or operating a three-member database cluster ourselves.
Measured CPU and RAM use, the 63.3 GB database, and the proven `jade` hardware class all support two Rise-1 or Rise-3 hosts. With OVH Managed MySQL, a third physical database member is unnecessary.
Managed MySQL removes database patching and failover work but more than doubles platform cost versus three self-managed Rise-3 nodes. Guest inspection is now complete across all eight servers; the remaining work is migration rehearsal, database import compatibility and security cleanup.
The applications fit on two physical hosts. The selector isolates the consequential choice: managed database operations versus the lowest monthly cost.
Preferred · lower operations risk
Two 12-core hosts leave ample application headroom while OVHcloud operates the two-node MySQL service and automatic failover. Add a small independent witness for Proxmox quorum and Redis Sentinel.
Known subtotals exclude VAT, the small quorum witness and independent backup. The newer Production B3-16 managed tier is about £560.20/month; the comparison uses the still-listed 15 GB Business DB1-15 at about £476.84/month. Confirm availability and checkout price before ordering.
Managed MySQL fit
MySQL 8.0, 320 GB minimum storage, private bare-metal connectivity, two nodes, automatic failover, asynchronous replication, 14-day backups and a 99.95% Production SLA. Available in both RBX and ERI.
Schema gate removed
Those tables block MySQL Group Replication because they lack row identity. OVH's managed topology uses ordinary asynchronous replication, so this is not an initial migration blocker.
Still prove it
Import a clone, validate all 84 triggers and definers, exercise checkout/admin/cron, benchmark RBX/ERI latency, and force a managed failover.
The live checkout was inspected over read-only SSH. The source is manageable; generated output, local working data and the NFS media corpus must be handled as separate migration streams.
/var/www/html/aashniThe 17 GB live tree and 2 GB /var/www/html/aashni_git repository are both on master at 29a610cab68c410c0c96605f3a6198d19adbf5db.
Build the OVH image from a sanitized canonical repository. Do not copy the 17 GB tree wholesale: its generated code, logs, imports, PDFs, local media and scripts obscure the small source payload and include unsafe tracked artifacts.
Runtime: Magento Community Edition 2.3.5-p1, Nginx 1.18, PHP-FPM 7.2 and Solr 7.7.3. Preserve this legacy runtime for the infrastructure cutover; upgrade only after migration stability.
Company-specific catalog, API, invoice and data-update behavior.
The largest custom family; checkout, merchandising, fulfilment and admin workflows.
Native-app APIs, page layout and Solr-linked presentation logic.
Payment integration code that needs checkout and callback rehearsal.
Small catalog/category schema and presentation customization.
Direct Composer requirements also include Stripe PHP, Facebook SDK, Mailchimp, Liquid and Mirasvit search/sorting.
The repository tracks private-key material named .key, Test.key and aashni_new_ssh. The last file contains a private-key marker and is mode 0644. No secret contents were read or copied into this report.
pub/adminer.php and pub/config.php are tracked under the public root; current public checks returned 404.pub/100020273_AJODEC2102A_purchase_order.pdf is tracked and returned HTTP 200 publicly. Treat it as exposed: remove it from origin/history as appropriate, purge caches and assess notification obligations.Aashni/ProductUpdate files; generated code is also noisy. Capture legitimate changes into a clean repository before building OVH guests.All eight compute nodes are guest-confirmed. Green paths are verified application and data flows; amber annotations identify migration decisions or intentionally limited content-level inspection.
The current load balancer exposes HTTP and HTTPS, then routes requests to the staging, public website and admin/backend servers.
This route is confirmed from load-balancer rules. Journal and Revivify are not attached to this load balancer.
36 OCPUs and 108 GB of memory in total. All eight use the E4 Flex shape and run in Frankfurt availability domain 1.
Magento 2 production storefront and media
Magento 2 admin and backend routes
Magento 2 staging storefront
Journal WordPress site
React admin dashboard + Express production API
Node.js/Express beta API
Build and deployment automation
Revivify WordPress site
OCI shows one managed relational database, one managed cache, 104 MySQL recovery points and 16 attached disks. Guest topology also exposes a separate Redis service and NFS media export on the frontend VM.
OCI MySQL DB System · Active
Managed Redis cache · Active
| Server | Boot | Attached data volumes | Total |
|---|---|---|---|
| aashni-prod-frontend | 50 GB · code/runtime | 200 GB mounted but effectively empty + 2,048 GB media at 86% shareable | 2,298 GB |
| aashni-prod-admin | 50 GB · 68% used | 500 GB attached but unmounted and absent from fstab | 550 GB |
| aashni-stage | 50 GB · code/runtime | 500 GB formatted but unmounted | 550 GB |
| Journal-wordpress | 47 GB | — | 47 GB |
| Revivify-prod | 47 GB | 250 GB mounted at /mnt/data · 43.3 GB used | 297 GB |
| UAT-Revivify | 47 GB · code/runtime | 100 GB mounted at /data · 274 MB used | 147 GB |
| Revivify-Jenkins | 47 GB · Jenkins home | 100 GB not used by the running guest | 147 GB |
| Revivify-WordPress | 47 GB · site/runtime | 100 GB not used by the running guest | 147 GB |
| Fleet total | 385 GB | 3,798 GB | 4,183 GB |
Two separate virtual networks serve Aashni and Revivify. Every VM currently has a public IP address.
Both public VCN security lists allow TCP/22 from 0.0.0.0/0; Aashni also allows it over IPv6. Jenkins now blocks public SSH in UFW and permits port 22 only from its private subnet/Bastion path.
Revivify’s default list allows MySQL/3306 from anywhere. The Aashni private-subnet list allows 3306 and 33060 from anywhere, though route placement still limits reachability.
Eight public IPs increase the migration and hardening surface. The load balancer only fronts three Aashni servers.
An empty network-firewall policy exists, but no OCI Network Firewall instance is deployed.
There are 2 OCI IAM users—not 4. The identity domain also contains 37 mostly Oracle-created application integrations; these are not people or workloads.
| OCI IAM user | Status | Created |
|---|---|---|
| akash@aashniandco.com | Active | 4 Jun 2024 |
| vishal.doshi@gmail.com | Active | 22 Aug 2026 |
Control-plane access
| Access path | Coverage | Verified position |
|---|---|---|
| GitHub RSA key SHA256:4oGiwu…pinIM | All 8 guests · ubuntu | Installed and used |
| OCI Bastion · Aashni subnet codex-key-recovery-20260824 | Frontend, admin, stage, Journal | Active |
| OCI Bastion · Revivify subnet codex-key-recovery-revivify-20260824 | Prod, UAT, Jenkins, WordPress | Active |
| Oracle Cloud Agent Bastion plugin | All 8 guests | Running 8 / 8 |
Monitoring exists around the Aashni frontend and admin servers. Certificate objects include two old, expired imports that remain marked active in OCI.
| Certificate | Covers | Valid until | Status |
|---|---|---|---|
| aashniandco-2025 | aashniandco.com, www | 29 Sep 2026 | Current |
| aashni-ssl-2024 | aashniandco.com, www | 29 Sep 2025 | Expired object |
| aashni-letsencrypt | *.aashniandco.com | 15 Oct 2024 | Expired object |
All active
Warning and critical load alarms for aashni-prod-frontend and aashni-prod-admin.
1 log group
WAF activity plus load-balancer access and error logs.
Email subscriptions
Notifications go to Akhilesh and Akash through one topic.
“Not found” means the authoritative OCI service API returned no tenant-owned resource. “Unknown” means OCI cannot see inside a server or database.