MySQL - 跨库连接数据表

56 阅读1分钟

注意

  • federated引擎只能作为数据映射表,你可以理解成跨库的视图
  • 尽量不要在federated引擎映射的表里执行写操作,除非你不需要用到事务

配置步骤

  • 查询操作库是否有安装federated存储引擎

    
    # 查看是否有federated项 
    mysql> show engines;
    
  • 安装federated存储引擎

    # 如已经安装则跳过这一步
    mysql> install plugin federated soname 'ha_federated.so';
    
  • 操作服务器启用federated引擎

    [root@localhost ~] vim /etc/my.cnf
    # 新增此项
    [mysqld]
    federated
    
    [root@localhost ~] systemctl restart mysql
    
  • 同步测试

     # 在存储库中创建数据表
    CREATE TABLE `test` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `test` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
        
    # 在操作库中添加镜像表[表结构与存储库保持相同]
    CREATE TABLE `test` (
       `id` int(11) NOT NULL AUTO_INCREMENT,
       `test` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=federated DEFAULT CHARSET=utf8mb4 CONNECTION='mysql://[username]:[password]@[ipaddress]:[port]/[databases]/[tablename]';
    

    如需更改数据结构时可以在【操作库】中将数据表删除后重新运行创建语句,数据不会被删除