sql >> Database >  >> RDS >> Mysql

Hoe kan ik twee MySQL-tabellen synchroniseren die dezelfde structuren en een verschillende server hebben?

Er zijn een paar opties. Een daarvan is het instellen van replicatie binnen MySQL, dat automatisch gegevens heen en weer tussen de servers kopieert en ze automatisch gesynchroniseerd houdt, met een granulariteit van een paar seconden terwijl de gegevens rondvliegen. Nadeel is dat je ten minste de hoofdserver moet blootstellen aan het net om TCP-verbindingen toe te staan.

Extern kun je gewone mysqldumps doen op server A, kopiëren naar server B, in mysql laden en je kunt beginnen. Dit heeft een granulariteit van het tijdsinterval waarin u de dump/copy/load-reeks uitvoert. Nadeel is dat mysqldump tabellen vergrendelt terwijl het werkt. Als u een grote database heeft, wordt u uitgesloten van de tabellen van serverA terwijl de dump vordert, en wordt u uitgesloten van serverB wanneer de gegevens worden geladen. En het laden van een dump is veel langzamer dan het doen van de dump in de eerste plaats, aangezien mysql allerlei interne huishoudelijke taken uitvoert (sleutelupdates, tabelmetadata-updates, enz...) tijdens het laden.

Voor de derde optie zou u een synchronisatieprogramma kunnen schrijven dat rijen tussen de twee databases vergelijkt en indien nodig updates uitvoert. Maar dan slurp je de inhoud van de ene server naar de andere en voer je rij-voor-rij bewerkingen uit. Bovendien moet je ook alle afhankelijke updates van externe sleutels/onderliggende relaties afhandelen, en dit zal snel ingewikkeld worden. Op dat moment kun je misschien beter de mysqldump-optie gebruiken.

Natuurlijk moet u uw MySQL upgraden naar iets moderners. v4.x is erg verouderd. Je zou op zijn minst een 5.0 moeten draaien, bij voorkeur een 5.1-versie.




  1. Een complexe MySQL-query schrijven

  2. Uw wachtwoord voldoet niet aan de huidige beleidsvereisten

  3. Hoe gebruik je Spring's JdbcTemplate om verbinding te maken met een eenvoudige MySql-database?

  4. Terugdraaien naar traditionele replicatie vanuit GTID