2020년 9월 29일 화요일

Replication filter에 대하여

MySQL에서는 데이터를 복제할 때 필터 할 수 있는 기능을 제공한다.

MySQL 5.7부터는 서버 재기동 없이 온라인으로 설정할 수 있게 되었다.

Replication filter options

1. replicate-do-db=dbname # 복제할 데이터베이스 지정
2. replicate-ignore-db=dbname # 복제 대상에서 제외할 데이터베이스 지정 3. replicate-do-table=dbname.table # 복제할 테이블 지정 4. replicate-ignore-table=dbname.table # 복제 대상에서 제외할 테이블 지정 5. replicate-rewrite-db=from_name->to_name # from_name 데이터베이스를 to_name 데이터베이스로 바꿔서 복제하도록 지정 6. replicate-wild-do-table=dbname.% # 복제할 테이블을 '%' 또는 '_' 와일드카드 문자로 설정 7. replicate-wild-ignore-table=dbname.% #
제외할 테이블을 '%' 또는 '_' 와일드카드 문자로 설정

주의점
SBR(statement-based replication)에서 replicate-do-db를 이용할 경우 cross-database statements는 복제되지 않는다.
SQL thread가 default database를 기준으로 제한하고 있기 때문이다.

# On slave
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.18.0.2
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 6025
               Relay_Log_File: mysql-relay-bin.000015
                Relay_Log_Pos: 395
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: test_db_01 # Slave에서 test_db_01만을 복제하도록 설정
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:

# On master
mysql> USE mysql;
Database changed
mysql> INSERT INTO test_db_01.test_table (id) VALUES (1111);
Query OK, 1 row affected (0.02 sec)

# On Slave
mysql> SELECT * FROM test_db_01.test_table;
Empty set (0.00 sec)

cross-database갱신도 복제를 하기 위해서는 replicate-wild-do-table를 이용해야한다.

# On slave
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.18.0.2
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 6408
               Relay_Log_File: mysql-relay-bin.000017
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table: test_db_01.%

# On master
mysql> USE mysql;
Database changed
mysql> INSERT INTO test_db_01.test_table (id) VALUES (2222);
Query OK, 1 row affected (0.02 sec)

# On slave
mysql> SELECT * FROM test_db_01.test_table;
+------+
| id   |
+------+
| 2222 |
+------+
1 row in set (0.00 sec)

# Refer
https://dev.mysql.com/doc/refman/5.6/en/replication-options-replica.html

댓글 없음:

댓글 쓰기

결혼이민비자 신청방법(F-6-1 국민의 배우자)

 제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...