Skip to main content

Backup MySql Database?



I have asked this question before but I haven't got an answer, so I'm rephrasing it.





I want to back up a db using either:







system("mysqldump -h DB_HOST -u DB_USER -p DB_PASS logindb > $location/$backup");







or:







sql="BACKUP my_db TO DISK my_backup_folder WITH FORMAT #";



if ($stmt = $this->connect->prepare($sql)) {

$stmt->execute();

$stmt->close();

} else {

$error = true;

$message['error'] = true;

$message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE;

return json_encode($message);

}







But the first gives me an empty sql file and the second gives me nothing. Why is that, and if there is a way to find out what error occurred how would I do it ?





Also which method is better ?


Comments

  1. Found some simpler code here

    Method 1:

    $tableName = 'mypet';
    $backupFile = 'backup/mypet.sql';
    $query = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName";
    $result = mysql_query($query);


    Method 2:

    $backupFile = $dbname . date("Y-m-d-H-i-s") . '.gz';
    $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile";
    system($command);

    ReplyDelete
  2. The start post:

    -p DB_PASS


    And the right form:

    -p[password]


    I don't know why but the -p is agains the password, not equal to the other parameters. So be aware that you take over the examples well. I have seen different cases where this was the issue so take note of it.

    ReplyDelete
  3. Use try-catch, something like:

    try{
    $stmt = $this->connect->prepare($sql);
    $stmt->execute();
    $stmt->close();
    }
    catch(PDOException $e)
    {
    echo $e->getMessage();
    }


    Check log files for errors.

    ReplyDelete
  4. The first one is faster if you have exec permissions for php.

    Check the SQL error log file.

    /var/log/mysql.err - MySQL Error log file

    /var/log/mysql.log - MySQL log file

    For php you might put error_reporting(E_ALL); this to throw php errors if any.

    ReplyDelete
  5. Make sure that the user have the permission to this database.

    Below is the command to backup the mysql database

    mysqldump -h [host_name] -u [username] -p[password] [database_name] > dumpfilename.sql

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.