二進位制日誌管理操作

2022-06-21 23:15:15 字數 4312 閱讀 8128

1.開啟二進位制日誌

[root@db02 ~]# vim /etc/my.cnf

[mysqld]

server_id

log_bin=/usr/local/mysql/data/mysql-bin

2.檢視二進位制日誌
#物理檢視

[root@db02 ~]# ll /usr/local/mysql/data/

-rw-rw---- 1 mysql mysql 120 jul 21 19:24 mysql-bin.000001

-rw-rw---- 1 mysql mysql 39 jul 21 19:24 mysql-bin.index

#資料庫檢視

mysql> show variables like '%log_bin%';

3.事件
1.什麼是事件

1)在binlog中最小的記錄單元為event

2)乙個事務會被拆分成多個事件(event)

2.事件(event)特性

1)每個event都有乙個開始位置(start position)和結束位置(stop position)。

2)所謂的位置就是event對整個二進位制的檔案的相對位置。

3)對於乙個二進位制日誌中,前120個position是檔案格式資訊預留空間。

4)mysql第乙個記錄的事件,都是從120開始的。

4.重新整理binlog
1)flush logs;

2)重啟資料庫時會重新整理

3)二進位制日誌上限,預設1g(max_binlog_size)

5.刪除binlog
1.根據存在時間刪除日誌

#臨時生效

set global expire_logs_days = 7;

#永久生效

[root@db01 data]# vim /etc/my.cnf

[mysqld]

expire_logs_days = 7

2.使用purge命令刪除

purge binary logs before now() - interval 3 day;

3.根據檔名刪除

purge binary logs to 'mysql-bin.000010';

4.使用reset master

mysql> reset master;

1.記錄已提交的dml事務語句,並拆分為多個事件(event)來進行記錄

2.記錄所有ddl、dcl等語句,總之,二進位制日誌會記錄所有對資料庫發生修改的操作

3.如果我擁有資料庫搭建開始所有的二進位制日誌,那麼我可以把資料恢復到任意時刻

4.資料的備份與恢復

5.資料的複製

1.資料庫的備份與恢復

1.新增資料

mysql> create database binlog;

mysql> use binlog

mysql> create table binlog(id int);

mysql> insert binlog values(1),(2),(3);

mysql> insert binlog values(4);

mysql> insert binlog values(5);

2.刪除資料

#誤刪除兩條資料

mysql> delete from binlog where id=5;

mysql> delete from binlog where id=4;

3.通過binlog恢復資料

#檢視二進位制日誌找到位置點

[root@db02 data]# mysqlbinlog mysql-bin.000002

#將位置點之間的資料取出

[root@db02 data]# mysqlbinlog --start-position=631 --stop-position=978 mysql-bin.000002 > /tmp/hf.sql

#將資料匯入回去

[root@db02 data]# mysql < /tmp/45.sql

2.使用binlog配合資料庫公升級
1.準備一台新的資料庫,版本為5.6.38

2.舊資料庫備份資料

[root@db03 ~]# mysqldump -uroot -p123 --triggers -r --master-data=2 -b ku linux9 myisam qiudao qiudaodsb tmp world xiangqing >/tmp/full.sql

3.將備份的資料庫傳到新資料庫

[root@db03 ~]# scp /tmp/full.sql 172.16.1.52:/tmp/

4.修改sql中的儲存引擎

[root@db02 data]# sed -i 's#myisam#innodb#g' /tmp/full.sql

5.將修改後的sql檔案匯入新資料

[root@db02 data]# mysql < /tmp/full.sql

6.將**中的資料庫位址修改為新的資料庫位址

7.通過binlog將資料遷移過程中新生成的資料取出

[root@db03 data]# mysqlbinlog -uroot -p123 --start-position=120 --stop-position=465 mysql-bin.000014 > /tmp/bu.sql

[root@db03 data]# scp /tmp/bu.sql 172.16.1.52:/tmp/

8.將新資料匯入新庫

[root@db02 data]# mysql < /tmp/bu.sql

1.作用
1.記錄已提交的dml事務語句,並拆分為多個事件(event)來進行記錄

2.記錄所有ddl、dcl等語句

3.資料的備份恢復

4.資料的複製

#如果我擁有資料庫搭建開始所有的二進位制日誌,那麼我可以把資料恢復到任意時刻

2.二進位制日誌介紹
1.二進位制日誌預設是關閉的

2.檢視二進位制

mysql> show variables like '%log_bin%';

3.配置

[root@db03 ~]# vim /etc/my.cnf

server_id=1

log_bin=/service/mysql/data/mysql-bin

4.開啟二進位制一般儲存子 $datadir/ 下面,以'mysql-bin.00000n'命名

3.二進位制日誌工作模式

1.工作模式種類

1.statement  語句模式

2.row 行級模式

3.mixed 混合模式

2.檢視工作模式

mysql> show variables like '%binlog_format%';

+---------------+-----------+

| variable_name | value |

+---------------+-----------+

| binlog_format | statement |

+---------------+-----------+

1 row in set (0.00 sec)

3.statement語句模式

#語句模式,mysql5.6預設的模式

記錄資料庫中操作過得所有sql語句

#檢視[root@db03 data]# mysqlbinlog mysql-bin.000014

#優缺點:

1.易讀

2.不安全

3.相對於行級模式占用磁碟空間小

4.row行級模式

#行級模式,mysql5.7預設的模式

記錄的是資料的變化過程

#配置行級模式

[root@db03 data]# vim /etc/my.cnf

binlog_format=row

#檢視方式

[root@db03 data]# mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000016

#優缺點:

1.安全

2.不易讀

3.相對於語句模式占用磁碟大

5.mixed混合模式

二進位制操作

關於二進位制操作很常見,很多筆試面試題中也有涉及,本篇主要圍繞二進位制翻轉,二進位制最高位判定和給定整數的二進位制輸出來 靈活使用二進位制的 操作。一 給定整數的二進位制翻轉 思路 可以考慮逐次翻轉得到最終的翻轉結果,具體做法,首先將所有二進位制位奇偶位逐個翻轉,然後以兩位為一對 作為整體 奇偶對逐...

MySQL 二進位制日誌操作(Binlog)

操作命令 show binlog events in binlog.000016 limit 10 reset master 刪除所有的二進位制日誌 flush logs 產生乙個新的binlog日誌檔案 show master logs show binary logs 檢視二進位制檔案列表和檔案...

mysql 二進位制日誌

如果mysql 伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 例如,從你最後一次備份 直到現在或另乙個指定的時間點的資料。mysqlbinlog 用於處理二進位制日誌檔案的實用工具 要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般...