系统运维

MySQL数据库如何实现跨服务器访问数据

字号+作者:益华科技来源:人工智能2025-11-05 15:57:52我要评论(0)

在使用MySQL数据库时,很多同学经常会问,我能跨服务器访问另一库的数据么?得到的答案很多时候是让人失望的。那么如果真的需要访问,又不想使用拷贝表及数据的方式,可以实现么,又该如何实现呢?1、如何实现

在使用MySQL数据库时,据库据很多同学经常会问,何实我能跨服务器访问另一库的现跨数据么?得到的答案很多时候是让人失望的。那么如果真的服务需要访问,又不想使用拷贝表及数据的器访方式,可以实现么,问数又该如何实现呢?据库据

1、如何实现

先说结论:在MySQL数据库中,何实是现跨可以实现跨实例(跨服务器)访问另一个库中表的。

实现方法:MySQL数据库的服务其中一个优点就是插件式管理,因此,器访可以使用 FEDERATED 存储引擎来实现来实现。问数

开启FEDERATED存储引擎:

开启的源码库据库据方式是在配置文件中添加FEDERATED配置,即:

复制[mysqld] federated1.2.

开启后如下:

可见,何实已经支持FEDERATED存储引擎。现跨

2、具体案例

下面列举具体示例来演示。

(1)具体案例

需求: 假设服务器A实例中的testdb1库里有一张表tb1,现在想在服务器B的testdb2中直接访问testdb1中的tb1表的数据。

实现步骤:

在服务器A中创建表 复制mysql> create database testdb1; Query OK, 1 row affected (0.00 sec) mysql> use testdb1; Database changed mysql> create table tb1(id int primary key ,c1 varchar(20)); Query OK, 0 rows affected (0.01 sec) mysql> insert into tb1 values(1,a); Query OK, 1 row affected (0.01 sec) mysql> insert into tb1 values(2,b),(3,ca),(4,tc); Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from tb1; +----+------+ | id | c1 | +----+------+ | 1 | a | | 2 | b | | 3 | ca | | 4 | tc | +----+------+ 4 rows in set (0.00 sec)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.

因为需要远程访问A服务器上的表的权限,因此需创建一个数据库用户用来远程访问。

复制mysql> create user t_user identified by Test2023.com; Query OK, 0 rows affected (0.00 sec) mysql> grant all on testdb1.* to t_user; Query OK, 0 rows affected (0.01 sec)1.2.3.4. 在服务器B的数据库testdb2上创建FEDERATED存储引擎表 复制mysql> create database testdb2; Query OK, 1 row affected (0.00 sec) mysql> use testdb2; Database changed mysql> create table testdb2_tb1( -> id INT PRIMARY KEY , -> c1 varchar(20) -> )ENGINE=FEDERATED -> CONNECTION=mysql://t_user:Test2023.com@127.0.0.1:3306/testdb1/tb1; Query OK, 0 rows affected (0.00 sec) mysql> show tables; +-------------------+ | Tables_in_testdb2 | +-------------------+ | testdb2_tb1 | +-------------------+ 1 row in set (0.00 sec) mysql> select * from testdb2_tb1; +----+------+ | id | c1 | +----+------+ | 1 | a | | 2 | b | | 3 | ca | | 4 | tc | +----+------+ 4 rows in set (0.02 sec)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.

创建后可以直接访问到A服务器中的tb1表的数据。

(2)其他操作

除了查询,如果创建FEDERATED引擎表的账号(如本文用的免费源码下载t_user)有增删改的权限,那么也可以通过操作B服务器的testdb2.testdb2_tb1对远程表(服务器A上的testdb.tb1)进行相应的操作,例如:

在服务器B上新增数据 复制mysql> select * from testdb2_tb1; +----+------+ | id | c1 | +----+------+ | 1 | a | | 2 | b | | 3 | ca | | 4 | tc | +----+------+ 4 rows in set (0.00 sec) mysql> insert into testdb2_tb1 values(5,cc),(6,ty); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from testdb2_tb1; +----+------+ | id | c1 | +----+------+ | 1 | a | | 2 | b | | 3 | ca | | 4 | tc | | 5 | cc | | 6 | ty | +----+------+ 6 rows in set (0.00 sec)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.

在A服务器上查看数据情况: 复制mysql> use testdb1; Database changed mysql> select * from tb1; +----+------+ | id | c1 | +----+------+ | 1 | a | | 2 | b | | 3 | ca | | 4 | tc | +----+------+ 4 rows in set (0.00 sec) mysql> select * from tb1; +----+------+ | id | c1 | +----+------+ | 1 | a | | 2 | b | | 3 | ca | | 4 | tc | | 5 | cc | | 6 | ty | +----+------+ 6 rows in set (0.00 sec)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.

