使用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.178linux.com/74853

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

相关推荐

  • Linux简介和基础

    一、系统和硬件 无论是Linux、OS X、Windows操作系统,他们都是由以下部分组成(分层结构): 最底层:硬件 底层之上:将硬件的接口抽象成为系统调用(kernel) 再之上:库 再此之上为:应用程序 程序的运行可以有两种方式: 1、开机自动启动运行 2、用户通过交互式接口登陆或者连接系统上去,来手动运行程序 二、终端: 1、物理终端:我们可以将显示…

    Linux干货 2017-09-02
  • linux密码的破解与保护

    找回root口令:   遇到密码丢失的情况,如果只是普通用户的密码丢失,那么可以让管理员重新设定密码。但是如果管理员用户的密码丢失,那该如何解决?   在 Linux环境中root 密码忘记还是可以救回来的!只要能够进入并且挂载 / , 然后重新设定一下root的密码,就救回来啦!这是因为开机流程中,若强制进入runlevel 1 时, …

    Linux干货 2016-09-22
  • Linux之bash shell脚本编程入门篇(三)之循环以及函数function的使用

    bash shell脚本编程入门篇(三)之循环 什么是循环执行?     将某代码段重复运行多次     重复运行多少次:         循环次数事先已知    &nb…

    Linux干货 2016-08-22
  • CentOS系统启动流程

    概述:系统启动流程是Linux一个重要的内容,深入了解启动流程会对我们学习Linux起到一个顺水推舟的作用。因为CentOS 7改动较大,所以下面的内容只是针对CentOS 5和6来说的。下面进入正题。 启动流程:  第一步:POST加电自检    此过程的就是为了检测一下外界的硬件设备是否能够正常运行,如CPU,内存设备,硬盘…

    Linux干货 2016-09-13
  • 马哥教育网络班21期第11周课程练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送方Bob:自上至下 1、生成数据 2、Bob用单向加密算法对数据提取特征码 3、Bob用自己的私钥加密特征码,并附加在数据后面 4、Bob使用对称加密算法生成临时会话密钥加密特征码和数据 5、Bob用Alice的公钥加密临时会话密钥,并附加在数据后 接收方Alice:自下至上 1、Alice收到Bob数据,…

    Linux干货 2016-10-31
  • N22-第二周作业

    1、文件管理类命令有:cp,mv,rm    cp:复制命令      用法:cp [OPTION]… SOURCE… DEST        如果DEST不存在,则先创建此文件并复制源…

    Linux干货 2016-08-29