• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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 = utf8 ,mysqlbinlog 會從 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
    主站蜘蛛池模板: 精品久久久久国产免费| 精品无码人妻一区二区三区不卡 | 亚洲国产精品成人精品无码区| 久久99国产精品一区二区| 亚洲欧美日韩另类精品一区二区三区 | 中文成人无码精品久久久不卡 | 最新国产の精品合集| 99国产精品无码| 久久久久久亚洲Av无码精品专口| 人妻偷人精品成人AV| 国产精品网址在线观看你懂的 | 91精品国产福利在线观看| 国产欧美精品一区二区三区| 亚洲精品狼友在线播放| 四虎亚洲国产成人久久精品| 九九久久精品无码专区| 国产精品.XX视频.XXTV| 欧美成人精品一级高清片| 91视频精品全国免费观看| 久久精品无码午夜福利理论片| 亚洲精品线路一在线观看| 日本精品视频在线观看| 久久99精品九九九久久婷婷| 人精品影院| 99久久精品国产综合一区| 国产91精品在线观看| 91精品国产乱码久久久久久| 精品无码av一区二区三区| 久久亚洲精品无码AV红樱桃| 日韩精品无码一区二区三区 | 精品无码国产污污污免费网站国产 | 久久狠狠高潮亚洲精品| 久久精品人人做人人爽电影蜜月 | 中文精品久久久久国产网址| aaa级精品久久久国产片| 麻豆国产在线精品国偷产拍| 国产一区精品| 国产在线精品福利大全| 精品人妻一区二区三区毛片| 欧美成人精品高清视频在线观看| 无码8090精品久久一区|