Docker 上运行 两个 MySQL 容器,并通过 federated 引擎 实现 数据库容器1 与 容器2 表之间的相互查询

安装Docker参考博客:https://www.cnblogs.com/lylsr/p/11173012.html

Docker安装MySQL参考博客:https://www.cnblogs.com/loovelj/p/7823093.html

Navicat 远程登录MySQL参考博客:https://blog.csdn.net/boomxiaolong/article/details/103047593

Docker内安装工具参考博客:https://blog.csdn.net/weixin_44666068/article/details/100604245

Federated引擎配置与使用参考博客:https://blog.csdn.net/langkeziju/article/details/50462943

正文:

一、构建Mysql 容器1,容器端口号:3306/ 宿主机端口号:33065

构建Mysql 容器2,容器端口号:3306/ 宿主机端口号:33061

1、创建network

 docker network create -d bridge --ip-range=192.168.1.0/24 --gateway=192.168.1.1 --subnet=192.168.1.0/24 bridge2

2、创建两个MySQL容器,设定其名字、端口号、密码、网络等:

docker run -it --network=bridge2 --ip=192.168.1.3 --name mysql-1 -p 33065:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql


docker run -it --network=bridge2 --ip=192.168.1.4 --name mysql-2 -p 33061:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

3、相关docker基础指令:

docker ps  查看容器列表,是否创建成功

docker ps -a 查看所有容器(包括没有运行的)

docker start   【容器号,或者容器名】  启动容器

docker restart   【容器号,或者容器名】  重启动容器

docker stop     【容器号,或者容器名】  停止容器

docker exec -it 【容器号,或者容器名】 /bin/bash   进入容器
docker rm -f     【容器号,或者容器名】     删除容器

实验结果:

二、实现其中一个容器Ping通另一个容器:

由于容器内没有安装Ping工具,所以需要安装:

第一步:#更新指令

apt-get update

第二步:#安装ping
 apt-get install iputils-ping

实验结果:

三、开启MySQL1中的 federated 引擎

             MySQL中federated 引擎默认状态是关闭的,可以在数据库内使用 show engines;语句查询 

+------------+----------+----------------------------------------------------------------+ 
| Engine     | Support  | Comment                                                        | 
+------------+----------+----------------------------------------------------------------+ 
| MyISAM     | DEFAULT  | Default engine as of MySQL 3.23 with great performance         | 
| MEMORY     | YES      | Hash based, stored in memory, useful for temporary tables      | 
| InnoDB     | YES      | Supports transactions, row-level locking, and foreign keys     | 
| BerkeleyDB | NO       | Supports transactions and page-level locking                   | 
| BLACKHOLE  | YES      | /dev/null storage engine (anything you write to it disappears) | 
| EXAMPLE    | YES      | Example storage engine                                         | 
| ARCHIVE    | YES      | Archive storage engine                                         | 
| CSV        | YES      | CSV storage engine                                             | 
| ndbcluster | DISABLED | Clustered, fault-tolerant, memory-based tables                 | 
| FEDERATED  | NO      | Federated MySQL storage engine                                 | 
| MRG_MYISAM | YES      | Collection of identical MyISAM tables                          | 
| ISAM       | NO       | Obsolete storage engine                                        | 
+------------+----------+----------------------------------------------------------------+ 

开启的方法:

     先安装 vim编辑器:apt-get install vim

    修改 /etc/mysql/my.cnf   :在文件【mysqld】下面添加一句  federated

   重启数据库,no就变成了yes

四、实现MySQL1容器查询 MySQL2 容器中的 数据库表

    federated 引擎相当于在本地创建一个表,映射到远程的一个表;所以可以做到查询本地表,相当于查询远端服务器数据库的表;

 第一步:在模拟的远端服务器数据库MySQL2中创建数据库 db1 ,并在里面创建表 person

第二步:向表格内插入数据

第三步:在模拟的本地服务器数据库中创建一个表,并映射到MySQL2的db1数据库下的person表

  create table person (id in(11),name varchar(11))ENGINE=FEDERATED CONNECTION='mysql://root:[email protected]:3306/db1/person';

格式:

ENGINE=FEDERATED

CONNECTION='mysql://username:password@hostname:port/database/tablename

第四步:查看person表内内容

      

发布了42 篇原创文章 · 获赞 16 · 访问量 3393

猜你喜欢

转载自blog.csdn.net/qq_41542638/article/details/103847692