使用replicate-rewrite-db 實現復制映射 + Replicate_Wild_Do_Table實現復制過濾

實驗環境:CentOS7.2 + MySQL5.7


node1(192.168.2.171)和node2(192.168.2.172) 為兩臺不同業務的MySQL服務器。

業務方有個需求,需要將node1上的employees庫的departments 、dept_manager 這2張表同步到 node2 的 hellodb 庫下面。

node1的employee 里面有如下6張表:

employees > show tables;

+———————+

| Tables_in_employees |

+———————+

departments         |

dept_manager        |

| dept_emp            |

| employees           |

| salaries            |

| titles              |

+———————+


node2 只要復制它的 departments 、dept_manager 表到hellodb庫里面。

整理好的詳細操作步驟如下:

1、在node1導出數據并傳送到node2去:

mysqldump -uroot -pAbcd@1234 -q –single-transaction employees departments dept_manager –master-data=2 > employees.sql   # 注意導出的時候不要加-B

scp employees.sql node2:/root/

2、然后到node2,導入剛才的數據

mysql -uroot -pAbcd@1234 hellodb

source /root/employees.sql 

show tables;

+——————-+

| Tables_in_hellodb |

+——————-+

departments       |

dept_manager      |

| students          |

| teachers          |

+——————-+

4 rows in set (0.00 sec)

可以看到2個表導入進來了。

head -35 /root/employees.sql , 記下change master to 的位置 ,例如

— CHANGE MASTER TO MASTER_LOG_FILE=’mysql.000021′, MASTER_LOG_POS=234757251;

3、停node2的mysql,改配置文件

/etc/int.d/mysql stop 

修改node2 配置文件,加上下面3行: 

replicate-rewrite-db = employees -> hellodb

replicate-wild-do-table=hellodb.departments

replicate-wild-do-table=hellodb.dept_manager

/etc/int.d/mysql start 

4、配置主從關系

CHANGE MASTER TO 

 MASTER_HOST=’192.168.2.171′,

 MASTER_USER=’rpl’,

 MASTER_PASSWORD=’Abcd@1234′,

 MASTER_LOG_FILE=’mysql.000021′,

 MASTER_LOG_POS=234757251;

show slave status \G 

[(none)] > show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: 

                  Master_Host: 192.168.2.171

                  Master_User: rpl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql.000021

          Read_Master_Log_Pos: 234757251

               Relay_Log_File: t72-relay-bin.000001

                Relay_Log_Pos: 4

        Relay_Master_Log_File: mysql.000021

             Slave_IO_Running: No

            Slave_SQL_Running: No

              Replicate_Do_DB: 

          Replicate_Ignore_DB: 

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: hellodb.departments,hellodb.dept_manager

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 234757251

              Relay_Log_Space: 154

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

  Replicate_Ignore_Server_Ids: 

             Master_Server_Id: 0

                  Master_UUID: 

             Master_Info_File: /data/mysql/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: 

           Master_Retry_Count: 86400

                  Master_Bind: 

      Last_IO_Error_Timestamp: 

     Last_SQL_Error_Timestamp: 

               Master_SSL_Crl: 

           Master_SSL_Crlpath: 

           Retrieved_Gtid_Set: 

            Executed_Gtid_Set: 

                Auto_Position: 0

         Replicate_Rewrite_DB: (employees,hellodb)

                 Channel_Name: 

           Master_TLS_Version: 

1 row in set (0.00 sec)

start slave; 

show slave status \G 

[(none)] > show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.2.171

                  Master_User: rpl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql.000021

          Read_Master_Log_Pos: 234757251

               Relay_Log_File: t72-relay-bin.000002

                Relay_Log_Pos: 316

        Relay_Master_Log_File: mysql.000021

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          Replicate_Ignore_DB: 

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: hellodb.departments,hellodb.dept_manager

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 234757251

              Relay_Log_Space: 521

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

  Replicate_Ignore_Server_Ids: 

             Master_Server_Id: 71

                  Master_UUID: 02d27620-1d8c-11e7-b028-000c295b7c01

             Master_Info_File: /data/mysql/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

           Master_Retry_Count: 86400

                  Master_Bind: 

      Last_IO_Error_Timestamp: 

     Last_SQL_Error_Timestamp: 

               Master_SSL_Crl: 

           Master_SSL_Crlpath: 

           Retrieved_Gtid_Set: 

            Executed_Gtid_Set: 

                Auto_Position: 0

         Replicate_Rewrite_DB: (employees,hellodb)

                 Channel_Name: 

           Master_TLS_Version: 

1 row in set (0.00 sec)

5、測試

在node1上多測試下吧,看看node2上有沒有正常復制過來。

原創文章,作者:lirulei,如若轉載,請注明出處:http://www.www58058.com/74853

(3)
liruleilirulei
上一篇 2017-05-06 19:12
下一篇 2017-05-06 21:40

相關推薦

  • Linux下常用的日志收集命令(Redhat&SuSe)

       Linux下日志的采集和分析是一個非常重要的工作,一般廠商在你需要技術支持的時候,都需要你通過對應指令收集系統的信息,我這邊列舉下常用的兩個Linux廠商的收集命令(Redhat Linux以及SuSe Linux),便于收集后,對系統進行全面分析。   sosreport是一個類型于supportconfig …

    系統運維 2016-07-07
  • DNS的基本配置、子域授權與bind編譯(第十八九天)

        DNS( Domain Name System)是“域名系統”的英文縮寫,是一種組織成域層次結構的計算機和網絡服務命名系統,它用于TCP/IP網絡,它所提供的服務是用來將主機名和域名轉換為IP地址的工作。     DNS利用類似于樹形目錄的結構,將主機名的管理分配在不同層…

    Linux干貨 2016-06-12
  • socket編程原理

    1、問題的引入 1) 普通的I/O操作過程: UNIX系統的I/O命令集,是從Maltics和早期系統中的命令演變出來的,其模式為打開一讀/寫一關閉(open-write-read-close)。在一個用戶進程進行I/O操作時,它首先調用“打開”獲得對指定文件或設備的使用權,并返回稱為文件描述符的整型數,以描述用戶在打開的文件或設備上進行I/O操作的進程。然…

    Linux干貨 2015-04-10
  • rsync+inotify 實現數據實時同步

        Rsync (Rmote sync)是一款非常好的數據同步工具,能夠通過對比同步雙方的數據變動,實現增量同步,還可以通過LAN/WAN實現遠程多臺主機間文件的同步,還能結合crond任務計劃來執行自動備份,又可以結合ssh實現遠程數據備份的安全,種種特性使他看起來相當優秀。但如果需備份數據十分龐大時,它的不足之處就顯現出來了,比如…

    Linux干貨 2015-07-24
  • 自建repo軟件倉庫

    近期主要使用的aliyun的源,主要會用到centos6、zabbix、epel和xen等,由于網絡質量不佳,考慮到自建軟件倉庫 第一步,刪除系統自導的源,新建ali.repo,將常用的幾個源地址加入 # rm /etc/yum.repos.d/*.repo -fr # vim /etc/yum.repos.…

    Linux干貨 2016-05-19
  • KeepAlived的配置及使用!

    此篇博客主要是和大家共同了解一下keepalived的功能及基礎配置,以便于牢固掌握,此篇博客共分為三個部分;                ⊙ 簡述keepalived的主要功能及安裝環境;           &nb…

    2017-05-13
欧美性久久久久