MySQL 技术篇- linux下mysql数据库利用binlog文件进行数据回滚实例演示,binlog恢复数据库的两种方式
生活随笔
收集整理的這篇文章主要介紹了
MySQL 技术篇- linux下mysql数据库利用binlog文件进行数据回滚实例演示,binlog恢复数据库的两种方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MySQL 數據庫數據回滾
- 第一章:利用 binlog 進行數據回滾
- ① 查看 binlog 文件所在位置
- ② 查看主數據正在存儲數據的 binlog 文件名
- ③ 在控制臺查看 binlog 文件內容方法
- ④ 回滾方式一:通過時間點導出 sql 語句
- ⑤ 注意:對比服務器和本地時間算出時間差,避免時間截取錯誤
- ⑥ 回滾方式二:通過位置點導出 sql 語句
- ⑦ sql 文件恢復方法一: 通過 source 方法恢復數據庫
- ⑧ 技巧:篩選導出指定庫相關的 sql 腳本
- ⑨ sql 文件恢復方法二: 導入恢復數據庫
- ⑩ 技巧:binlog 直接恢復方法
第一章:利用 binlog 進行數據回滾
① 查看 binlog 文件所在位置
首先通過下面的語句查看 binlog 文件所在位置。
show variables like '%log_bin%';可以看到位置是 /usr/local/mysql-8.0.11/data/
② 查看主數據正在存儲數據的 binlog 文件名
查看 show master status
可以定位到目前正在存儲數據的是 binlog.000025
③ 在控制臺查看 binlog 文件內容方法
通過 bin 下面的 mysqlbinlog 工具來看法 binlog 文件,可以看到都記錄了什么。
[root@localhost bin]# "/usr/local/mysql-8.0.11/bin/mysqlbinlog" --no-defaults "/usr/local/mysql-8.0.11/data/binlog.000025"④ 回滾方式一:通過時間點導出 sql 語句
看一下誤刪的時間。
通過中間時間點導出 sql 語句,現在是有一定時間差的,因為本地時間和服務器時間不同步,下一節說明怎么計算時間差。
⑤ 注意:對比服務器和本地時間算出時間差,避免時間截取錯誤
查看服務器時間。
[root@localhost bin]# date Thu Aug 13 07:44:36 EDT 2020查看本地時間,可以看到我的本地時間快8分鐘左右,截取日志的時候要看提前 8 分鐘的內容。
⑥ 回滾方式二:通過位置點導出 sql 語句
首先看兩個恢復點中間的位置信息。
上面是通過兩個時間點截取,這個是通過兩個位置點截取。
通過指定位置導出數據庫。
⑦ sql 文件恢復方法一: 通過 source 方法恢復數據庫
登錄數據庫、切換數據庫、恢復數據庫。
[root@localhost ~]# "/usr/local/mysql-8.0.11/bin/mysql" -uroot -p123456 -A mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 41 Server version: 8.0.11 MySQL Community Server - GPLCopyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | ncc_0807auto | | ncc_0807mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.01 sec)mysql> use ncc_0807mysql; Database changed mysql> source /usr/local/mysql-8.0.11/bin/0813.sql; Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.01 sec)⑧ 技巧:篩選導出指定庫相關的 sql 腳本
指定數據庫:-d 數據庫名,或 –database= 數據庫名。
[root@localhost mysql-8.0.11]# "/usr/local/mysql-8.0.11/bin/mysqlbinlog" --no-defaults --start-datetime="2020.08.13 06:50:00" -d ncc_0807mysql --stop-datetime="2020.08.13 06:55:00" "/usr/local/mysql-8.0.11/data/binlog.000025" > 0814.sql⑨ sql 文件恢復方法二: 導入恢復數據庫
導入恢復數據庫。
[root@localhost mysql-8.0.11]# "/usr/local/mysql-8.0.11/bin/mysql" -uroot -p123456 ncc_0807mysql < "/usr/local/mysql-8.0.11/0814.sql"⑩ 技巧:binlog 直接恢復方法
位置的直接 binlog 恢復庫方法。
直接恢復,無需中轉。
喜歡的點個贊?吧!
總結
以上是生活随笔為你收集整理的MySQL 技术篇- linux下mysql数据库利用binlog文件进行数据回滚实例演示,binlog恢复数据库的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 技巧篇-官方网站打不开的情
- 下一篇: Oracle 数据库表空间不足拓展方法实