av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL binlog_ignore_db 參數(shù)的具體使用

瀏覽:160日期:2023-10-08 10:27:32

前言:

經(jīng)過前面文章學(xué)習(xí),我們知道 binlog 會(huì)記錄數(shù)據(jù)庫所有執(zhí)行的 DDL 和 DML 語句(除了數(shù)據(jù)查詢語句select、show等)。注意默認(rèn)情況下會(huì)記錄所有庫的操作,那么如果我們有另類需求,比如說只讓某個(gè)庫記錄 binglog 或排除某個(gè)庫記錄 binlog ,是否支持此類需求呢?本篇文章我們一起來看下。

1. binlog_do_db 與 binlog_ignore_db

當(dāng)數(shù)據(jù)庫實(shí)例開啟 binlog 時(shí),我們執(zhí)行 show master status 命令,會(huì)看到有 Binlog_Do_DB 與 Binlog_Ignore_DB 選項(xiàng)。

mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000009 | 282838 | | | |+---------------+----------+--------------+------------------+-------------------+

默認(rèn)情況下,這兩個(gè)選項(xiàng)為空,那么這兩個(gè)參數(shù)有何作用?是否如同其字面意思一個(gè)只讓某個(gè)庫記錄 binglog 一個(gè)排除某個(gè)庫記錄 binlog 呢?筆者查閱官方文檔,簡單說明下這兩個(gè)參數(shù)的作用:

binlog_do_db:此參數(shù)表示只記錄指定數(shù)據(jù)庫的二進(jìn)制日志,默認(rèn)全部記錄。 binlog_ignore_db:此參數(shù)表示不記錄指定的數(shù)據(jù)庫的二進(jìn)制日志。

這兩個(gè)參數(shù)為互斥關(guān)系,一般只選擇其一設(shè)置,只能在啟動(dòng)命令行中或配置文件中加入。指定多個(gè)數(shù)據(jù)庫要分行寫入,舉例如下:

# 指定 db1 db2 記錄binlog[mysqld]binlog_do_db = db1binlog_do_db = db2# 不讓 db3 db4 記錄binlog[mysqld]binlog_ignore_db = db3binlog_ignore_db = db4

此外,這二者參數(shù)具體作用與否還與 binlog 格式有關(guān)系,在某些情況下 binlog 格式設(shè)置為 STATEMENT 或 ROW 會(huì)有不同的效果。在實(shí)際應(yīng)用中 binlog_ignore_db 用途更廣泛些,比如說某個(gè)庫的數(shù)據(jù)不太重要,為了減輕服務(wù)器寫入壓力,我們可能不讓該庫記錄 binlog 。網(wǎng)上也有文章說設(shè)置 binlog_ignore_db 會(huì)導(dǎo)致從庫同步錯(cuò)誤,那么設(shè)置該參數(shù)到底有什么效果呢,下面我們來具體實(shí)驗(yàn)下。

2. binlog_ignore_db 具體效果

首先說明下,我的測試數(shù)據(jù)庫實(shí)例是 5.7.23 社區(qū)版本,共有 testdb、logdb 兩個(gè)業(yè)務(wù)庫,我們?cè)O(shè)置 logdb 不記錄 binlog ,下面來具體實(shí)驗(yàn)下:

# binlog 為 ROW 格式 # 1.不使用 use dbmysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 154 | | logdb | |+---------------+----------+--------------+------------------+-------------------+mysql> select database();+------------+| database() |+------------+| NULL |+------------+1 row in set (0.00 sec)mysql> CREATE TABLE testdb.`test_tb1` ( id int , name varchar(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.06 sec)mysql> insert into testdb.test_tb1 values (1001,’sdfde’);Query OK, 1 row affected (0.01 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 653 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> CREATE TABLE logdb.`log_tb1` ( id int , name varchar(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.05 sec)mysql> insert into logdb.log_tb1 values (1001,’sdfde’);Query OK, 1 row affected (0.00 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 883 | | logdb | |+---------------+----------+--------------+------------------+-------------------+mysql> insert into logdb.log_tb1 values (1002,’sdsdfde’); Query OK, 1 row affected (0.01 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 883 | | logdb | |+---------------+----------+--------------+------------------+-------------------+mysql> alter table logdb.log_tb1 add column c3 varchar(20); Query OK, 0 rows affected (0.12 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 1070 | | logdb | |+---------------+----------+--------------+------------------+-------------------+# 結(jié)論:其他庫記錄正常 logdb庫會(huì)記錄DDL 不記錄DML# 2.使用 use testdb跨庫mysql> use testdb;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select database();+------------+| database() |+------------+| testdb |+------------+1 row in set (0.00 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 1070 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> CREATE TABLE `test_tb2` ( id int , name varchar(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.05 sec)mysql> insert into test_tb2 values (1001,’sdfde’);Query OK, 1 row affected (0.04 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 1574 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> CREATE TABLE logdb.`log_tb2` ( id int , name varchar(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.05 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 1810 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> insert into logdb.log_tb2 values (1001,’sdfde’);Query OK, 1 row affected (0.01 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 1810 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)# 結(jié)論:同樣logdb庫會(huì)記錄DDL 不記錄DML # 3.使用 use logdb跨庫mysql> use logdb;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select database();+------------+| database() |+------------+| logdb |+------------+1 row in set (0.00 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 1810 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> CREATE TABLE testdb.`test_tb3` ( id int , name varchar(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.23 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 1810 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> insert into testdb.test_tb3 values (1001,’sdfde’);Query OK, 1 row affected (0.02 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 2081 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> CREATE TABLE `log_tb3` ( id int , name varchar(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.05 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 2081 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> insert into log_tb3 values (1001,’sdfde’);Query OK, 1 row affected (0.02 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 2081 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)# 結(jié)論:logdb都不記錄 同時(shí)不記錄其他庫的DDL# 4.每次操作都進(jìn)入此庫 不跨庫mysql> use testdb;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 2081 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> CREATE TABLE `test_tb4` ( id int , name varchar(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.05 sec)mysql> insert into test_tb4 values (1001,’sdfde’);Query OK, 1 row affected (0.01 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 2585 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> use logdb;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> CREATE TABLE `log_tb4` ( id int , name varchar(30) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.04 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 2585 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> insert into log_tb4 values (1001,’sdfde’);Query OK, 1 row affected (0.01 sec)mysql> show master status;+---------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000011 | 2585 | | logdb | |+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)# 結(jié)論:其他庫全部記錄 logdb全不記錄

