In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-09-20 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >
Share
Shulou(Shulou.com)06/01 Report--
Introduction:
Misoperation is inevitable during database operation, especially in test environment, developers or testers sometimes delete or update some wrong data. At this point, you can flashback DML operations with binlog.
Conditions:
1. mysql binlog must exist and be in row format 2. tables generated in reverse must have primary keys 3. table structure cannot be changed 1. shell script flashback: #script del_time_recovery.sh (recovery according to start and end time) used to rollback delete operation: #!/ bin/bash# File Name : del_time_recovery.sh# Author : wang# Description : delete recover according to starttime and endtime.Usage() {cat &2 exit 1 ;; :) echo "Option -$OPTARG requires an argument. " >&2 Usage exit 1 ;; esacdoneif [ $# != 10 ] ; then Usage exit 1;fiPATH=$[PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/usr/local/mysql/bin](http://path/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/usr/local/mysql/bin)export PATHuser=rootpwd='xxxxxxxx'tmpfile=/tmp/del_recovery_$table.sqlmysqlbinlog --no-defaults -vv --base64-output=DECODE-ROWS --start-datetime="$starttime" --stop-datetime="$endtime" $logname |sed -n '/### DELETE FROM `'${db}'`.` '${table}'`/,/COMMIT/p' | \sed -n '/###/p' | \sed 's/### //g;s/\/\*.*/,/ g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' > $tmpfilen=0;for i in `mysql -u$user -p$pwd --skip-column-names --silent -e "desc $db.$ table" |awk '$0=$1'`;do ((n++));donesed -i -r "s/(@$n.*),/\ 1;/g" $tmpfilesed -i 's/@[1-9].*=// g' $tmpfilesed -i 's/@[1-9][0-9]=//g' $tmpfile#Usage: -b -s -e -d -t binlog name start time end time library name table name,#directly use sh del_time_recovery.sh -b /mysqllog/mysql-bin. 00005-s "2017 - 11 - 02 19:10:00" -d test_db -t test_tb can call #script update_time_recovery.sh (according to the time recovery) for rollback update operation: #!/ bin/bash# File Name : update_time_recovery.sh# Author : wang# Description : update recover according to starttime and endtime.Usage() {cat &2 exit 1 ;; :) echo "Option -$OPTARG requires an argument. " >&2 Usage exit 1 ;; esacdoneif [ $# != 10 ] ; then Usage exit 1;fiuser=rootpwd='xxxxxxx'tmpfile=/tmp/update_recovery_$table.sqln=0;for i in `mysql -u$user -p$pwd --skip-column-names --silent -e "desc $db.$ table" |awk '$0=$1'`;do ((n++));donemysqlbinlog --no-defaults -vv --base64-output=DECODE-ROWS --start-datetime="$starttime" --stop-datetime="$endtime" $logname |sed -n '/### UPDATE `'${db}'`.` '${table}'`/,/COMMIT/p' \| sed '/WHERE/{:a;N;/SET/! ba;s/\([^\n]*\)\n\(.*\)\ n\(.*\)/\ 3\n\2\n\1/}' \| sed -r '/WHERE/{:a;N;/@'"$n"'/! ba;s/### @2.*// g}' \| sed 's/### //g;s/\/\*.*/,/ g' \| sed '/WHERE/{:a;N;/@1/! ba;s/,/;/g};s/#.*// g;s/COMMIT,//g' \| sed '/^$/d' > $tmpfilen=0;for i in `mysql -u$user -p$pwd --skip-column-names --silent -e "desc $db.$ table" |awk '$0=$1'`;do ((n++)); sed -i "s/@$n\b/$i/g" $tmpfiledonesed -i -r "s/($i=.*),/\ 1/g" $tmpfile#Usage: -b -s -e -d -t with binlog name start time end time library name table name,#directly use sh update_time_recovery.sh -b /mysqllog/mysql-bin. 00005-s "2017-11-03 14:30:00" -e "2017 - 11 - 03 15:00:00" -d test_db -t test_tb 2. Use mysqlbinlog_back.py script:
Reference:
mysqlbinlog_flashback tool
3. Using MyFlash tools:
Reference:
MyFlash rollback mysql binlog
There are many similar open source projects on the Internet, such as binlog2sql, etc. can be referred to.
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
The market share of Chrome browser on the desktop has exceeded 70%, and users are complaining about
The world's first 2nm mobile chip: Samsung Exynos 2600 is ready for mass production.According to a r
A US federal judge has ruled that Google can keep its Chrome browser, but it will be prohibited from
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
About us Contact us Product review car news thenatureplanet
More Form oMedia: AutoTimes. Bestcoffee. SL News. Jarebook. Coffee Hunters. Sundaily. Modezone. NNB. Coffee. Game News. FrontStreet. GGAMEN
© 2024 shulou.com SLNews company. All rights reserved.