sql >> Databasteknik >  >> RDS >> Mysql

Hur säkerhetskopierar jag MySQL-databas i PHP?

Även om du kan köra backup-kommandon från PHP, har de egentligen ingenting med PHP att göra. Allt handlar om MySQL.

Jag skulle föreslå att du använder mysqldump-verktyget för att säkerhetskopiera din databas. Dokumentationen finns här :http://dev.mysql. com/doc/refman/5.1/en/mysqldump.html .

Den grundläggande användningen av mysqldump är

mysqldump -u user_name -p name-of-database >file_to_write_to.sql

Du kan sedan återställa säkerhetskopian med ett kommando som

mysql -u user_name -p <file_to_read_from.sql

Har du tillgång till cron? Jag skulle föreslå att du gör ett PHP-skript som kör mysqldump som ett cron-jobb. Det skulle vara något liknande

<?php

$filename='database_backup_'.date('G_a_m_d_y').'.sql';

$result=exec('mysqldump database_name --password=your_pass --user=root --single-transaction >/var/backups/'.$filename,$output);

if(empty($output)){/* no output is good */}
else {/* we have something to log the output here*/}

Om mysqldump inte är tillgängligt beskriver artikeln en annan metod med SELECT INTO OUTFILE och LOAD DATA INFILE kommandon. Den enda kopplingen till PHP är att du använder PHP för att ansluta till databasen och köra SQL-kommandon. Du kan också göra detta från kommandoraden MySQL-programmet, MySQL-monitorn.

Det är ganska enkelt, du skriver en SQL-fil med ett kommando och laddar/kör den när det är dags att återställa.

Du kan hitta dokumenten för att välja till outfile här (sök bara på sidan efter outfile). LOAD DATA INFILE är i huvudsak det omvända till detta. Se här för dokumenten.



  1. Vad mappar Hibernate en boolesk datatyp till när en Oracle-databas används som standard?

  2. Tillåter oracle alternativet för oengagerad läsning?

  3. Relation existerar inte

  4. SQL-fel:ORA-01861:literal matchar inte formatsträngen 01861