MySQL binlog_ignore_db 매개 변수의 구체 적 인 사용
앞의 글 을 통 해 우 리 는 binlog 가 데이터베이스 에서 실 행 된 모든 DDL 과 DML 문 구 를 기록 할 것 이라는 것 을 알 게 되 었 다.기본 적 인 상황 에서 모든 라 이브 러 리 의 작업 을 기록 할 수 있 습 니 다.예 를 들 어 특정한 라 이브 러 리 에 만 binglog 를 기록 하거나 특정한 라 이브 러 리 에 binlog 를 기록 하도록 한다 면 이러한 수 요 를 지원 하 시 겠 습 니까?이 문장 을 우리 함께 봅 시다.
1. binlog_do_db 와 binlogignore_db
데이터베이스 인 스 턴 스 가 binlog 를 열 때 show master status 명령 을 실행 하면 Binlog 가 있 습 니 다.Do_DB 와 BinlogIgnore_DB 옵션.
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000009 | 282838 | | | |
+---------------+----------+--------------+------------------+-------------------+
기본 적 인 상황 에서 이 두 옵션 이 비어 있 으 면 이 두 매개 변 수 는 어떤 역할 을 합 니까?그 말 그대로 하나의 라 이브 러 리 에 binglog 만 기록 하 게 하 는 것 이 아 닙 니까?필 자 는 공식 문 서 를 찾 아 보고 이 두 매개 변수의 역할 을 간단하게 설명 한다.
# db1 db2 binlog
[mysqld]
binlog_do_db = db1
binlog_do_db = db2
# db3 db4 binlog
[mysqld]
binlog_ignore_db = db3
binlog_ignore_db = db4
또한,이 두 가지 인자 의 구체 적 인 역할 여 부 는 binlog 형식 과 관련 이 있 으 며,어떤 경우 에는 binlog 형식 을 STATEMENT 또는 ROW 로 설정 하면 서로 다른 효과 가 있 을 수 있 습 니 다.실제 응용 에서 binlogignore_db 의 용도 가 더욱 광범 위 합 니 다.예 를 들 어 특정한 라 이브 러 리 의 데 이 터 는 그다지 중요 하지 않 습 니 다.서버 의 기록 압력 을 줄 이기 위해 서 저 희 는 이 라 이브 러 리 에 binlog 를 기록 하지 못 하 게 할 수 있 습 니 다.인터넷 에 도 binlog 를 설치 하 라 는 글 이 있 습 니 다.ignore_db 는 라 이브 러 리 동기 화 오 류 를 초래 할 수 있 습 니 다.이 매개 변 수 를 설정 하 는 것 이 어떤 효과 가 있 는 지 구체 적 으로 실험 해 보 겠 습 니 다.2. binlog_ignore_db 구체 적 효과
먼저 설명 하 겠 습 니 다.제 테스트 데이터 베 이 스 는 5.7.23 커 뮤 니 티 버 전 으로 모두 testdb,logdb 두 개의 업무 창고 가 있 습 니 다.저 희 는 logdb 를 설정 하여 binlog 를 기록 하지 않 습 니 다.다음은 구체 적 인 실험 을 하 겠 습 니 다.
# binlog ROW
# 1. use db
mysql> 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: 0
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000011 | 1070 | | logdb | |
+---------------+----------+--------------+------------------+-------------------+
# : logdb DDL DML
# 2. use testdb
mysql> use testdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> 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)
# : logdb DDL DML
# 3. use logdb
mysql> use logdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> 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)
# :logdb DDL
# 4.
mysql> use testdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
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 `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 names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> 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)
# : logdb
마찬가지 로 binlog 형식 을 STATEMENT 로 설정 하고 다시 테스트 를 진행 합 니 다.여기 서 테스트 과정 을 더 이상 설명 하지 않 고 STATEMENT 형식 에서 의 실험 결 과 를 정리 합 니 다.4.567917.데이터 베 이 스 를 선택 하지 않 고 모든 것 을 기록 합 니 다
그 러 고 보 니 binlogignore_db 매개 변수의 효 과 는 확실히 여러 가지 요소 와 관련 이 있 습 니 다.특히 라 이브 러 리 에서 메 인 라 이브 러 리 는 이 매개 변 수 를 사용 하 는 것 을 특히 조심해 야 합 니 다.메 인 동기 화 오류 가 발생 하기 쉽 습 니 다.그러나 엄격 한 기준 에 따라 현재 데이터 베 이 스 를 조작 하면 문제 가 되 지 않 는 다.이 는 엄격하게 기준 에 따라 업무 계 정의 특정한 라 이브 러 리 에 만 권한 을 부여 하고 각종 문제 가 발생 하지 않도록 해 야 한 다 는 것 을 알려 준다.
요약:
여러분 독자 들 이 이런 매개 변 수 를 소개 하 는 글 에 관심 이 있 는 지 모 르 겠 습 니 다.데이터베이스 운영 자 들 이 관심 이 많 았 나 봐 요.이 글 은 주로 binlog 에 관 한 binlog 를 소개 합 니 다.ignore_db 매개 변수 의 구체 적 인 역할 은 본 글 의 실험 환경 이 아직 주도면밀 하지 않 을 수 있 습 니 다.관심 이 있 는 학생 들 은 공식 문 서 를 참고 하여 이 매개 변수 에 대해 더욱 깊이 이해 하 는 데 도움 이 될 것 입 니 다.
이상 은 MySQL binlog 매개 변수 사용 에 대한 상세 한 내용 입 니 다.MySQL binlog 매개 변수 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.