共計 2670 個字符,預計需要花費 7 分鐘才能閱讀完成。
怎樣實現 Mysql 備份與恢復,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
邏輯備份:
1.mysqldump(數據導出工具)
mysqldump options db_name[table_name]// 備份單個數據庫
mysqldump 選項 –database database-name1 [databases-name2]….// 備份指定的數據庫一個或者多個
mysqldump 選項 –all-database // 備份所有的數據庫
鏈接選項:
-u : 指定用戶名
-p: 指定密碼
-h: 指定服務器 ip 或者域名
-P(大寫): 指定端口
eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user /home/wuxiaoxiao/user.txt
輸出內容選項:
–add-drop-database: 每個數據庫創建語句之前加上 drop database 語句
–add-drop-table: 每個表創建語句之前加上 drop table 語句
-n: 不包含數據庫的創建語句
-t: 不包含數據表的創建語句
-d: 不包含數據
輸出格式選項:
–compact: 使輸出結果簡潔
-c –compact-insert: 使輸出文件中的 insert 語句包含字段名
-T: 將數據庫表中的數據備份為單純的數據文本和建表 sql 倆個文件
–fields-terminated-by=name(域分割符)
–fields-enclosed-by=name(域引用符)
–fields-optionally-enclosed-by=name(域可選引用符)
–fields-escaped-by=name(轉移字符)
eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user -T ./bak
字符集選項:
–default-character-set=name: 設置導出的客戶端字符集
eg:mysql -u root -p –compact –default-character-set=utf8 BBS user test.txt
其他選項:
-F: 備份前刷新日志
-l: 給所有表加讀鎖(備份期間使用, 使備份的數據保持一致性)
[@more@]
備份:
備份所有數據庫:
mysqldump -u root -p –all-database test.sql
備份數據庫 test
mysqldump -u root -p test test.sql
備份數據庫 test 下的 temp 表:
mysqldump -u root -p test demp test.sql
備份數據庫下的所有表為逗號分割的文本, 備份到 /temp
mysqldump -u root -p test -T /temp –fields-terminated-by ,
完全恢復:
msyql -u root -p bakfile
注意: 將備份恢復后數據并不完整, 還需要將備份后執行的日志進行重做
mysqlbinlog binlog-file | mysql -u root -p***
舉個完整的 mysqldump 備份和恢復的例子:
上午 9 點備份數據庫
mysqldump -u root -p -l -F test test.dmp
9 點半備份完畢, 然后想數據庫中插入數據
10 點數據庫突然故障, 數據無法訪問, 需要恢復備份
mysql -u root -p test test.dmp
恢復后的數據并不完整,9 點半插入的數據并沒有恢復
使用 mysqlbinlog 恢復自 mysqldump 備份以來的 binlog
mysqlbinlog binlogfilename | mysql -u root -p test
基于時間點恢復:
如果上午 10 點發生了誤操作. 可以用下面語句進行備份和 binlog 將數據庫恢復到故障前:
mysqlbinlog –stop-date= 2005-04-20 9:59:59 binlogfile | mysql -u root -p test
跳過故障的時間點, 繼續執行后面的 binlog, 完成恢復
mysqlbinlog –start-date= 2005-04-20 9:59:59 binlogfile | mysql -u root -p test
基于位置恢復:
mysqlbinlog –start-date= 2005-04-20 9:55:59 –stop-date= 2005-04-20 10:05:00 binlogfile test.sql
查看此文件, 找出出錯語句前后的位置號, 例如是 368312,368315
mysqlbinlog –stop-position= 368312 binlogfile | mysql -u root -p test
mysqlbinlog –start-position= 368315 binlogfile | mysql -u root -p test
表的導入和導出:
導出:
mysqldump -u username -p -T target_dir dbname tablename [options]
options:
–fields-terminated-by=name(域分割符)
–fields-enclosed-by=name(域引用符)
–fields-optionally-enclosed-by=name(域可選引用符)
–fields-escaped-by=name(轉移字符)
備份數據庫下的所有表為逗號分割的文本, 備份到 /temp
mysqldump -u root -p -T /temp test –fields-terminated-by , –fields-optionally-enclosed-by
導入:
msyqlimport -u root -p [LOCAL] dbname order_tab.txt [options]
OPTIONS:
–fields-terminated-by=name(域分割符)
–fields-enclosed-by=name(域引用符)
–fields-optionally-enclosed-by=name(域可選引用符)
–fields-escaped-by=name(轉移字符)
eg:mysqlimport -u root -p test order.txt –fields-terminated-by= , –fields-enclosed-by=
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。