全量備份
Linux環境
數據備份
數據庫的備份與恢復有多中方法,通過mysql自帶的mysqldump工具可對數據庫進行備份。語法:
mysqldump -u username -p password --databases db_name > file_name .sql
說明:
-u參數指定用戶名,username 填入用戶名;
-p參數指定用戶密碼,password 填入用戶密碼;
–databases參數指定要導出的數據庫,可以是一個或者多個,多個數據庫用空格分開,db_name填入要備份的數據庫;
file_name填入導出的文件名稱,可以是文件的絕對路徑,文件的格式可以.db文件或者.sql文件。
mysqldump 并不是在mysql命令行中運行,是一個可執行文件,安裝mysql后在安裝目錄下會有該工具。以linux為例,比如mysqldump 工具在/usr/bin路徑下。導出某個數據庫:
[root@201 mysqlback]# /usr/bin/mysqldump -u root -p123456 --databases mysql_test > /share/mysql_test.db
導出所有數據庫使用–all-databases參數
[root@201 mysqlback]# /usr/bin/mysqldump -u root -p 123456 --all-databases > /share/all.db
數據恢復
數據庫的恢復可以使用source命令執行,進入mysql的命令行,執行以下命名。
mysql> source /share/mysql_test.sql;
query ok, 0 rows affected (0.06 sec)
windows環境
cmd命令行備份
語法同上,比如把temp數據庫備份到 d:\temp.bak
mysqldump –u root –p123456 temp > d:\temp.bak
如果你希望備份是數據庫的某幾張表,可以在數據庫后面加要備份的表名稱,比如:
mysqldump –u root –p123456 temp dept > d:\temp.dept.bak
數據恢復
進入mysql控制臺,使用source命令備份文件恢復我們的數據,比如:
mysql>source d:\temp.dept.bak
定時備份
把備份數據庫的指令,寫入到 bat文件, 然后通過任務管理器去定時調用 bat文件執行備份,比如新建一個bakTask.bat,里面寫入mysql的備份命令:
F:\MySQL\bin\mysqldump -u root -p123456 temp dept > d:\temp.dept.bak
如果你的mysqldump.exe文件路徑有空格,則一定要使用雙引號 “ ” 包裹。把bakTask.bat做成一個任務,并設置每天定時調用。具體步驟如下:
(1) windows搜索“任務計劃程序”,打開windows的任務計劃程序。
(2)選中任務計劃程序庫,右鍵創建基本任務,輸入任務名稱,選擇觸發時間,最后選中bakTask.bat文件,下一步完成任務計劃程序的創建。
增量備份
一個完整的備份方案應當包含全量備份與增量備份,下面以windows環境為例,講解mysql的增量備份。當啟用增量備份之后,mysql會以二進制的形式把用戶對數據庫的操作記錄到文件中。需要注意的是,增量備份并不會記錄所有的數據庫操作。通常對ddl語句 (create alter drop),dml語句 (insert update delete),dcl語句(grant revoke set commit rollback)進行記錄,而不會記錄dql語句(select),因為數據查詢語句并不會影響數據的完整性。增量備份通常會記錄數據庫操作語句、操作時間、操作位置等內容。
啟用增量備份
在進行增量備份之前需要查看一下mysql 是否開啟log_bin
mysql> show variables like '%log_bin%';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin | OFF || log_bin_basename | || log_bin_index | || log_bin_trust_function_creators | OFF || log_bin_use_v1_row_events | OFF || sql_log_bin | ON |+---------------------------------+-------+
log_bin為off說明還沒有開啟log_bin。找到mysql安裝目錄下的my.ini或者my.conf文件,啟用log_bin二進制備份,在[mysqld]下新增以下配置
[mysqld]#啟用增量備份,雙引號及雙反斜杠log-bin=log-bin=F:\\MySQLbinlog\\log-binserver-id=1
重啟mysql服務后生效,對數據庫進行操作時將會生成log-bin.000001、log-bin.index文件。log-bin.000001文件寫滿后繼續生成log-bin.000002文件,以此類推,是數據庫操作日志文件。log-bin.index記錄著操作日志文件的路徑。
log-bin操作日志文件用文本編輯器是無法查看的,需要用mysql自帶的工具進行查看。
F:\MySQL\bin>mysqlbinlog.exe F:\MySQLbinlog\log-bin.000001
mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'
在使用mysqlbinlog工具查看時可能會報unknown variable 'default-character-set=utf8’的錯誤,可以使用以下命令查看
>mysqlbinlog.exe --no-defaults --base64-output=decode F:\MySQLbinlog\log-bin.000001
>mysqlbinlog.exe F:\MySQLbinlog\log-bin.000002 > tmp.sql
關于增量備份的恢復我們放到下一篇講。