其他操作 复制mysql> delete from testdb2_tb1 where id=1; Query OK, 1 row affected (0.01 sec) mysql> update testdb2_tb1 set c1=bb where id=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from testdb2_tb1; +----+------+ | id | c1 | +----+------+ | 2 | bb | | 3 | ca | | 4 | tc | | 5 | cc | | 6 | ty | +----+------+ 5 rows in set (0.00 sec) mysql> alter table testdb2_tb1 add key idx_c1(c1); ERROR 1031 (HY000): Table storage engine for testdb2_tb1 doesnt have this option mysql> create index idx_c1 on testdb2_tb1(c1); ERROR 1031 (HY000): Table storage engine for testdb2_tb1 doesnt have this option mysql> truncate table testdb2_tb1; Query OK, 0 rows affected (0.03 sec) mysql> select * from testdb2_tb1; Empty set (0.00 sec)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.

可见:增删改查均可以,但是不支持ALTER TABLE操作,可以支持truncate table操作。

3、小结

MySQL数据库使用FEDERATED引擎表表,可以实现库实例(跨服务器)的数据访问及处理,这极大的方便了数据间的关联、对比及数据治理。关于其实现原理及优劣势可以在以后的课程合集中细说,感兴趣的也可以多实验了解。站群服务器

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 通过命令youtube-dl下载YouTube视频。安装youtube-dl复制代码代码如下:安装完毕后就可以用下面的格式下载TouTube视频:复制代码代码如下:例如,使用youtube -F可以列出当前YouTube视频可用的视频格式:复制代码代码如下:再使用youtube-dl -f format code来选择下载列出的视频:复制代码代码如下:使用代理的方法下载:复制代码代码如下:通过youtube-dl -h可查询更多格式和用法。

    通过命令youtube-dl下载YouTube视频。安装youtube-dl复制代码代码如下:安装完毕后就可以用下面的格式下载TouTube视频:复制代码代码如下:例如,使用youtube -F可以列出当前YouTube视频可用的视频格式:复制代码代码如下:再使用youtube-dl -f format code来选择下载列出的视频:复制代码代码如下:使用代理的方法下载:复制代码代码如下:通过youtube-dl -h可查询更多格式和用法。

    2025-11-05 15:38

  • 怎样在前端项目中使用MySQL模块操作数据库?

    怎样在前端项目中使用MySQL模块操作数据库?

    2025-11-05 14:16

  • 根技术再突破,华为宣布GaussDB数据库正式向全球客户提供服务​

    根技术再突破,华为宣布GaussDB数据库正式向全球客户提供服务​

    2025-11-05 14:08

  • 面试官:MySQL连环炮,你扛得住嘛?

    面试官:MySQL连环炮,你扛得住嘛?

    2025-11-05 13:43

网友点评
精彩导读
也许还有不少人不知道MultiSystem,它是一个用来在Linux系统中创建多启动usb盘的小型的开源软件。使用这个工具,我们可以在USB中创建任意多的可启动Linux发行版。你所需要的只是网络链接(只在MultiSystem安装的时候需要),以及一个足够大的USB盘,这取决于你想在USB盘中放入发行版的数量。在 Ubuntu 14.10/14.04 安装MultiSystem手动安装:下载 MultiSystem脚本,并解压到任意地方。进入解压的地址,使用下面的命令运行脚本。复制代码代码如下:sudo ./install-depot-multisystem.sh使用 PPA 安装:当然,你也可以用下面的命令来更简单地使用PPA来安装MultiSystem。复制代码代码如下:sudo apt-add-repository deb http://liveusb.info/multisystem/depot all main    wget -q -O - http://liveusb.info/multisystem/depot/multisystem.asc | sudo apt-key add -    sudo apt-get update    sudo apt-get install multisystem安装完之后,它会自动打开MultiSystem。只要点击关闭按钮退出。安装之后MultiSystem 安装完成后,可以插入你的USB,并通过Unity Dash或者菜单运行MultiSystem。第一次启动时,MultiSystem界面看起来会像下面这样。选择USB设备,点击确认按钮。假如你看到下面的错误窗口,不必担心,它说的是USB设备没有标签。点击OK让MultiSystem自动设置标签。那么,拔出/重新插入USB,再次运行MultiSystem。选择USB盘,再次点击确认。现在,你被要求确认在USB中安装Grub2.点击OK继续。最终,你会高兴地看到MultiSystem的界面。现在,时候创建多启动USB盘。使用MultiSystem非常容易使用。将ISO文件拖入MultiSystem窗口中。假如不行的话,点击底部的cd 按钮来选择ISO文件。现在,MultiSystem会从ISO中拷贝文件,并让USB可启动。相似地,你可以在你的USB中加入任意多的发行版。我这次加入了两个Linux发行版:CentOS 6.5和Android。加完ISO文件后,你会在MultiSystem的主窗口中看到可启动的发行版列表了。就是这样。我们的多启动USB盘就可以使用了。重启系统,并在BIOS中设置USB优先启动。选择你想要安装的发行版并开始安装系统。此外,MultiSystem含有一些其它的选项:        Grub 设置 Grub 和 Burg 的bootloader更新 下载 LiveCD VirtualBox 安装 格式化USB盘 还有更多选项这些额外选项可以在MultiSystem的菜单标签里面看到。同样,你也可以在Ubuntu中使用QEMU或者Oracle VirtualBox测试多启动USB盘。MultiSystem工具是我测试到现在最棒和最有用的一款工具。这款工具对那些想要在他们的机器上安装多个系统的人是非常有用的。在你外出的时候,你不必再携带CD/DVD袋了。只要买一个16GB或者32GB的USB就行,并下载所有你想要的系统,随心所欲的安装系统即可。并且,一个对于Windows系统用户的好消息是它也支持Windows系统。我在Windows 7上测试过,它可以工作!享受吧!

