mysql如何建立跨服务器视图

不及物动词 其他 61

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在MySQL中,要建立跨服务器视图,可以使用Federated存储引擎来实现。Federated存储引擎是一个MySQL的插件,可以让我们从远程服务器引用和查询数据。下面是建立跨服务器视图的步骤:

    1. 确保你的MySQL服务器已经安装并启用了Federated存储引擎。可以通过检查my.cnf(或my.ini)文件中的federated参数是否设置为ON来确定是否已启用。

    2. 连接到本地MySQL服务器,并创建一个新的数据库用于存储跨服务器视图。可以使用以下命令:

      CREATE DATABASE federated_views;
      
    3. 在远程服务器上创建一个数据库,并确保需要引用的表已经存在并包含数据。假设远程服务器的IP地址为192.168.1.100,数据库名为remote_db,表名为remote_table。

    4. 在本地MySQL服务器上创建一个Federated表,用于引用远程服务器上的表。可以使用以下命令:

      CREATE TABLE federated_table (
        id INT(11) NOT NULL AUTO_INCREMENT,
        col1 VARCHAR(255),
        col2 INT(11),
        PRIMARY KEY (id)
      )
      ENGINE=FEDERATED
      CONNECTION='mysql://user:password@192.168.1.100/remote_db/remote_table';
      

      其中,user是远程服务器的用户名,password是密码,192.168.1.100是远程服务器的IP地址,remote_db是远程服务器上的数据库名,remote_table是远程服务器上的表名。

    5. 创建视图来引用Federated表。可以使用以下命令:

      CREATE VIEW cross_server_view AS
      SELECT col1, col2
      FROM federated_table;
      

      这将创建一个名为cross_server_view的视图,它引用了远程服务器上的数据。

    现在,你已经成功地建立了一个跨服务器视图。你可以像查询本地表一样查询这个视图,MySQL会自动从远程服务器检索数据。注意,需要确保本地和远程服务器之间的网络连接正常,并且远程服务器上的表结构和数据是正确的。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在MySQL中,可以通过以下步骤来建立跨服务器视图:

    1. 配置服务器之间的连接
      首先,在需要建立跨服务器视图的服务器上,需要配置与其他服务器的连接。可以使用MySQL的FEDERATED存储引擎来实现这一点。FEDERATED存储引擎允许在一个MySQL服务器上创建一个虚拟表,并通过网络连接到远程服务器上的实际表。

      在配置FEDERATED存储引擎之前,需要确保MySQL服务器上已启用FEDERATED存储引擎。可以通过执行以下命令来检查:

      SHOW ENGINES;
      

      如果列出中包含FEDERATED,说明已启用FEDERATED存储引擎。如果没有启用,需要修改MySQL配置文件(my.cnf或my.ini)以启用FEDERATED存储引擎。在配置文件中的[mysqld]部分添加或修改以下行:

      federated = ON
      

      保存配置文件并重启MySQL服务器以使更改生效。

    2. 创建远程服务器表
      在MySQL服务器上,使用CREATE SERVER语句创建与远程服务器的连接。这需要提供远程服务器的名称、主机、端口、用户名和密码等信息。例如:

      CREATE SERVER remote_server
      FOREIGN DATA WRAPPER mysql
      OPTIONS (USER 'remote_user', PASSWORD 'remote_password', HOST 'remote_host', PORT 3306);
      

      以上命令将创建一个名为remote_server的服务器,使用远程主机remote_host、端口3306并使用提供的用户名和密码进行连接。

    3. 创建本地表
      在MySQL服务器上,使用CREATE TABLE语句创建一个本地表,以定义要在跨服务器视图中使用的字段和类型。例如:

      CREATE TABLE local_table (
      id INT,
      name VARCHAR(50)
      );
      
    4. 创建跨服务器视图
      使用CREATE VIEW语句创建跨服务器视图。在创建跨服务器视图时,可以引用远程服务器上的表。例如:

      CREATE VIEW cross_server_view
      AS
      SELECT id, name
      FROM local_table
      UNION ALL
      SELECT id, name
      FROM remote_server.remote_database.remote_table;
      

      上述语句创建了一个名为cross_server_view的视图,它在本地表local_table和远程服务器上的表中选择数据。可以使用标准的SQL语句在跨服务器视图上执行查询。

    5. 查询跨服务器视图
      一旦创建了跨服务器视图,可以像本地表一样查询它。例如:

      SELECT *
      FROM cross_server_view;
      

      上述查询将返回从本地表和远程服务器表中检索的数据。

    需要注意的是,在建立跨服务器视图之前,需要确保远程服务器上的表结构和数据与本地服务器上的表相匹配。否则,在查询跨服务器视图时可能会出现错误。另外,跨服务器视图存在一定的性能开销,因为需要通过网络进行数据传输。所以在使用跨服务器视图时,需谨慎评估其对系统性能的影响。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在MySQL中,可以使用Federated引擎来建立跨服务器视图。Federated引擎允许在一个MySQL服务器上创建一个表,但该表的数据实际上存储在另一个远程服务器上。在建立跨服务器视图之前,需要按照以下步骤设置。

    步骤1:安装Federated引擎
    首先,确认MySQL服务器已经安装了Federated引擎支持。可以通过运行以下命令来检查:

    SHOW ENGINES;
    

    确保在支持列表中能够看到Federated引擎。如果未看到,则需要重新编译MySQL服务器以安装Federated引擎。

    步骤2:配置远程服务器
    在创建跨服务器视图之前,需要先配置远程服务器。远程服务器是实际存储数据的服务器。可以通过编辑MySQL服务器的my.cnf文件来配置远程服务器。在my.cnf文件的末尾添加以下配置:

    [federated]
        federated_host = {远程服务器IP地址}
        federated_port = {远程服务器端口号}
        federated_user = {远程服务器用户名}
        federated_password = {远程服务器密码}
    

    替换括号内的参数为远程服务器的实际信息。保存并关闭编辑器。

    步骤3:创建本地和远程表
    在本地服务器上,使用CREATE TABLE语句创建一个本地表,该表将充当跨服务器视图的接口。如下所示:

    CREATE TABLE local_table (
        ...
    )
    ENGINE = FEDERATED
    CONNECTION = 'mysql://federated_user:federated_password@federated_host:federated_port/remote_database/remote_table';
    

    在该语句中,使用ENGINE=FEDERATED来指定表的存储引擎为Federated。CONNECTION参数用于指定远程服务器的连接信息。替换参数为实际的连接信息。

    步骤4:查询跨服务器视图
    创建成功后,可以像查询本地表一样查询跨服务器视图。例如:

    SELECT * FROM local_table;
    

    这将返回跨服务器视图的数据。

    需要注意的是,为了建立跨服务器视图,远程服务器上的表结构必须和本地服务器上的表结构完全相同。如果远程服务器上的表结构发生了变化,需要同步更新本地表的结构。

    另外,Federated引擎在MySQL 5.6.6版本后已弃用,并且在MySQL 8.0版本中已被移除。因此,建议在使用Federated引擎之前先确认MySQL版本是否支持。如果不支持,可以考虑使用其他方法实现跨服务器视图。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部