同樣的,將 binlog 格式設(shè)置為 STATEMENT ,再次進(jìn)行測試,這里不再贅述測試過程,總結(jié)下 STATEMENT 格式下的實(shí)驗(yàn)結(jié)果:

未選擇任何數(shù)據(jù)庫進(jìn)行操作,所有都會(huì)記錄。 選擇testdb,對(duì)testdb和logdb分別進(jìn)行操作,所有庫都會(huì)記錄。 選擇logdb,對(duì)testdb和logdb分別進(jìn)行操作,所有庫都不會(huì)記錄。 選擇某個(gè)庫并只對(duì)當(dāng)前庫進(jìn)行操作,則記錄正常,不會(huì)記錄logdb。

看了這么多實(shí)驗(yàn)數(shù)據(jù),你是否眼花繚亂了呢,下面我們以思維導(dǎo)圖的形式總結(jié)如下:

MySQL binlog_ignore_db 參數(shù)的具體使用

這么看來 binlog_ignore_db 參數(shù)的效果確實(shí)和諸多因素有關(guān),特別是有從庫的情況下,主庫要特別小心使用此參數(shù),很容易產(chǎn)生主從同步錯(cuò)誤。不過,按照嚴(yán)格標(biāo)準(zhǔn)只對(duì)當(dāng)前數(shù)據(jù)庫進(jìn)行操作,則不會(huì)產(chǎn)生問題。這也告訴我們要嚴(yán)格按照標(biāo)準(zhǔn)來,只賦予業(yè)務(wù)賬號(hào)某個(gè)單庫的權(quán)限,也能避免各種問題發(fā)生。

總結(jié):

不清楚各位讀者是否對(duì)這種介紹參數(shù)的文章感興趣呢?可能這些是數(shù)據(jù)庫運(yùn)維人員比較關(guān)注的吧。本篇文章主要介紹關(guān)于 binlog 的 binlog_ignore_db 參數(shù)的具體作用,可能本篇文章實(shí)驗(yàn)環(huán)境還不夠考慮周全,有興趣的同學(xué)可以參考下官方文檔,有助于對(duì)該參數(shù)有更深入的了解。

以上就是MySQL binlog參數(shù)的使用的詳細(xì)內(nèi)容,更多關(guān)于MySQL binlog參數(shù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 国产免费福利 | 69er小视频 | 在线网站免费观看18 | 成人毛片一区二区三区 | av在线免费观看网址 | 日韩欧美国产综合 | 亚洲视频不卡 | 一区二区小视频 | 日日夜夜精品免费 | 国产激情网 | 亚洲va韩国va欧美va精品 | 伊人精品久久 | 中文字幕激情 | 天天综合视频 | 国产精品福利一区 | 国产a区| 国产精品少妇 | 日本毛片在线观看 | 欧美日韩一二三 | 日韩久久久久久久 | 成人毛片网站 | 国产a久久麻豆入口 | 亚洲精品免费在线 | 日韩一区二区三区免费视频 | 国内精品视频 | 在线免费播放av | 久草视频免费看 | 国产精品毛片久久久久久久 | 久久综合99 | 国产一区在线播放 | 91中文字幕在线 | 亚洲综合色网 | 91在线看片 | 国产精品资源 | 综合久久久久 | 黄色大片免费在线观看 | 五月婷婷综合在线 | 黄色一级大片在线免费看产 | 久久一区二区视频 | 久久久精品一区二区三区 | www.久|