也许还有不少人不知道MultiSystem,它是一个用来在Linux系统中创建多启动usb盘的小型的开源软件。使用这个工具,我们可以在USB中创建任意多的可启动Linux发行版。你所需要的只是网络链接(只在MultiSystem安装的时候需要),以及一个足够大的USB盘,这取决于你想在USB盘中放入发行版的数量。在 Ubuntu 14.10/14.04 安装MultiSystem手动安装:下载 MultiSystem脚本,并解压到任意地方。进入解压的地址,使用下面的命令运行脚本。复制代码代码如下:sudo ./install-depot-multisystem.sh使用 PPA 安装:当然,你也可以用下面的命令来更简单地使用PPA来安装MultiSystem。复制代码代码如下:sudo apt-add-repository deb http://liveusb.info/multisystem/depot all main wget -q -O - http://liveusb.info/multisystem/depot/multisystem.asc | sudo apt-key add - sudo apt-get update sudo apt-get install multisystem安装完之后,它会自动打开MultiSystem。只要点击关闭按钮退出。安装之后MultiSystem 安装完成后,可以插入你的USB,并通过Unity Dash或者菜单运行MultiSystem。第一次启动时,MultiSystem界面看起来会像下面这样。选择USB设备,点击确认按钮。假如你看到下面的错误窗口,不必担心,它说的是USB设备没有标签。点击OK让MultiSystem自动设置标签。那么,拔出/重新插入USB,再次运行MultiSystem。选择USB盘,再次点击确认。现在,你被要求确认在USB中安装Grub2.点击OK继续。最终,你会高兴地看到MultiSystem的界面。现在,时候创建多启动USB盘。使用MultiSystem非常容易使用。将ISO文件拖入MultiSystem窗口中。假如不行的话,点击底部的cd 按钮来选择ISO文件。现在,MultiSystem会从ISO中拷贝文件,并让USB可启动。相似地,你可以在你的USB中加入任意多的发行版。我这次加入了两个Linux发行版:CentOS 6.5和Android。加完ISO文件后,你会在MultiSystem的主窗口中看到可启动的发行版列表了。就是这样。我们的多启动USB盘就可以使用了。重启系统,并在BIOS中设置USB优先启动。选择你想要安装的发行版并开始安装系统。此外,MultiSystem含有一些其它的选项:     Grub 设置 Grub 和 Burg 的bootloader更新 下载 LiveCD VirtualBox 安装 格式化USB盘 还有更多选项这些额外选项可以在MultiSystem的菜单标签里面看到。同样,你也可以在Ubuntu中使用QEMU或者Oracle VirtualBox测试多启动USB盘。MultiSystem工具是我测试到现在最棒和最有用的一款工具。这款工具对那些想要在他们的机器上安装多个系统的人是非常有用的。在你外出的时候,你不必再携带CD/DVD袋了。只要买一个16GB或者32GB的USB就行,并下载所有你想要的系统,随心所欲的安装系统即可。并且,一个对于Windows系统用户的好消息是它也支持Windows系统。我在Windows 7上测试过,它可以工作!享受吧!