1. 程式人生 > >MySql日誌及資料恢復

MySql日誌及資料恢復

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