sql >> Database teknologi >  >> RDS >> Mysql

MySQL opdatere hele databasen uden nedetid

Her er noget, jeg gør. Det resulterer ikke i nul nedetid, men kan afsluttes på mindre end et sekund.

Opret en database, der kun har interface-elementer til din rigtige database. I mit tilfælde indeholder den kun visningsdefinitioner, og alle brugerforespørgsler går gennem denne database.

Opret en ny database hver nat. Når det er gjort, skal du opdatere visningsdefinitionerne for at henvise til den nye database. Jeg vil anbefale enten at deaktivere brugeradgang til databasen, der indeholder visningerne, mens du opdaterer dem, eller at slette alle visningerne og genskabe dem - dette forhindrer delvis adgang til den gamle database. Fordi det er hurtigt at oprette visninger, burde dette være en meget hurtig operation.

Vi gør alt dette gennem et job. Faktisk, før vi ændrer produktionsvisningerne, tester vi oprettelsen af ​​visningen på en anden database for at være sikker på, at de alle fungerer.

Det er klart, hvis du bruger alter view i stedet for at kræve konsistens på tværs af alle visningerne, så er der ingen nedetid, kun en kort periode med inkonsekvens.




  1. Barman 2.11:barman-cloud-restore og barman-cloud-wal-restore

  2. Hvordan afbrydes INSERT operation i MySql trigger?

  3. Docker-compose tjek om mysql-forbindelsen er klar

  4. SQL Sentry er nu SentryOne