<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
        主站蜘蛛池模板: 亚洲午夜av影院| 亚洲日韩一区二区三区| 亚洲高清无在码在线电影不卡| 免费看一级一级人妻片| 免费大黄网站在线观看| 亚洲国产二区三区久久| 国产猛男猛女超爽免费视频| 亚洲一区二区三区香蕉| 无码av免费网站| 亚洲视频网站在线观看| 亚洲视频免费一区| 亚洲偷自拍拍综合网| GOGOGO免费观看国语| 亚洲αv在线精品糸列| 亚洲AV无码一区二区大桥未久| 三级黄色片免费看| 亚洲无码在线播放| 一级毛片aaaaaa免费看| 久久久亚洲AV波多野结衣 | 亚洲精品自在在线观看| 中文字幕版免费电影网站| 亚洲国产女人aaa毛片在线| 亚洲免费电影网站| 亚洲小说图区综合在线| 久久国产乱子免费精品| 亚洲国产av高清无码| 日韩在线a视频免费播放| 国产精品成人免费观看| 成人国产mv免费视频| 一级视频免费观看| 成人毛片18女人毛片免费96 | 特级毛片A级毛片免费播放| 亚洲国产精品免费观看| 亚洲熟妇成人精品一区| 亚洲日本一区二区三区在线不卡| 久久免费福利视频| 久久亚洲国产成人影院| 69成人免费视频| 曰批全过程免费视频免费看 | 久久久久亚洲爆乳少妇无| 亚洲AV成人精品日韩一区|