The database will be mirrored with separate read/write streams so they’d be using the same database but different databases if that makes sense.
That sounds dangerous! Race conditions and deadlocks are bad enough in a single database – if you want to have users and admins working on out-of-sync mirror copies of the same database (and they will by definition be out of sync), you’ll just be adding to the potential pitfalls. What happens if a user does something that updates a row in a table, but at the same time an admin does something that deletes that row? You’ll need to handle that gracefully. The pitfalls are legion.
Surely a Facebook administrator doesn’t log into the same area a normal user does?
Why not? Facebook administrators are just regular Facebook users that have administrative rights over certain pages/groups/things. Or do you mean the people who work for Facebook and do behind-the-scenes administrative stuff? They probably have a separate admin panel-ish thing for that, yes, but there’s no reason it shouldn’t be part of the same overall application structure. For Facebook, of course, neither the databases nor the app itself is hosted on a single server, so they do need to handle all the pitfalls that come with that – but that’s because they need to serve billions of users every day.
Unless you know that a single server will not be able to cope with the number of users/traffic/resource usage you’re expecting, deliberately dividing your app into pieces spread across multiple servers generally has more downsides than advantages.