Infrastructure engineering for East Africa's operators, platforms and regulators See the work →
CloudSpinx · Managed Databases

Managed Database Services in Kenya

CloudSpinx runs production databases for businesses in Kenya and across East Africa: PostgreSQL, MongoDB, MySQL, MariaDB and Valkey, with replication that fails over, point-in-time recovery somebody has actually restored from, and an encryption story you can explain to an auditor. We also do the unglamorous half of database administration, which is reading your slow queries, your index bloat and your log growth before any of the three become an incident. No hyperscaler runs a database region in Kenya, so if residency is what brought you here, the architecture is the entire conversation and we would rather have it before you sign anything. Cost follows the engine, the data volume, how far back you need to restore and how much of the running we take, which is why we scope every engagement instead of publishing tiers.

Free 30-min consultation No lock-in contracts Local on-site engineers

Who we build for

  • 14organizations, from ISPs and payment platforms to a national regulator
  • 6flagship engagements published in full, with the numbers counted
  • 4thof all contributors to the open-source payment switch national systems run on
See the engineering record →
Certified engineers 24/7 support
0 Hyperscaler DB regions in Kenya
3 Nodes before failover is automatic
KES 0 PostgreSQL and MariaDB licensing
What's Included

Everything in Our Managed Databases Service

Every engagement covers the full scope: no hidden extras, no upselling.

Managed PostgreSQL

PostgreSQL on the major version your application vendor actually supports, with streaming replication, Patroni for automatic promotion, pgBackRest for the backup chain, pgBouncer once connection counts justify it, and pg_stat_statements enabled from the first day, because you cannot fix a slow query nothing recorded.

Managed MongoDB replica sets

A three-member replica set with a real majority, write concern and read preference set deliberately rather than left at the default, oplog sized against your measured write rate, and an election rehearsed in front of you before anything goes live.

Managed MySQL and MariaDB

MySQL or MariaDB with asynchronous replicas, or Galera where the write pattern genuinely suits it, Percona XtraBackup for hot copies, and binary logs archived so that your recovery point is a decision somebody made rather than whatever the last dump happened to catch.

Managed Valkey and Redis

Cache, sessions and job queues, with persistence chosen on purpose: a cache that may be lost on restart, or a queue that may not. Two different configurations, and the wrong one drops background jobs quietly for weeks before anybody notices.

MongoDB Atlas migration

Moving off a foreign managed service without a surprise. We inventory what the platform gave you that plain MongoDB does not, prove the restore in a rehearsal with the timings written down, then run the cutover in a window you pick, with a rollback point.

Database residency in Kenya

The database placed in Kenya where that is genuinely the requirement, with the instrument that requires it named in writing. We also tell you when moving the database alone changes nothing, because the application processing the data is still sitting somewhere else.

Encryption at rest and in transit

AES-256 at rest through the volume or the engine, TLS between the application and the database and between the nodes, keys held away from the data in Vault or a KMIP provider, and a plain account of which attack each layer stops.

Backup, point-in-time recovery and restore tests

A base copy plus a continuous log archive, retention on object storage under a lock nobody can shorten, and a restore run every month into a throwaway instance. A backup nobody has restored from is a hypothesis, not a control.

High availability and failover drills

Automatic failover where a majority exists, a written promotion path where it does not, and a drill on the calendar. We take a node down on purpose in a window you choose, then hand you the measured timings rather than a vendor number.

Slow query and index review

The reason the application got slow is almost never the hardware. pg_stat_statements, the MongoDB slow query log and an index review find it, and the answer is usually one missing index, one query pulling the whole table, or a connection pool nobody sized.

Monitoring and 24/7 response

Replication lag, disk headroom, connection saturation, oplog and write-ahead log growth, plus the checks that catch a backup that failed rather than a disk that filled. Alerts reach an engineer, with a 1-hour response on a P1.

Major version upgrades

Upgrades planned against the vendor support window rather than against panic, rehearsed on a copy of your data, and cut over with logical replication where downtime is expensive. A release past end of life stops getting security fixes, and on most estates nobody owns that calendar.

Technologies we use

PostgreSQLMongoDBPercona Server for MongoDBMySQLMariaDBValkeyPatronipgBackRestpgBouncerpg_stat_statementsmongosyncPercona XtraBackupLUKSHashiCorp VaultS3 Object LockPrometheusGrafanaZabbixAnsible
Reference Designs

