Replikacja baz danych jest mechanizmem wbudowanym czasami w same silniki. W najprostszej wersji, jest master ze swoim transaction logiem (listą wykonanych na bazie komend), ten transaction log leci do replik, które go sobie przetwarzają i odbudowują stan.
Możliwe jest również zestawienie replikacji active-active, ale w takim przypadku programista musi zadbać o brak konfliktów zmian (np. jednoczesnej zmiany tego samego rekordu).
Na jakimś tam poziomie abstrakcji, to jak działa baza danych bardzo mocno przypomina event sourcing z cache stanu aktualnego. Baza dostaje zmiany w postaci listy komend CRUD, trzyma wyniki tych zmian w pamięci, co jakiś czas robi update plików z danymi i "odcina" transaction log. Czasami były bardziej rozbudowane schematy działania takich replik, podwójne zatwierdzanie itd.
Obecnie rzadko się spotyka wykorzystywanie takich mechanizmów i kierunek jest raczej na ogarnianie takich tematów za pomocą wzorców architektonicznych jak saga.
W twoim przypadku, z tego co rozumiem, chcesz skalować odczyt, np. masz bazę z kartoteką towarów i chcesz, żeby zwiększyć wydajność przeszukiwania różnych kategorii stawiając repliki. Ponieważ nie ma tu zmian danych, możesz to zrobić, jak ci radzą, czyli odtwarzać tę samą bazę na tylu instancjach ilu potrzebujesz, dorabiając do tego jakieś mechanizmy automatycznej aktualizacji, bo prawdopodobnie nie chcesz, żeby wynik był zwracany zawsze z tej samej wersji danych.