使用replicate-rewrite-db 实现复制映射 + Replicate_Wild_Do_Table实现复制过滤

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

node1和node2为两台不同业务的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,改配置文件

/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上测试下吧。











本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1922565,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
Oracle 关系型数据库 MySQL
MySQL复制表结构create table as与like的区别
MySQL复制表结构create table as与like的区别
|
18天前
|
SQL
sql server查看所有表名以及注释
sql server查看所有表名以及注释
11 0
|
关系型数据库 MySQL
mysql中插入语句ON DUPLICATE KEY用法
ON DUPLICATE KEY是mysql中特有用法
369 0
|
SQL 运维 关系型数据库
MySQL binlog_ignore_db 参数最全解析
经过前面文章学习,我们知道 binlog 会记录数据库所有执行的 DDL 和 DML 语句(除了数据查询语句select、show等)。注意默认情况下会记录所有库的操作,那么如果我们有另类需求,比如说只让某个库记录 binglog 或排除某个库记录 binlog ,是否支持此类需求呢?本篇文章我们一起来看下。
475 0
MySQL binlog_ignore_db 参数最全解析
|
关系型数据库 数据库 PostgreSQL
【DB吐槽大会】第70期 - PG 不支持update | delete skip locked, nowait语法
大家好,这里是DB吐槽大会,第70期 - PG 不支持update | delete skip locked, nowait语法
|
SQL 数据库
SQL Server 复制表结构以及数据,去除表中重复字段
SQL Server 复制表结构以及数据,去除表中重复字段--复制另一个数据库中的某张表的结构及数据--select * from Test.dbo.TestTable(查询表中所有数据) --into [表名] 插入当前数据库新表,如果没有该表就创建 select * into TestCopy from Test.
1207 0
|
SQL
SQL Server - 使用 Merge 语句实现表数据之间的对比同步
原文:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等。
1328 0
|
SQL Go 数据库
MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据
原文:MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据 转自:http://www.maomao365.com/?p=4942 下文主要讲述:重复数据只获取一条的方法 row_number函数在数据库中的功能是为每一...
1110 0