安装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表内内容