一、首先確定數(shù)據(jù)庫(kù)是否開啟binlog日志
MySQL> show variables like '%log_bin%';
+---------------------------------+---------------------------------------+
| Variable_name | Value |
+---------------------------------+---------------------------------------+
| log_bin | ON |
| log_bin_basename | /home/mysql/mysql/lib/mysql-bin |
| log_bin_index | /home/mysql/mysql/lib/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+---------------------------------------+
6 rows in set (0.00 sec)
二、全庫(kù)備份恢復(fù)單個(gè)庫(kù)的數(shù)據(jù)流程:
2.1、從全備份文件中將需要的庫(kù)的建表語(yǔ)句和INSERT數(shù)據(jù)拿出來(lái)
sed -n '/^-- Current Database: `庫(kù)名`/,/^-- Current Database: `/p' 全備SQL > 庫(kù).sql
2.2、導(dǎo)入庫(kù)中
mysql -uroot -p 庫(kù)名 <庫(kù).sql
2.3、檢查數(shù)據(jù)
三、全庫(kù)備份恢復(fù)單個(gè)表的數(shù)據(jù)流程:
3.1、從全備份中提取出該表的建表語(yǔ)句
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `表`/!d;q' 全備SQL > 表.sql
3.2、提取該表的insert into語(yǔ)句
grep -i 'INSERT INTO `表`' 全備SQL >>表.sql
3.3、導(dǎo)入到對(duì)應(yīng)的庫(kù)中
mysql 庫(kù)名 < 表.sql
3.4、檢查數(shù)據(jù)
四、根據(jù)mysqlbinlog恢復(fù)備份之后的數(shù)據(jù)
4.1、查看當(dāng)前binlog
show master status;
4.2、把binlog轉(zhuǎn)移
/*這個(gè)時(shí)候要將當(dāng)前的binlog日志拷貝到其他目錄,以免后續(xù)操作對(duì)binlog日志產(chǎn)生影響*/
cp /var/lib/mysql/mysql-bin.000001 /home
4.3、把binlog轉(zhuǎn)換為sql文件
/*執(zhí)行命令*/ 轉(zhuǎn)換binlog日志為sql
mysqlbinlog -d 庫(kù)名 mysql-bin.000001 >001bin.sql #-d指定庫(kù)
4.4、編輯001bin.sql將里面的誤操作命令(DROP命令)全部刪除
接下來(lái)恢復(fù)備份之后被刪除的數(shù)據(jù)
mysql -uroot -p 庫(kù)名 < 001bin.sql
遇到報(bào)錯(cuò)問題
編輯001bin.sql文件,將報(bào)錯(cuò)信息中提示的某行以下文件全部刪除
然后重新導(dǎo)入
五、完成
六、按時(shí)間導(dǎo)出binlog
mysqlbinlog --no-defaults --start-datetime="2021-08-11 14:30:00" --stop-datetime="2021-08-11 15:42:00" mysql-bin.000377 >AA.sql
七、binlog查看原生語(yǔ)句方法
配置文件修改,需重啟
[mysqld]
bingo_rows_query_log_events=1
INI 復(fù)制 全屏
在線修改
set binlog_rows_query_log_events=1;
---end------
本文來(lái)自博客園,作者:|是吳啊|,






