mysqlDatabase Backup與恢複各種方法總結

來源:互聯網
上載者:User

方法一,直接打包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;
      }
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.