What a database we would agree to run looks like

Three drawings from the design phase of a database engagement: the shape that survives losing a node, the failure that replication makes worse rather than better, and what the word encrypted covers once you read the vendor documentation. Node counts and sizing come out of your own metrics, never out of a template.

01

A three-node replica set with no public database address

Two things in this drawing do most of the work. The database nodes hold no public address at all, so the only route to your data runs through an application the firewall knows about. And there are three of them, because a majority of three is two: lose one node and an election promotes a replacement while writes carry on. Patroni over an etcd majority does the same job for PostgreSQL that the replica set protocol does for MongoDB.

Three-node database replica set behind a single application tier Web and mobile clients reach an application tier that holds the only public address and terminates TLS. The application reaches three database nodes over a private subnet with no internet route: one primary accepting writes and two secondaries replicating from it. An encrypted backup chain with a write-ahead log or oplog archive sits under the private subnet and lands in object storage under a retention lock. A panel states the failure arithmetic: losing one node triggers an election and writes continue, losing two leaves the survivor serving reads only. one environment, three copies no public address on any node Web and mobile HTTPS only never talks to the database Application tier the only public address TLS termination and rate limiting API, workers, scheduled jobs TLS PRIVATE SUBNET, NO INTERNET ROUTE Primary accepts every write majority: 2 of 3 Secondary eligible for election Secondary eligible for election admin access over a VPN, never the internet Encrypted backup chain base copy plus a continuous log archive, object storage under a retention lock The failure arithmetic Lose one node an election runs, writes continue Lose two nodes the survivor serves reads only Run two nodes no majority exists, so nothing promotes A pair is a spare copy. It is not a cluster.
  • application and replication traffic
  • backup and log archive
02

Why a replica does not save you from a bad write

Replication is a correctness machine. It applies what the primary did, faithfully, including the update with a missing WHERE clause and the migration that ran against the wrong environment. On a local link that copy arrives inside the replication interval, which is milliseconds, and now the mistake exists three times. The only thing that gets you back is a base copy plus the log archive, replayed to a moment you choose. That is a different control, priced separately, and it is the one we test monthly.

A destructive write reaching every replica, and the recovery path that does not depend on them Top lane: a destructive statement runs on the primary, replicates to both secondaries inside the replication interval, and all three copies now hold the same wrong data, so failover changes nothing. Bottom lane: the recovery path restores the most recent base copy into a new instance, replays the write-ahead log or oplog archive up to a chosen point just before the statement, verifies the data, then repoints the application. A note states that the retention lock is what stops the backup chain being deleted by whoever or whatever caused the damage. one statement, three identical copies REPLICATION LANE a write with no WHERE clause runs on the primary replicates secondary same wrong data secondary same wrong data Failover buys you nothing here every copy is consistent, and consistent with the mistake THE CONTROL THAT WORKS RECOVERY LANE base copy restored into a new instance log archive replayed to a point you pick, just before the write verified against what the business says is correct application repointed The retention lock is the part that matters: whatever deleted your data must not be able to delete the copies of it, and that includes your own administrators.
03

What database encryption at rest actually defends

This is the figure that costs us upsells, so read it before signing anything with the word encrypted in it. Volume and engine encryption defend a disk that leaves the building. They do nothing about a credential in a repository, because the application is entitled to read the data and the storage layer cannot tell a thief holding a valid password from a customer. The controls in the right column are the ones that answer that, and they are cheaper than the ones on the left.

The three layers of database encryption at rest and the attacks each one stops Three stacked layers are drawn with what each defends: full-volume encryption defends a stolen or decommissioned disk; engine-level encryption, which is MongoDB Enterprise only upstream and free in Percona Server for MongoDB while PostgreSQL core has none, defends the data files against a reader on the host; encrypted backups defend the copies in object storage. A panel on the right lists what none of the three stop: a leaked connection string, an application credential in a repository, an over-privileged query, and a laptop with a copy of production data. Those are answered by least privilege, network isolation, credential rotation and audited access. three different meanings of one checkbox Full-volume encryption LUKS on the data disk stops: a disk that leaves the building, a host retired without a wipe Engine-level encryption MongoDB Enterprise, or Percona stops: a reader on the host, a copied data directory PostgreSQL core has none of this, so at rest there means the volume Encrypted backups keys held away from the data stops: an exposed bucket, a stolen archive What none of the three stop a connection string in a repository an application credential nobody rotated a query the application may legitimately run a laptop holding an export of production Those are answered by: a private subnet with no public route one credential per application, rotated read-only roles for reporting audited human access over a VPN and they cost less than a subscription

Which shape do you actually need?

Most enquiries arrive asking for the third one. Plenty of them should buy the second, and a few should buy the first and spend the difference on backups they have restored from. We say which on the first call.

One node

A single managed instance

One database, monitored, patched, backed up, with restores tested on a calendar. A restart is visible to users and a host failure is a restore rather than a failover.

Right when an hour of downtime is survivable and the data matters more than the uptime.

Two nodes

Primary plus a standby

A second copy kept current, promoted by a human following a runbook. It removes the restore from your recovery path and does not remove the phone call.

Right when you want a fast recovery and can accept that somebody has to decide.

Three nodes

A replica set with automatic failover

The shape in figure 01. A majority exists, so a node loss is an election rather than an incident, and maintenance stops needing a window.

Right when writes cannot pause for a person to wake up and read a runbook.

Your cloud

We run it where it already is

Your managed service in your own account, run properly: parameter groups, replication, PITR windows, slow queries, upgrades and cost. No migration, no lock-in to us.

Right when the platform is fine and the operating discipline is what is missing.

Nothing above is a quote for a specific number of nodes. Sizing comes from your own working set, write rate and log growth, which we read from your existing metrics before proposing anything. A vendor who sizes a database from a feature list has told you how the engagement will go.

What managed database services cost in Kenya

Two engagements with the same engine and the same data size can differ by a factor of four, and the difference is almost never the software. It is how fast you need to be back, how far back you need to go, and whether a human being has to be awake for a failover. So we scope rather than publish tiers. Send us the engine, the data volume and the recovery window through the form below and you get one figure with the reasoning attached. Where the nodes physically sit is a separate decision we are happy to make with you, whether that is hardware we run for you or an account you already own.

  • The engine and its license position: PostgreSQL, MariaDB and Valkey cost nothing to license, MongoDB Community costs nothing to run, and the one feature people assume is free is the one that is not (see the encryption section below)
  • Working set, not disk size: what has to stay in memory sets the node, and MongoDB sizes its cache at half of RAM minus a gigabyte by default, so a 4 GB node holds a 1.5 GB cache whatever the disk says
  • Node count and whether failover is automatic: one node, a standby somebody promotes, or a three-member set that promotes itself. The third costs the most and wakes nobody up
  • How far back you can restore: a nightly copy is cheap, and a 35-day point-in-time recovery window is priced by the log archive it has to keep, which grows with your write rate rather than your data size
  • Read replicas and reporting: analysts running heavy queries against the primary is the most common cause of a slow application in this market, and a read replica is usually cheaper than a bigger primary
  • Migration scope: a rehearsed cutover off a managed platform is fixed-fee work, and the price is set by what the old platform did that the new one has to be taught to do
  • Who holds the platform: we can run your database in your own cloud account, in infrastructure we design with you, or on machines we operate. All three are normal and only one of them is a lock-in
  • Hours of cover: business hours, extended weekdays or 24/7. Choose this honestly, because paying for nights you do not need is the easiest line to cut and the worst one to discover you cut

Managed MongoDB in Kenya, and leaving MongoDB Atlas

The enquiry usually arrives the same way. A platform is on a managed MongoDB service in a region outside the country, somebody has read the Data Protection Act, and the data has to come home. The database part of that is straightforward and we have done it. The part that catches projects is everything the managed platform quietly did for you, because none of it exists in plain MongoDB and each piece needs a decision before the cutover date is set rather than after.

What the migration tooling will and will not do

MongoDB publishes the constraints, so there is no need to guess. The mongosync limitations page states plainly that it supports WiredTiger clusters only, that a shared tier is not supported and neither are serverless clusters, and that it does not sync Atlas Search indexes. It also refuses a major or minor version change during a migration. So a shared-tier cluster is a dump and restore with a planned window, and a dedicated cluster can be live-synced and cut over in minutes. Which one you are decides the whole shape of the plan, and it is the first thing we check.

