溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用mysqlbinlog恢復數據具體操作

發布時間:2020-05-27 16:01:13 來源:網絡 閱讀:301 作者:三月 欄目:數據庫

下文我給大家簡單講講關于使用mysqlbinlog恢復數據具體操作,大家之前了解過相關類似主題內容嗎?感興趣的話就一起來看看這篇文章吧,相信看完使用mysqlbinlog恢復數據具體操作對大家多少有點幫助吧。 

一、開啟bin-log

1、安裝mysql

[root@zhen ~]# yum -y install mysql mysql-devel mysql-server

2、開啟bin-log功能

[root@zhen ~]# vi /etc/my.cnf
      1 [mysqld]
      2 datadir=/var/lib/mysql
      3 socket=/var/lib/mysql/mysql.sock
      4 user=mysql
      5 # Disabling symbolic-links is recommended to prevent assorted security risks
      6 symbolic-links=0
      7 log_bin=mysql_bin

配置保存之后重啟mysqld。

bin-log是執行SQL時產生的日志文件,只不過該日志是二進制。作用有兩個:

①數據恢復;

②配置數據庫主從,用于slave可以從master同步數據。

3、確認是否開啟bin-log

登錄數據庫,執行:

mysql> show variables like 'log_bin';

使用mysqlbinlog恢復數據具體操作

看到確實是開啟的,這樣會在數據庫的datadir目錄下生成格式為mysql_bin.000001的日志文件:

使用mysqlbinlog恢復數據具體操作

二、查看產生的日志文件

bin-log是二進制文件,不能用vim等文本編輯器打開。Mysql提供了兩種方式查看,在查看之前先執行一些SQL讓文件中有記錄。

mysql> use test;
mysql> create table students( id int(10) primary key auto_increment,name varchar(255));
mysql> insert into students (id,name) values (1,'zhangsan'),(2,'lisi');
mysql> select * from students;

第一種查看方式:mysql自帶的mysqlbinlog命令:

[root@zhen ~]# /usr/bin/mysqlbinlog /var/lib/mysql/mysql_bin.000001

以在表中插入數據為例,來看看日志的格式:

# at 248
#160711 17:29:00 server id 1  end_log_pos 373 Querythread_id=3exec_time=0error_code=0
SET TIMESTAMP=1468272540/*!*/;
insert into students (id,name) values (1,'zhangsan'),(2,'lisi')
/*!*/;

“at 248”表示這條記錄的起始位置(position)

“160711 17:29:00”表示記錄產生的時間

“server id 1”表示是哪個云服務器產生的記錄

“end_log_pos 373”表示這條記錄的終止位置

最后還能看到執行的SQL。

可以根據記錄的起始位置和時間來恢復數據。

第二種查看方式:

mysql> show binlog events in "mysql_bin.000001";

使用mysqlbinlog恢復數據具體操作

用這種方式查看就簡潔明了了。同樣也能看到記錄的起始位置,執行的SQL等信息。

三、使用bin-log恢復數據

先把剛剛在test庫中創建的表students刪除掉:

mysql> drop table students;
Query OK, 0 rows affected (0.01 sec)

刪除之后來恢復這個表,有下面兩種方法:

①根據操作的時間來恢復。

使用mysqlbinlog查看日志文件,在記錄中找到創建這個表的時間是160711 17:24:00,最后刪除此表的時間是160711 19:10:38,利用這兩個時間點來恢復此表。

[root@zhen ~]# /usr/bin/mysqlbinlog --start-date="2016-07-11 17:24:00" --stop-date="2016-07-11 19:10:38" /var/lib/mysql/mysql_bin.000001 | /usr/bin/mysql -uroot -p

如果沒有設定數據庫密碼,則/usr/bin/mysql

亦可以先導出為sql文件,再將sql文件導入到數據庫:

[root@zhen ~]# /usr/bin/mysqlbinlog --start-date="2016-07-11 17:24:00" --stop-date="2016-07-11 19:10:38" /var/lib/mysql/mysql_bin.000001 > /tmp/1.sql
mysql> source /tmp/1.sql;

②根據操作的起止位置來恢復。

使用mysqlbinlog恢復數據具體操作

[root@zhen ~]# /usr/bin/mysqlbinlog --start-position=106 --stop-position=373 /var/lib/mysql/mysql_bin.000001 | /usr/bin/mysql -uroot -p

四、小結

1、為了能在發生災難時恢復數據庫,要現在配置文件中添加log_bin=mysql_bin?!癿ysql_bin”是日志文件的格式,可以自定義;

2、使用“mysql> show master status;”來確定數據庫當前使用的是哪個日志文件。

大家覺得使用mysqlbinlog恢復數據具體操作這篇文章怎么樣,是否有所收獲。如果想要了解更多相關,可以繼續關注我們的行業資訊板塊。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女