程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql數據庫備份與恢復各種方法總結

mysql數據庫備份與恢復各種方法總結

編輯:MySQL綜合教程

本來給大家總結現在網絡上常用的幾種mysql數據庫備份與恢復的命令與方法,有需要學習備份mysql數據庫的朋友可進入詳細參考。

方法一,直接打包mysql數據庫下的data目錄中你要備份的數據庫名字的目錄,然後恢復也可以直接替換了

方法二,利用xcopy定時備份了,代碼如下

把下面代碼保存.bat文件

 代碼如下 復制代碼

@echo off
echo 執行備份任務
echo 正在停止數據庫…
echo 正在停止網站數據庫…
net stop MySQL
echo 執行備份數據庫
xcopy "D:/MySQL/data/*.*" D:/mysqlbak/webbak%date:~0,10%/ /e /y /c
net start MySQL
echo 正在啟動網站數據庫…
echo 退出備份任務
echo .
exit


另存為db_back.bat。該bat文件的意思是先停止mysql服務,然後使用xcopy命令,將源數據庫所在文件夾整個復制到D:/db_backup下,並且以當天日期命名該文件。

我們在cmd下測試一下這個bat能否運行。"運行"->cmd,輸入cd c:/定位到bat文件所在目錄。輸入back_job.bat.結果如下

方法三,利用phpmyadmin備份還原,這裡我就不介紹了。


方法四,利用mysqldump 命令進行備份

我通常使用以下 SQL 來備份 MyISAM 表:

 代碼如下 復制代碼 /usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false
--triggers -R --hex-blob -x db_name > db_name.sql

使用以下 SQL 來備份 Innodb 表:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false
--triggers -R --hex-blob --single-transaction db_name > db_name.sql

1.2 還原
用 mysqldump 備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數據導入。

•直接用 mysql 客戶端
例如:

 代碼如下 復制代碼

/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql

•用 SOURCE 語法
其實這不是標准的 SQL 語法,而是 mysql 客戶端提供的功能,例如:

SOURCE /tmp/db_name.sql;
這裡需要指定文件的絕對路徑,並且必須是 mysqld 運行用戶(例如 nobody)有權限讀取的文件


備份MySQL數據庫的命令

 代碼如下 復制代碼

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

備份MySQL數據庫為帶刪除表的格式

備份MySQL數據庫為帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動刪除原有數據庫。

 代碼如下 復制代碼

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql

直接將MySQL數據庫壓縮備份

 代碼如下 復制代碼

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

備份MySQL數據庫某個(些)表

 代碼如下 復制代碼

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

同時備份多個MySQL數據庫

 代碼如下 復制代碼

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

僅僅備份數據庫結構

 代碼如下 復制代碼

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

備份服務器上所有數據庫

 代碼如下 復制代碼

mysqldump –all-databases > allbackupfile.sql

還原MySQL數據庫的命令

 代碼如下 復制代碼

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

還原壓縮的MySQL數據庫

 代碼如下 復制代碼

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

將數據庫轉移到新服務器

 代碼如下 復制代碼

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename


利用php 來備份mysql數據庫

 代碼如下 復制代碼

<?php
      mysql_connect('localhost', 'test', '123456');
      mysql_select_db('test');
      if(copy_table('products', 'products_bak')) {
    echo "success/n";
      }
      else {
    echo "failure/n";
      }

      function copy_table($from, $to) {
    if(table_exists($to)) {
      $success = false;
    }
    else {
      mysql_query("CREATE TABLE $to LIKE $from");
      mysql_query("INSERT INTO $to SELECT * FROM $from");
      $success = true;
        }
        return $success;
      }

      function table_exists($tablename, $database = false) {
    if(!$database) {
      $res = mysql_query("SELECT DATABASE()");
          $database = mysql_result($res, 0);
        }
        $res = mysql_query("
           SELECT COUNT(*) AS count
           FROM information_schema.tables
           WHERE table_schema = '$database'
           AND table_name = '$tablename'
        ");
        return mysql_result($res, 0) == 1;
      }
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved