sql >> Databáze >  >> RDS >> Mysql

Automatické nebo pravidelné zálohování dat mysql

CSV a SELECT DO OUTFILE

http://dev.mysql.com/doc/refman /5.7/cs/select-into.html

SELECT ... INTO OUTFILE zapíše vybrané řádky do souboru. Pro vytvoření specifického výstupního formátu lze specifikovat zakončení sloupců a řádků.

Zde je úplný příklad:

SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

Soubor je uložen na serveru a zvolená cesta musí být zapisovatelná. Ačkoli tento dotaz lze provést prostřednictvím PHP a webového požadavku, nejlépe je provést jej prostřednictvím konzole mysql.

Data, která jsou exportována tímto způsobem, lze importovat do jiné databáze pomocí NAČTENÍ VSTUPNÍHO SOUBORU DAT

I když je tato metoda lepší při opakování sady výsledků a ukládání do souboru řádek po řádku, není tak dobrá jako použití....

mysqldump

mysqldump je v mnoha ohledech lepší než SELECT INTO OUTFILE, vytváření CSV je jen jednou z mnoha věcí, které tento příkaz umí.

Klientský obslužný program mysqldump provádí logické zálohy a vytváří sadu příkazů SQL, které lze spustit k reprodukci původních definic objektů databáze a dat tabulek. Vypíše jednu nebo více databází MySQL pro zálohování nebo přenos na jiný SQL server. Příkaz mysqldump může také generovat výstup ve formátu CSV, jiného textu s oddělovači nebo formátu XML.

V ideálním případě by měl být mysqldump vyvolán z vašeho shellu. Je možné použít exec v php jej spustit, ale protože vytvoření výpisu může trvat dlouho v závislosti na množství dat a php skripty obvykle běží pouze 30 sekund, museli byste jej spouštět jako proces na pozadí.

mysqldump není bez problémů.

Není určeno jako rychlé nebo škálovatelné řešení pro zálohování značného množství dat. Při velkých velikostech dat, i když krok zálohování zabere přiměřenou dobu, může být obnova dat velmi pomalá, protože opakované přehrávání příkazů SQL vyžaduje diskový I/O pro vložení, vytvoření indexu atd.

Klasický příklad viz tato otázka: Zhroucení serveru při zálohování MySQL pomocí pythonu kde se zdá, že jeden mysqldump začíná dříve, než ten předchozí skončil a web zcela přestal reagovat.

Replikace Mysql

Replikace umožňuje kopírování dat z jednoho databázového serveru MySQL (hlavního) na jeden nebo více databázových serverů MySQL (podřízené). Replikace je ve výchozím nastavení asynchronní; slave nemusí být trvale připojeni, aby mohli přijímat aktualizace od master. V závislosti na konfiguraci můžete replikovat všechny databáze, vybrané databáze nebo dokonce vybrané tabulky v rámci databáze.

Tedy replikace funguje odlišně od SELECT INTO OUTFILE nebo msyqldump Je ideální udržovat data v místní kopii téměř aktuální (Řeklo by se, že jsou dokonale synchronizované, ale existuje něco, čemu se říká slave lag) Na druhou stranu, pokud používáte naplánovanou úlohu ke spuštění mysqldump jednou za 24 hodin. Představte si, co se může stát, když se server po 23 hodinách zhroutí?

Pokaždé, když spustíte mysqldump, produkujete velké množství dat, pokračujte v tom pravidelně a zjistíte, že váš pevný disk je zaplněný nebo účty za ukládání souborů narážejí na střechu. Při replikaci jsou na server předány pouze změny (pomocí tzv. binlogu)

XtraBackup

Alternativou k replikaci je použití Percona XtraBackup .

Percona XtraBackup je hotový zálohovací nástroj s otevřeným zdrojovým kódem pro servery založené na MySQL, který během zálohování nezamyká vaši databázi.

Ačkoli od Percona, je kompatibilní s Mysql a Mariadb. Má schopnost provádět přírůstkové zálohy, jejichž nedostatek je největším omezením mysqldump.



  1. Získání návratové hodnoty z uložené procedury v C#

  2. Formátování čísel pomocí čárek v MariaDB

  3. Jedinečná otázka citlivosti varchar na velká a malá písmena SQL

  4. Najděte řádky s více duplicitními poli pomocí Active Record, Rails &Postgres