《Mysql應用mysql學習之數據備份與恢復》要點:
本文介紹了Mysql應用mysql學習之數據備份與恢復,希望對您有用。如果有疑問,可以聯系我們。
MYSQL教程讀鎖問題:數據庫(或者某個表)一旦進行讀鎖操作則影響數據庫的寫操作所以此時不能對數據庫進行寫操作.之所以在數據備份的時候進行讀鎖操作是為了保證備份數據的完整性一致性,在數據備份完成后會自動進行解鎖.
MYSQL教程更新日志問題:每次備份數據的時候新生成一個日志文件,這樣數據庫在備份一段時間后突然崩潰可以通過該bin-log日志還原該時間段的數據.數據恢復的步驟:恢復備份的數據+還原最新bin-log日志中的數據
MYSQL教程mysqldump:命令將數據庫中的數據備份成一個文本文件.表的結構和表中的數據將存儲在生成的文本文件中.
MYSQL教程mysqldump命令的工作原理:它先查出需要備份的表的結構,再在文本文件中生成一個CREATE語句.然后,將表中的所有記錄轉換成一條INSERT語句.然后通過這些語句,就能夠創建表并插入數據.
MYSQL教程?
MYSQL教程將test數據庫備份到/tmp/mysql_back/目錄下
MYSQL教程?[root@localhost tmp]# mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';
MYSQL教程參數解讀:
MYSQL教程1、mysqldump mysql數據備份的命令
MYSQL教程2、-uroot -p111111? 用戶名密碼
MYSQL教程3、test:要備份的數據庫名
MYSQL教程4、-l:進行讀鎖控制
MYSQL教程5、-F:生成新日志文件
MYSQL教程執行該語句后會發現在 /var/lib/mysql 目錄下會生成一個新的bin-log日志 mysql-bin.000002
MYSQL教程6、/tmp/mysql_back/test.sql :生成備份文件的位置及名稱
MYSQL教程1、備份數據的恢復:
MYSQL教程 [root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql
MYSQL教程 -v:查看導入的詳細信息
MYSQL教程 -f:導入過程中遇到錯誤時可以skip過,繼續執行下面的語句.
MYSQL教程2、bin-log日志中數據的還原:
MYSQL教程 該日志在/var/lib/mysql下mysql-bin.000002日志中所有的記錄
MYSQL教程 [root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 |mysql -uroot -p111111 test;
MYSQL教程3、還原bin-log日志中指定位置的數據
MYSQL教程通過 position位置還原數據
?
- BEGIN?
- /*!*/;?
- #?at?175?
- #170206?22:55:48?server?id?1??end_log_pos?263?????Query????thread_id=17????exec_time=0????error_code=0?
- use?`test`/*!*/;?
- SET?TIMESTAMP=1486392948/*!*/;?
- insert?into?t1?values(10)?
- /*!*/;?
- #?at?263?
- #170206?22:55:48?server?id?1??end_log_pos?290?????Xid?=?178?
- COMMIT/*!*/;?
- #?at?290?
- #170206?22:55:54?server?id?1??end_log_pos?358?????Query????thread_id=17????exec_time=0????error_code=0?
- SET?TIMESTAMP=1486392954/*!*/;?
- BEGIN?
- /*!*/;?
- #?at?358?
- #170206?22:55:54?server?id?1??end_log_pos?446?????Query????thread_id=17????exec_time=0????error_code=0?
- SET?TIMESTAMP=1486392954/*!*/;?
- insert?into?t1?values(12)?
- /*!*/;?
- #?at?446?
- #170206?22:55:54?server?id?1??end_log_pos?473?????Xid?=?179?
- COMMIT/*!*/;?
- #?at?473?
- #170206?22:56:42?server?id?1??end_log_pos?547?????Query????thread_id=17????exec_time=0????error_code=0?
- SET?TIMESTAMP=1486393002/*!*/;?
- truncate?t1?
MYSQL教程還原該bin-log日志中position 位置在 172,473 中的數據(end_log_pos)
MYSQL教程[root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 --start-position="175" --stop-position="473"|mysql -uroot -p111111 test;
MYSQL教程4、還原bin-log日志中指定時間段的數據
MYSQL教程格式:將3中即可
MYSQL教程--start-position="175"? 替換為 --start-date="2016-12-30 21:30:34"
MYSQL教程--stop-position="473" 替換為 --stop-date="2016-12-30 23:30:34"