MySQL只同步单个表或多个表,非全部同步!

replicate-do-table 是 MySQL 复制配置中的一个选项,它允许您指定要在从服务器上复制的表。如果您想要只复制主服务器上特定的表到从服务器,您可以使用这个选项。

以下是如何操作 replicate-do-table 的步骤:

  1. 停止从服务器:

    在从服务器上执行以下命令来停止复制:

    STOP SLAVE;
    
  2. 编辑 MySQL 配置文件:

    找到您的 MySQL 配置文件,通常是 my.cnfmy.ini。这个文件的位置可能会根据您的操作系统和安装方式而异。

    [mysqld] 部分下,加入以下行来指定要复制的表:

    replicate-do-table=db_name.table_name
    

    如果有多个表需要复制,为每个表重复上述行,例如:

    replicate-do-table=db_name.table1
    replicate-do-table=db_name.table2
    
  3. 重新启动 MySQL 服务:

    为了使新配置生效,您需要重新启动 MySQL 服务。

    根据您的操作系统,这通常可以通过以下命令之一完成:

    service mysql restart
    

    systemctl restart mysqld
    
  4. 启动从服务器复制:

    返回到 MySQL 的从服务器,启动复制:

    START SLAVE;
    
  5. 检查复制状态:

    请确保复制正常运行并且没有错误:

    SHOW SLAVE STATUS\G;
    

    主要检查 Slave_IO_RunningSlave_SQL_Running 是否都为 Yes。如果不是,查看相关的错误信息并解决。

完成上述步骤后,从服务器将仅复制您在 replicate-do-table 中指定的表。不过,请注意,这种方法需要停机时间,并且在修改任何配置之前,您应该确保备份所有数据和配置文件。此外,在生产环境应用更改之前,最好在测试环境中进行试验。

如果您使用了replicate-do-table=db_name.table_name配置,那么仅指定的表会被复制到从服务器。其它的表不会被复制。

但需要注意的是,如果您同时使用了多个过滤选项(例如replicate-do-table, replicate-ignore-table, replicate-do-db等),它们之间的交互可能会变得相当复杂,并可能导致预期外的行为。因此,通常推荐在配置时尽量简单,并确保您完全理解所做的每个设置。

简单来说,如果您只配置了replicate-do-table,那么仅那些明确列出的表会被复制,其他所有的表都不会被复制。

是的,两个数据库之间可以通过外网进行同步,但要注意安全性和性能方面的问题。此外,仅同步具有相同表结构的表也是可以的。

  1. 外网同步

    • 当通过外网进行MySQL主从复制时,需要确保网络连接稳定,并且延迟尽可能低。
    • 安全性是关键。您应该考虑使用SSL进行加密,确保数据在传输过程中是加密的。同时,确保只开放必要的端口,并使用防火墙限制只有从数据库的IP可以访问主数据库的MySQL端口。
  2. 表结构

    • 如果只有一个表需要同步,并且该表在两个数据库中都有相同的结构,那么这没有问题。您可以使用 replicate-do-table=db_name.table_name 选项在从服务器上只同步那个特定的表。
    • 虽然其他表的结构和数据不同,但这不会影响到指定表的同步。
  3. 步骤

    • 在主数据库上,确保已经启用了二进制日志(binary logging)。
    • 创建一个只有读和复制的权限的用户供从数据库使用。
    • 在从数据库上配置主从复制,并指定只复制那个特定的表。
    • 在从数据库上开始复制。
  4. 监控和维护

    • 定期检查从服务器的复制状态以确保一切正常。
    • 考虑使用工具或脚本自动检测复制错误或延迟。

总之,只要考虑到安全性和性能,并适当配置,那么通过外网进行MySQL的主从复制并只同步特定的表是完全可行的。

你可能感兴趣的:(MySQL,mysql,数据库)