2015年1月20日 星期二

mysql自動備份

不建議的 MySQL 資料備份方式

http://phpbb-tw.net/phpbb/viewtopic.php?t=46722


討論windows下自動備份批次檔
http://xoops.tn.edu.tw/modules/xforum/viewtopic.php?post_id=28444
適當修改以下內容,然後存成一個 .bat 檔。

代碼:
@echo off
REM /* MysqlBinPath: MySQL 可執行檔路徑,結尾請不要放 "\"
REM * BackupPath: 放置 sql 備份檔的位置,結尾請不要放 "\"
REM * DBhost: 資料庫主機的位址,可用 dn 或 ip
REM * DBuser: 資料庫使用者名稱
REM * DBpass: 資料庫使用者密碼
REM * DBname: 資料庫名稱 
REM * Argument: 其他的參數 */
SET MysqlBinPath=D:\AppServ\mysql\bin
SET BackupPath=D:\Backup
SET DBhost=127.0.0.1
SET DBuser=username
SET DBpass=password
SET DBname=databasename
SET Argument=--opt --compress --force --default-character-set=utf8
REM /* 以下不必修改 */

REM /* 取得日期。參照: http://alexchuo.blogspot.com/2006/07/blog-post.html */
FOR /F "tokens=1-4 delims=/ " %%a IN ("%date%") DO (
SET _MyDate=%%a-%%b-%%c %%d
)

REM /* 以日期為檔名,匯出 .sql 檔案。 */
echo 資料庫 %DBname% 備份中……
"%MysqlBinPath%\mysqldump" --host=%DBhost% --user=%DBuser% --password=%DBpass% %Argument% %DBname% > "%BackupPath%\%_MyDate%.sql"

REM /* 偵錯處理,發生錯誤就停住畫面以便看清楚錯誤訊息。 */
IF NOT %ERRORLEVEL% == 0 (
del "%BackupPath%\%_MyDate%.sql
echo.
echo 不好了,好像出了什麼問題的樣子。請看上面的訊息吧!
pause
)

之後,只要執行這個 .bat 檔,就會在設定的目錄中依目前日期產生以 "西元年/月/日 星期幾.sql" 為檔名的備份檔了。您可以先自己執行一次試試看有沒有成功。
使用 Windows 的排程工具(控制台/排定的工作)定期執行這個 .bat 檔,就能輕鬆地遠端定期自動備份資料庫囉。

備份出來的 .sql 檔案並不會自動壓縮,您可以自行將這些 .sql 檔壓縮起來保存。
MySQL備份教學
http://www.dotblogs.com.tw/michaelchen/archive/2015/01/06/mysql_backup.aspx
[匯出單一資料庫]

mysqldump -u root -e -q -p --default-character-set=utf8 database_name > back.sql

[匯出單一資料表]

mysqldump -u root -e -q -p --default-character-set=utf8 database_name datatable_name > back.sql


[匯出全部資料庫]

mysqldump -u root -e -q -p --default-character-set=utf8 --all-databases > back.sql

[匯入單一資料庫]

mysql -u root -p database_name < back.sql --default-character-set=utf8

[匯入單一資料表]

mysql -u root -p database_name datatable_name < back.sql --default-character-set=utf8

[匯入全部資料庫]

mysql -u root -p < back.sql --default-character-set=utf8

[直接匯入到另外一台資料庫]

mysqldump -u root -e -q --password=XXX --all-databases --default-character-set=utf8 | mysql -u root -h IP位置 --password=XXXX --default-character-set=utf8

==============================

mysqldump 其實還有很多參數可以用,想知道可以到官網去查詢  http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html



在Windows Server設定自動備份MySQL資料庫

http://www.askasu.idv.tw/index.php/2011/07/08/1435/

MySQL單一資料庫備份還原語法
http://www.ddjhs.tc.edu.tw/admin/mysql/mysqldump.txt

◎MySQL單一資料庫備份還原語法:

1.備份
>mysqldump -u使用者名稱 -p密碼 資料庫名稱 > 備份檔名.sql
或
>mysqldump -u使用者名稱 -p密碼 資料庫名稱 > 備份檔名.sql --default-character-set=latin1 (中文資料庫有語系困擾時)

2.還原
>mysql -u使用者名稱 -p密碼 資料庫名稱 < 備份檔名.sql


◎MySQL全部資料庫備份還原語法:

1.備份
>mysqldump -u使用者名稱 -p密碼 --all-database > 備份檔名.sql
或
>mysqldump -u使用者名稱 -p密碼 --all-database > 備份檔名.sql --default-character-set=latin1 (中文資料庫有語系困擾時)

2.還原
>mysql -u使用者名稱 -p密碼 < 備份檔名.sql


◎注意事項:
1.備份檔內容之資料庫名或資料表名中若含'-',則該名稱前後要加'`',以免還原時出錯!使用舊版之mysqldump時會有所缺漏。
2.新版之MySQL對於關鍵字有所增補,如:release……等。若舊版有使用到(資料表或欄位名稱)可能造成還原時出錯!


----------其它有用的語法------------------------------------------

◎替換某欄位部份內容之語法:

1.所需之字串替換函式:

 REPLACE(str,from_str,to_str)

2.完整SQL語法:

 UPDATE `資料表` SET `欄位名` = REPLACE(`欄位名`,'舊字串','新字串') WHERE `欄位名` LIKE '%舊字串%'


沒有留言: