一、首先確定數據庫是否開啟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)
二、全庫備份恢復單個庫的數據流程:
2.1、從全備份文件中將需要的庫的建表語句和INSERT數據拿出來
sed -n '/^-- Current Database: `庫名`/,/^-- Current Database: `/p' 全備SQL > 庫.sql
2.2、導入庫中
mysql -uroot -p 庫名 <庫.sql
2.3、檢查數據
三、全庫備份恢復單個表的數據流程:
3.1、從全備份中提取出該表的建表語句
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `表`/!d;q' 全備SQL > 表.sql
3.2、提取該表的insert into語句
grep -i 'INSERT INTO `表`' 全備SQL >>表.sql
3.3、導入到對應的庫中
mysql 庫名 < 表.sql
3.4、檢查數據
四、根據mysqlbinlog恢復備份之后的數據
4.1、查看當前binlog
show master status;
4.2、把binlog轉移
/*這個時候要將當前的binlog日志拷貝到其他目錄,以免后續操作對binlog日志產生影響*/
cp /var/lib/mysql/mysql-bin.000001 /home
4.3、把binlog轉換為sql文件
/*執行命令*/ 轉換binlog日志為sql
mysqlbinlog -d 庫名 mysql-bin.000001 >001bin.sql #-d指定庫
4.4、編輯001bin.sql將里面的誤操作命令(DROP命令)全部刪除
接下來恢復備份之后被刪除的數據
mysql -uroot -p 庫名 < 001bin.sql
遇到報錯問題
編輯001bin.sql文件,將報錯信息中提示的某行以下文件全部刪除
然后重新導入
五、完成
六、按時間導出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查看原生語句方法
配置文件修改,需重啟
[mysqld]
bingo_rows_query_log_events=1
INI 復制 全屏
在線修改
set binlog_rows_query_log_events=1;
---end------
本文來自博客園,作者:|是吳啊|,