MySql日誌及資料恢復
阿新 • • 發佈:2018-11-21
MySql日誌
開啟bin-log日誌
1,使用vim或其他編輯器,開啟mysql配置檔案
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
2,找到一下兩個配置項
server-id =123456
log_bin = var/log/mysql/mysql-bin
3,把註釋開啟,改完後,儲存退出
4,重啟mysql
sudo service muysql restart
5,檢視bin-log日誌:
mysql>show binary logs;
6,ls 檢視是否存在mysql日誌檔案
cd /var/lib/mysql
7,清空所有的bin-log日誌
mysql>reset master
8,檢視binlog日誌檔案
mysqlbinlog mysql-bin.000001
備份資料時,重新整理日誌:
mysqldumo -u root -pwei test -1 -F '/tmp/test.sql'
其中:-F即flush logs,可以重新生成新的日誌檔案,當然包括log-bin日誌
資料庫的恢復
前提開啟了bin-log日誌,並定期備份
主要思路如下:
1,通過定期備份的檔案恢復大量資料
2,通過日誌恢復備份後的資料操作
– 重新整理日誌
mysql> reset master; Query OK, 0 rows affected (0.39 sec)
–查詢最新日誌
show binary logs;
–建立資料庫
mysql>create database ops;
Query OK, 1 row affcted (0.28 sec)
–選擇並開啟庫
musql>use ops;
Database changed
–建立表
create table user(
id int not null auto_increment,
name char(20) not null,
age int not null,
primary key(id)
) engine=InnoDB;
–新增資料
insert into user values(1,"wangbo","22"),(2,"guohui","22"),(3,"zhangheng","27");
–查詢
mysql>select * from user;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 1 | wangbo | 24 |
| 2 | guohui | 22 |
| 3 | zhangheng | 27 |
+----+-----------+-----+
3 rows in set (0.00 sec)
–現在進行資料備份
mysqldump -u root -p -B -F -R -x --master-data=2 ops>/home/yc/py08/04-mysql/ops.sql
引數說明:
-B:指定資料庫
-F:重新整理日誌
-R:備份儲存過程等
-X:鎖表
–再新增新的資料
inset into user values(4,"liupeng","21"),(5,"xiaoda","31"),(6,"fuaiai","26");
–查詢資料
mysql> select * from user;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 1 | wangbo | 24 |
| 2 | guohui | 22 |
| 3 | zhangheng | 27 |
| 4 | liupeng | 21 |
| 5 | xiaoda | 31 |
| 6 | fuaiai | 26 |
+----+-----------+-----+
6 rows in set (0.00 sec)
–此時誤操作,刪除了test資料庫
drop databases ops;
mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| python4 |
| sys |
| wx |
+--------------------+
6 rows in set (0.00 sec)
1,先將binlog檔案匯出
–將binlog檔案匯出sql檔案,並vim編輯它刪除其中的drop語句
--[[email protected] backup]# mysqlbinlog -d ops /var/lib/mysql/mysql-bin.000002>/home/yc/002bir.sql
sudo mysqlbinlog -d ops /var/log/mysql/mysql-bin.000002>/home/yc/py08/04-mysql/002bin.sql
2,–刪除裡面的drop語句
vim 002bin.sql
3,–匯入備份的資料檔案
mysql -u root -p </home/yc/py08/04-mysql/ops.sql
4,–再匯入刪除 drop語句後的binlog日誌檔案
mysql -u root -p ops</home/yc/py08/04-mysql/002bin.sql