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