The features that do not come with you

Atlas Search is the one that reprices a project. It is a platform service, not a MongoDB feature, so leaving means either native text indexes if the queries are simple enough, or a dedicated search service beside the database. Triggers, the Data API and Charts are the same class of problem. We inventory these first and quote the replacement separately, because finding one of them a week before cutover is how a migration turns into a rebuild. There is no Atlas region in Kenya or anywhere in East Africa either, which is the whole reason this conversation exists: the published AWS region list reaches Cape Town and stops.

MongoDB encryption at rest without an Enterprise license

This is the single most common thing we correct on an incoming specification, and it costs real money. WiredTiger encryption at rest is an Enterprise feature. The MongoDB manual says so in one line: available in MongoDB Enterprise only. It is not in Community. So when a proposal offers you MongoDB Community with WiredTiger AES-256 at a low monthly figure, one of three things is true. They are quoting a subscription they have not priced, they mean full-volume encryption and are calling it something else, or they have not read the page.

The two honest routes, and what each one gives you

Full-volume encryption with LUKS under the data directory gives you AES-256 at rest on any edition, and it defends exactly what a stolen or badly retired disk exposes. Percona Server for MongoDB is the other route: a drop-in build that implements the same encryption interface without the subscription, and it integrates with Vault, OpenBao and KMIP for the keys. We will run either, and we will tell you which one your compliance requirement actually needs. PostgreSQL sits differently again, because its core carries no transparent data encryption at all, so at rest there means the volume and anybody claiming otherwise is describing a fork or an extension.

The control that matters more than the checkbox

Encryption at rest answers a question about physical media. It says nothing about a credential in a repository or a reporting user with more rights than the report needs, and those are how database data actually leaks in this market. A private subnet with no public route, one rotated credential per application, read-only roles for analysts and audited human access over a VPN cost less than a subscription and stop more. That is the same argument we make on the security side of the house, and figure 03 above is the version we draw on a whiteboard.

Managed PostgreSQL, and the slow query nobody can see

Postgres is the engine we run most, and the pattern is consistent: the database is not slow, four queries are. Finding them is a solved problem the moment somebody turns on the instrumentation and then goes and looks, which is the part that does not happen when nobody owns the database. Our strongest published record here is an embedded engagement inside an existing AWS platform team, where a slow-query observability path was built across four repositories and a 137-database inventory was made to regenerate itself from the live estate. The counts on that case study are taken from the repositories rather than written by marketing, and most of the work was in failures that report success.

Database administration without hiring a full-time DBA

Very few organizations in this market can justify a dedicated database administrator, and almost all of them need one about four days a quarter. That is what a remote DBA retainer is for: the upgrade calendar, the index review, the connection pool nobody sized, the replication that has been broken since a maintenance window in some earlier quarter, and the restore test that proves the backups are real. It sits alongside the delivery and automation work where the schema changes come from a pipeline rather than from a laptop.

MySQL, MariaDB, and when Galera is the wrong answer

Galera looks like the obvious upgrade from a primary and a replica, and for a write-heavy application it frequently is not. Every write has to be certified across the cluster, so a workload with hot rows and long transactions gets slower and starts throwing conflicts that the application has to handle. An asynchronous replica with a documented promotion path is often the better engineering answer, and we will say so even though the cluster is the bigger sale. Where Galera does fit, it fits well, and the deciding factor is your write pattern rather than anybody's preference.

Where your database can legally sit in Kenya

Database residency is where the residency question gets sharp, because a database is the one component that unambiguously holds the personal data. The Kenyan rule most businesses are subject to is not a location rule at all: the Data Protection Act governs the transfer, and regulation 26 of the 2021 general regulations imposes in-country processing only for a short list of state-interest purposes, satisfiable by keeping a serving copy in Kenya rather than by moving the primary. That distinction is worth real money on an architecture. We wrote the four-country version of this for Kenya, Tanzania, Uganda and Zambia in where your servers can legally live in East Africa.

Moving the database and leaving the application abroad

