sql >> Database >  >> RDS >> Mysql

Geautomatiseerde of regelmatige back-up van mysql-gegevens

CSV en SELECTEREN IN OUTFILE

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

SELECT ... INTO OUTFILE schrijft de geselecteerde rijen naar een bestand. Kolom- en lijnterminatoren kunnen worden gespecificeerd om een ​​specifiek uitvoerformaat te produceren.

Hier is een compleet voorbeeld:

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

Het bestand wordt op de server opgeslagen en het gekozen pad moet beschrijfbaar zijn. Hoewel deze query kan worden uitgevoerd via PHP en een webverzoek, kan deze het beste worden uitgevoerd via de mysql-console.

De gegevens die op deze manier worden geëxporteerd, kunnen in een andere database worden geïmporteerd met behulp van LAAD DATA INFILE

Hoewel deze methode superieur is bij het doorlopen van een resultatenset en rij voor rij opslaan in een bestand, is het niet zo goed als het gebruik van....

mysqldump

mysqldump is in veel opzichten superieur aan SELECT INTO OUTFILE, het produceren van CSV is slechts een van de vele dingen die dit commando kan doen.

Het clienthulpprogramma mysqldump maakt logische back-ups en produceert een reeks SQL-instructies die kunnen worden uitgevoerd om de oorspronkelijke database-objectdefinities en tabelgegevens te reproduceren. Het dumpt een of meer MySQL-databases voor back-up of overdracht naar een andere SQL-server. De opdracht mysqldump kan ook uitvoer genereren in CSV, andere gescheiden tekst of XML-indeling.

Idealiter zou mysqldump vanuit uw shell moeten worden aangeroepen. Het is mogelijk om exec te gebruiken in php om het uit te voeren, maar aangezien het produceren van de dump lang kan duren, afhankelijk van de hoeveelheid gegevens, en php-scripts meestal maar 30 seconden worden uitgevoerd, zou je het als een achtergrondproces moeten uitvoeren.

mysqldump is niet zonder een groot deel van de problemen.

Het is niet bedoeld als een snelle of schaalbare oplossing voor het maken van back-ups van substantiële hoeveelheden gegevens. Met grote gegevensgroottes, zelfs als de back-upstap een redelijke tijd in beslag neemt, kan het herstellen van de gegevens erg traag zijn, omdat het opnieuw afspelen van de SQL-instructies schijf-I/O vereist voor invoeging, het maken van indexen, enzovoort.

Een klassiek voorbeeld zie deze vraag: Servercrash op MySQL-back-up met python waar een mysqldump lijkt te beginnen voordat de eerdere is voltooid en de website volledig niet meer reageert.

Mysql-replicatie

Met replicatie kunnen gegevens van één MySQL-databaseserver (de master) worden gekopieerd naar een of meer MySQL-databaseservers (de slaves). Replicatie is standaard asynchroon; slaves hoeven niet permanent verbonden te zijn om updates van de master te ontvangen. Afhankelijk van de configuratie kunt u alle databases, geselecteerde databases of zelfs geselecteerde tabellen binnen een database repliceren.

Dus replicatie werkt anders dan SELECT INTO OUTFILE of msyqldump Het is ideaal om de gegevens in de lokale kopie bijna up-to-date te houden (zou perfect synchroon hebben gezegd, maar er is iets dat slave-lag wordt genoemd) Aan de andere kant als u een geplande taak gebruikt om mysqldump uit te voeren eenmaal per 24 uur. Stel je voor wat er kan gebeuren als de server na 23 uur crasht?

Elke keer dat u mysqldump uitvoert, produceert u een grote hoeveelheid gegevens, blijf dit regelmatig doen en u zult merken dat uw harde schijf vol raakt of dat uw rekeningen voor bestandsopslag de pan uitrijzen. Bij replicatie worden alleen de wijzigingen doorgegeven aan de server (met behulp van de zogenaamde binlog)

XtraBackup

Een alternatief voor replicatie is het gebruik van Percona XtraBackup .

Percona XtraBackup is een open-source hot back-uphulpprogramma voor MySQL-gebaseerde servers die uw database niet vergrendelt tijdens de back-up.

Hoewel van Percona, is het compatibel met Mysql en Mariadb. Het heeft de mogelijkheid om incrementele back-ups te maken, wat de grootste beperking van mysqldump is.



  1. hoe voeg ik een aangepaste adapter toe aan de activiteit om de lijst in de activiteit te laten verschijnen?

  2. Hoe een lijst met tabellen te krijgen zonder primaire sleutelbeperking in SQL Server-database - SQL Server / T-SQL-zelfstudie, deel 58

  3. phpMyAdmin op MySQL 8.0

  4. MySQL Workbench:hoe de verbinding levend te houden