<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQL增量備份與恢復實例_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 19:48:33
        文檔

        MySQL增量備份與恢復實例_MySQL

        MySQL增量備份與恢復實例_MySQL:小量的數據庫可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份。增量備份的原理就是使用了mysql的binlog日志。 本次操作的MySQL版本為 5.5.40 for Linux (x86_64
        推薦度:
        導讀MySQL增量備份與恢復實例_MySQL:小量的數據庫可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份。增量備份的原理就是使用了mysql的binlog日志。 本次操作的MySQL版本為 5.5.40 for Linux (x86_64

        小量的數據庫可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份。增量備份的原理就是使用了mysql的binlog日志。

        本次操作的MySQL版本為 5.5.40 for Linux (x86_64)

        增量備份要確保打開了二進制日志,參考 mysql的日志系統 :

        mysql> show variables like'%log_bin%';

        首先對pak數據庫做一個完整備份:

        $ mysqldump -h localhost -upak -ppwd -P3306 --master-data=2 --single-transaction --opt pak > pak_bak_full.sql 

        這時候就會得到一個全備文件pak_bak_full.sql。mysqldump操作會導致滾動一次log,假設新的binlog文件是mysql-bin.000002。

        模擬插入數據和誤操作

        a. 在pak庫的某個表插入一些數據,然后執行 flush logs 命令。這時將會產生一個新的二進制日志文件mysql-bin.000003,mysql-bin.000002則保存了全備過后的所有更改,既增加記錄的操作也保存在了mysql-bin.00002中。

        b. 再在pak庫中的t_user表中增加兩條記錄,然后誤刪除t_user表。t_user中增加記錄的操作和刪除表的操作都記錄在mysql-bin.000003中。

        開始恢復

        恢復過程不要記錄日志:

        mysql > setglobal sql_log_bin=0;

        首先導入全備數據

         $ mysql -h localhost -upak -ppwd < pak_bak_full.sql
        或
        mysql> source /path/backup/pak_bak_full.sql

        我們也可以看到全備時的binlog位置:

        head -50 backup-file.sql |grep 'CHANGE MASTER' -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4321;

        查看當前所在二進制日志中的位置:

        mysql> show master status;

        根據上面兩個position能大概確定需要完整恢復哪幾個binlog文件。

        恢復mysql-bin.000002

        在待恢復的position或時間點以前、全備以后的binlog需要全部恢復,多個文件以空格隔開

        $ mysqlbinlog /var/lib/mysql/mysql-bin.000002 | mysql -uroot -p 

        此時查詢可以得到前兩條數據。

        恢復部分mysql-bin.000003

        這個日志中包括了新增記錄和誤刪表兩個部分,我們需要恢復到新增記錄之后、誤刪操作以前的位置。

        如果知道誤操作的命令如 DROP TABLE ,則可以通過下面的方法在binlog文件中找到誤操作之前的那個position:

        (如下面的信息顯示,誤操作 DROP TABLE 之前的pos是775,在datetime 141204 15:08:04或pos 882時完成 DROP TABLE 操作)

         $ mysqlbinlog /var/lib/mysql/mysql-bin.000003 |grep -C 5 'DROP TABLE'
        #141204 15:07:05 server id 1 end_log_pos 775 Xid = 376
        COMMIT/*!*/;
        # at 775
        #141204 15:08:04 server id 1 end_log_pos 882 Query thread_id=10 exec_time=0 error_code=0
        SET TIMESTAMP=1417676884/*!*/;
        DROP TABLE `t_user` /* generated by server */
        /*!*/;
        # at 882

        恢復命令:

        $ mysqlbinlog /var/lib/mysql/mysql-bin.000003 --stop-position=775 | mysql -h localhost -uroot -p 

        如果position難以確定,但知道需要恢復到的確切(服務器)時間,也可以使用datetime:

        $ mysqlbinlog /var/lib/mysql/mysql-bin.000003 --stop-datetime="2014-12-04 15:08:00" | mysql -uroot -p 

        如果不是誤操作導致的,而是遷移數據庫,那么不需要position或datetime,使用所有binlog文件增量恢復即可。

        確定恢復成功后記得打開日志記錄:

        mysql > setglobal sql_log_bin=1;

        報錯

        1. unknown variable 'default-character-set=utf8'

        在使用 mysqlbinlog 查看二進制日志的時候,提示下面的錯誤:

        /usr/local/mysql/bin/mysqlbinlog: unknown variable 'default-character-set=utf8'

        原因是在我為了統一mysql客戶端到服務端的的字符編碼,在 /etc/my.cnf 文件的 [client][mysqld] 等節加入了 default-character-set = utf8mysqlbinlog 會從 my.cnf 中的 [client] 讀取配置,但奈何mysqlbinlog并不認識這個選項(據說是個bug)導致的。

        應對這個bug的方法有兩個:

        第一,自然是注釋到 [client] 中的這個字符集配置;

        第二,改用 loose-default-character-set = utf8 。在選項前加了 loose-,表示當程序不認識此選項時會略過此選項,并給出一個警告。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL增量備份與恢復實例_MySQL

        MySQL增量備份與恢復實例_MySQL:小量的數據庫可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份。增量備份的原理就是使用了mysql的binlog日志。 本次操作的MySQL版本為 5.5.40 for Linux (x86_64
        推薦度:
        標簽: 恢復 備份 例子
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲va成无码人在线观看| 亚洲精品无码久久久久A片苍井空 亚洲精品无码久久久久YW | 日本高清免费不卡在线| 亚洲人精品亚洲人成在线| 在线免费观看一级毛片| 亚洲成AV人影片在线观看| 中文在线免费观看| 久久亚洲国产精品一区二区| 久草免费福利资源站| 亚洲短视频在线观看| 好爽…又高潮了免费毛片| 亚洲AV成人一区二区三区观看| 亚洲片一区二区三区| 可以免费观看的国产视频| 亚洲理论片在线中文字幕| 免费的一级黄色片| 在线播放免费人成视频网站| 亚洲国产精品无码久久久不卡| 久久免费看黄a级毛片| 亚洲日韩中文字幕无码一区| 亚洲精品乱码久久久久久不卡| 国偷自产一区二区免费视频| 亚洲国产综合精品| 国产禁女女网站免费看| 亚洲一级黄色大片| 免费一区二区视频| 暖暖日本免费中文字幕| 亚洲av乱码一区二区三区| 日本中文一区二区三区亚洲| 亚洲精品无码永久在线观看男男 | 午夜免费福利影院| 成年女人A毛片免费视频| 亚洲欧洲日本天天堂在线观看| 国产一区二区三区在线免费观看| 国内精品99亚洲免费高清| 亚洲AV无码乱码麻豆精品国产| www国产亚洲精品久久久| 日韩精品无码免费一区二区三区| 亚洲午夜理论片在线观看| 国产AV无码专区亚洲精品| 午夜影视在线免费观看|