This is the design error we see most often, and it is expensive because it is discovered late. If the database moves to Kenya and the application tier that reads it stays on a platform in another country, the processing is still happening abroad and the transfer question is unanswered. The data has not come home, it has acquired a longer round trip. Either both tiers move together or the residency claim needs rewriting, and the second option is usually worse. Where the application also has to move, the shape of that is a private platform in Kenya rather than a database engagement on its own.

If a regulator licenses you, a stricter instrument may apply

A licensed institution has a second layer above the data protection law, and it can close a door the act leaves open. Buying a managed database is capable of being material outsourcing, which for a bank means prior approval before the arrangement is entered into rather than a notification afterwards. We set out what that submission has to contain in our read of the CBK outsourcing guideline. Tell us your license class in the form and we will tell you which instrument governs the placement, including when the honest answer is that your regulator, not us, decides where this can run.

Backups, replicas and which one gets your data back

A replica is a copy of your current state, including the state you did not want. Replication applied the delete faithfully to all three nodes inside the replication interval, which on a local link is milliseconds, and failover now hands you the same wrong data with a different hostname. The control that recovers from a bad write is a base copy plus a log archive, replayed to a point you choose, and the control that recovers from ransomware is that copy sitting under a retention lock nobody can shorten, including your own administrators and including us. Figure 02 above is this argument in one drawing, and the wider version of it lives in the disaster recovery practice.

  • Base copy plus log archive: pgBackRest for PostgreSQL, oplog archiving for MongoDB, binary logs for MySQL. This is what turns a database backup into point-in-time recovery rather than a word in a proposal
  • Retention lock on the object copy: object storage with a lock, so the credential that deletes your data cannot delete the copies of it
  • A restore every month into a throwaway instance: with the elapsed time recorded, because a recovery estimate nobody has measured is a guess presented as a number
  • Logical and physical copies both: a physical copy restores fast and carries corruption with it, a logical dump is slower and gives you a single table back on a Tuesday afternoon
  • Retention laddered on purpose: daily for a fortnight, weekly for a quarter, monthly for as long as your own rules require, rather than everything forever because nobody chose

When we tell clients not to buy a managed database

We run these for a living and we still talk people out of them regularly. Saying it out loud is the difference between an engineer and a reseller with a diagram.

  • Your database is 6 GB, it serves twelve internal users, and it has never fallen over. Buy the backup discipline and a monthly restore test, and keep the rest of the budget
  • The application is the problem. If a page makes forty queries to render, a bigger database instance buys you a few months and the same conversation later. Fix the queries first, and we would rather help with that
  • You want three nodes because a spec sheet said three nodes. If your write rate is a dozen operations a second, a primary and a standby with a written promotion path covers the real risk at a fraction of the price
  • Nobody has restored from your current backups. That is the whole engagement until it is done, and it is a week of work rather than a platform migration
  • You are moving the database to Kenya for residency but leaving the application abroad. That does not achieve the thing you are buying it for, and we will say so before you commit
  • A dedicated database administrator would genuinely be cheaper for you than a retainer. It happens at a certain size, and when it does we will help you write the job description and hand over to the person you hire, which is closer to how the support relationship is scoped anyway

What you own when we hand the database over

Everything, and nothing that only works while we hold a password. You get the provisioning and configuration as code in your own repository, the backup and retention configuration with the reasoning behind each number, the monitoring and its alert rules, the runbooks for promotion and restore, and the measured timings from the drill your own people ran with us watching. Credentials sit in your vault. The engines are open source or a drop-in build of one, so nothing here needs us to keep working. Plenty of clients take the build, the first restore test and the documentation, then run the calendar themselves on top of Linux platforms we set up with them, and that is a good outcome we scope for openly.

Scope Your Database

Tell us what the database has to survive

Enough for a real design and one figure rather than a range. Every field has an escape hatch, so answer what you know and leave the rest to the review.

Free, and it commits you to nothing. If the honest answer is that you should fix your backups and keep the database where it is, that is what you will be told.

Next step

Ready to discuss Managed Databases?

A 30-minute scoping call, free, and it commits you to nothing.

Our Process

How Every Managed Databases Engagement Starts

01

Read the estate first

A free session, then we look at your real numbers: data and index size, write rate, log growth, connection counts and the slowest queries. Sizing comes out of that, never out of a template.

02

Design, then one price

The shape, the node count, the recovery window, the residency position and what the old platform did that the new one must be taught. Written down, with a single scoped figure and the reasoning.

