• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用FREDATED引擎实现跨实例访问

mysql 搞代码 4年前 (2022-01-09) 16次浏览 已收录 0个评论

跨数据库服务器,跨实例访问是比较常见的一种访问方式,在Oracle中可以通过DB LINK的方式来实现。对于MySQL而言,有一个FEDERATED存储引擎与之相对应。同样也是通过创建一个链接方式的形式来访问远程服务器上的数据。本文简要描述了FEDERATED存储引擎,以及

跨数据库服务器,跨实例访问是比较常见的一种访问方式,在Oracle中可以通过DB LINK的方式来实现。对于MySQL而言,有一个FEDERATED存储引擎与之相对应。同样也是通过创建一个链接方式的形式来访问远程服务器上的数据。本文简要描述了FEDERATED存储引擎,以及演示了基于FEDERATED存储引擎跨实例访问的示例。

1、FEDERATED存储引擎的描述

2、安装与启用FEDERATED存储引擎

3、准备远程服务器环境

-- 此演示中远程服务器与本地服务器为同一服务器上的多版本多实例-- 假定远程服务为:5.6.12(实例3406)-- 假定本地服务器:5.6.21(实例3306)   -- 基于实例3306创建FEDERATED存储引擎表test.federated_engine以到达访问实例3406数据库tempdb.tb_engine的目的[root@rhel64a ~]# cat /etc/issueRed Hat Enterprise Linux Server release 6.4 (Santiago) --启动3406的实例[root@rhel64a ~]# /u01/app/mysql/bin/mysqld_multi start 3406[root@rhel64a ~]# mysql -uroot -pxxx -P3406 --protocol=tcproot@localhost[(none)]> show variables like 'server_id';+---------------+-------+| Variable_name | Value |+---------------+-------+| server_id     | 3406  |+---------------+-------+--实例3406的版本号root@localhost[tempdb]> show variables like 'version';+---------------+------------+| Variable_name | Value      |+---------------+------------+| version       | 5.6.12-log |+---------------+------------+--创建数据库root@localhost[(none)]> create database tempdb;Query OK, 1 row affected (0.00 sec)-- Author : Leshami-- Blog   :http://blog.gaodaima.com/leshamiroot@localhost[(none)]> use tempdbDatabase changed--创建用于访问的表root@localhost[tempdb]> create table tb_engine as     -> select engine,support,comment from information_schema.engines;Query OK, 9 rows affected (0.10 sec)Records: 9  Duplicates: 0  Warnings: 0--提取表的SQL语句用于创建为FEDERATED存储引擎表root@localhost[tempdb]> show create table tb_engine \G*************************** 1. row ***************************       Table: tb_engineCreate Table: CREATE TABLE `tb_engine` (  `engine` varchar(64) NOT NULL DEFAULT '',  `support` varchar(8) NOT NULL DEFAULT '',  `comment` varchar(80) NOT NULL DEFAULT '') ENGINE=InnoDB DEFAULT CHARSET=utf8--创建用于远程访问的账户root@localhost[tempdb]> grant all privileges on tempdb.* to 'remote_user'@'192.168.1.131' identified by 'xxx';Query OK, 0 rows affected (0.00 sec)root@localhost[tempdb]> flush privileges;Query OK, 0 rows affected (0.00 sec)

4、演示FEDERATED存储引擎跨实例访问

[root@rhel64a ~]# mysql -uroot -pxxxroot@localhost[(none)]> show variables like 'version';+---------------+--------+| Variable_name | Value  |+---------------+--------+| version       | 5.6.21 |+---------------+--------+#查看是否支持FEDERATED引擎root@localhost[(none)]> select * from information_schema.engines where engine='federated';+-----------+---------+--------------------------------+--------------+------+------------+| ENGINE    | SUPPORT | COMMENT                        | TRANSACTIONS | XA   | SAVEPOINTS |+-----------+---------+--------------------------------+--------------+------+------------+| FEDERATED | NO      | Federated MySQL storage engine | NULL         | NULL | NULL       |+-----------+---------+--------------------------------+--------------+------+------------+root@localhost[(none)]> exit[root@rhel64a ~]# service mysql stopShutting down MySQL..[  OK  ]#配置启用FEDERATED引擎[root@rhel64a ~]# vi /etc/my.cnf[root@rhel64a ~]# tail -7 /etc/my.cnf[mysqld]socket = /tmp/mysql3306.sockport = 3306pid-file = /var/lib/mysql/my3306.piduser = mysqlserver-id=3306/federated         #添加该选项[root@rhel64a ~]# service mysql startStarting MySQL.[  OK  ][root@rhel64a ~]# mysql -uroot -pxxxroot@localhost[(none)]> select * from information_schema.engines where engine='federated';+-----------+---------+--------------------------------+--------------+------+------------+| ENGINE    | SUPPORT | COMMENT                        | TRANSACTIONS | XA   | SAVEPOINTS |+-----------+---------+--------------------------------+--------------+------+------------+| FEDERATED | YES     | Federated MySQL storage engine | NO           | NO   | NO         |+-----------+---------+--------------------------------+--------------+------+------------+root@localhost[(none)]> use test-- 创建基于FEDERATED引擎的表federated_engineroot@localhost[test]> CREATE TABLE `federated_engine` (    ->   `engine` varchar(64) NOT NULL DEFAULT '',    ->   `support` varchar(8) NOT NULL DEFAULT '',    ->   `comment` varchar(80) NOT NULL DEFAULT ''    -> ) ENGINE=FEDERATED DEFAULT CHARSET=utf8    -> CONNECTION='mysql://remote_user:[email protected]:3406/t<div>本文来源gaodai.ma#com搞#代!码网_</div>empdb/tb_engine';Query OK, 0 rows affected (0.00 sec)-- 下面是创建后表格式文件root@localhost[test]> system ls -hltr /var/lib/mysql/testtotal 12K-rw-rw---- 1 mysql mysql 8.5K Oct 24 08:22 federated_engine.frm--查询表federated_engineroot@localhost[test]> select * from federated_engine limit 2;+------------+---------+---------------------------------------+| engine     | support | comment                               |+------------+---------+---------------------------------------+| MRG_MYISAM | YES     | Collection of identical MyISAM tables || CSV        | YES     | CSV storage engine                    |+------------+---------+---------------------------------------+--更新表federated_engineroot@localhost[test]> update federated_engine set support='NO' where engine='CSV';Query OK, 1 row affected (0.03 sec)Rows matched: 1  Changed: 1  Warnings: 0--查看更新后的结果root@localhost[test]> select * from federated_engine where engine='CSV';+--------+---------+--------------------+| engine | support | comment            |+--------+---------+--------------------+| CSV    | NO      | CSV storage engine |+--------+---------+--------------------+

5、创建FEDERATED引擎表的链接方式

scheme: A recognized connection protocol. Only mysql is supported as the scheme value at this point.

链接示例样本:

6、涉及到的相关参考


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用FREDATED引擎实现跨实例访问

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址