03

Rehearse, then cut over

We restore into a throwaway instance and time it before touching production. Then the cutover happens in a window you choose, with a rollback point and somebody watching the application.

04

Run it and prove it

Monitoring, patching, a monthly restore test, a failover drill on the calendar, and a quarterly review of slow queries, capacity and cost. The evidence is the deliverable.

FAQ

Common Questions

How much do managed database services cost in Kenya?
It follows the recovery target and the running, not the engine. A single monitored instance with tested restores is the cheapest defensible shape and suits a lot of businesses. A three-member replica set with automatic failover, a long point-in-time recovery window and 24/7 cover costs several times that, because you are paying for nodes that sit ready, a log archive that keeps growing and somebody awake. Send the engine, the data volume and how far back you need to restore through the form and you get one figure with the reasoning, rather than a range.
Can you host our database in Kenya?
Yes, and that is most of what we are asked for. The nodes sit in a Nairobi facility, the database holds no public address, and the transfer position is written down naming the instrument that requires it. Worth knowing before you plan: no hyperscaler runs a database region in Kenya, so a managed cloud database physically in the country is not something anybody can sell you. What exists is a properly run database on infrastructure in Kenya, which is what we do.
Is there a MongoDB Atlas alternative for Kenyan data residency?
Atlas has no region in Kenya or anywhere in East Africa. Its published AWS region list reaches Cape Town, so if your requirement is that the data sits in Kenya, the answer is a managed MongoDB replica set on infrastructure here rather than a different tier of the same platform. You keep the replica set, the automatic failover, the encrypted backups and the point-in-time recovery. What you give up is the platform extras, mainly Atlas Search, and we scope the replacement for those separately.
Can you migrate us off MongoDB Atlas without downtime?
Almost. The honest answer is minutes, in a window you choose, and which method applies depends on your cluster. mongosync does not support a shared tier or serverless clusters, so those are a dump and restore with a planned outage. A dedicated cluster on MongoDB 6.0 or later can be live-synced and cut over quickly. Either way we rehearse the restore first and give you the measured timings before you agree a date, and there is a rollback point on the night.
Does MongoDB Community support encryption at rest?
No. WiredTiger encryption at rest is available in MongoDB Enterprise only, which the MongoDB manual states in one line. The two honest routes without a subscription are full-volume encryption with LUKS under the data directory, or Percona Server for MongoDB, a drop-in build that implements the same encryption interface and integrates with Vault, OpenBao and KMIP. Anyone quoting Community with WiredTiger AES-256 has either priced a subscription they have not mentioned or means volume encryption.
Do you offer remote DBA services, or only hosting?
Both, and they are separable. Plenty of clients keep their database exactly where it is and buy the database administration: the upgrade calendar, the index and slow-query review, replication that has quietly been broken for months, the connection pool nobody sized, and a restore test that proves the backups work. That is a retainer against your own platform, in your own cloud account, with no migration and no lock-in to us.
Which databases do you support?
PostgreSQL, MongoDB, MySQL, MariaDB and Valkey or Redis, plus Percona builds of MongoDB and MySQL where they earn their place. We do not take on an engine we have not run in production, so if you are on something else, say so in the form and you will get a straight yes or no rather than a discovery project.
Can you manage a database in our own AWS, Azure or Google account?
Yes, and for a managed cloud database that is often the right answer. Your account, your bill, your data, and we run the operating discipline on top: parameter groups, replication and failover testing, the point-in-time recovery window, slow queries, upgrades and the cost line that nobody reviews. You keep every exit route you had before we arrived.
How far back can we restore, and do you test it?
As far back as the log archive you are paying to keep, which is a decision we make with you rather than a default. Two weeks is common, and 35 days is normal where a compliance requirement drives it. We restore into a throwaway instance every month, record how long it took, and send you that number. An untested backup is a hypothesis, and the first restore is the worst possible time to discover it.
Who holds the credentials, and what happens if we leave?
Credentials live in your vault, the configuration lives as code in your repository, and the engines are open source or a drop-in build of one. Leaving means revoking our access and continuing, not migrating off a platform. We would rather lose a retainer than hold a client with a password, and saying that up front is why the regulated buyers on this site ask us to bid.
WhatsApp