暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MyCat入门篇-使用案例1:读写分离(part1)

程序猿集锦 2021-06-24
317

MyCat的使用案例

需求背景描述

想对mycat进行实践操作,结合一个数据库集群是必不可少的,因为它是一款数据库中间件产品,如果没有数据库作为基础,它的存在如同空中楼阁。

所以我们在进行实践mycat案例之前,需要搭建一个数据库集群,我们这里选择比较轻量级的MySQL数据库来作为mycat数据库中间件的底层数据库集群环境。

那么如何快速搭建一个MySQL集群环境呢?使用docker容器技术将是最佳的选择。接下来我将带领大家使用docker容器技术快速的搭建一个MySQL的主从复制的集群环境。

完成了MySQL组从复制的搭建之后,我会把数据库中间件mycat也集成到MySQL集群环境中来,结合mycat中间件来对MySQL实现读写分离、垂直拆分、水平拆分等操作。

容器节点信息

使用docker启动如下容器

  • 6个MySQL容器,3主3从;

  • 2个mycat容器,1主1备;

  • 2个搭建mycat高可用的HAProxy+Keepalive容器,在每台服务器上面都安装上HAProxy和Keepalive;

具体信息如下:

启动MySQL容器

拉取MySQL镜像

我们实验的时候是基于MySQL5.7.31的版本,所以我们从docker hub上拉取的时候,指定拉取的MySQL版本号。

  • 使用如下命令拉取并查看拉取结果:

  1. docker pull mysql:5.7.31

  2. docker images

复制
  • 具体示例如下所示:

  1. Data docker pull mysql:5.7.31

  2. 5.7.31: Pulling from library/mysql

  3. bb79b6b2107f: Downloading [==> ] 1.089MB/27.09MB

  4. 49e22f6fb9f7: Download complete

  5. 842b1255668c: Downloading [===================>] 1.609MB/4.178MB

  6. 9f48d1f43000: Downloading

  7. c693f0615bce: Waiting

  8. 8a621b9dbed2: Waiting

  9. 0807d32aef13: Waiting

  10. 6d2fc69dfa35: Waiting

  11. 56153548dd2c: Waiting

  12. 3bb6ba940303: Waiting

  13. 3e1888da91a7: Waiting

  14. 5.7.31: Pulling from library/mysql

  15. bb79b6b2107f: Pull complete

  16. 49e22f6fb9f7: Pull complete

  17. 842b1255668c: Pull complete

  18. 9f48d1f43000: Pull complete

  19. c693f0615bce: Pull complete

  20. 8a621b9dbed2: Pull complete

  21. 0807d32aef13: Pull complete

  22. 6d2fc69dfa35: Pull complete

  23. 56153548dd2c: Pull complete

  24. 3bb6ba940303: Pull complete

  25. 3e1888da91a7: Pull complete

  26. Digest: sha256:b3dc8d10307ab7b9ca1a7981b1601a67e176408be618fc4216d137be37dae10b

  27. Status: Downloaded newer image for mysql:5.7.31

  28. docker.io/library/mysql:5.7.31

  29. Data docker images

  30. REPOSITORY TAG IMAGE ID CREATED SIZE

  31. mysql 5.7.31 42cdba9f1b08 10 days ago 448MB

  32. Data

复制
准备MySQL配置文件

因为我们是使用容器启动MySQL服务,所以在启动MySQL服务之前,先准备好MySQL的配置文件,然后把配置文件挂载到容器当中,方便在后面配置主从同步的时候直接在本地挂载的目录下面修改配置文件。

我在本地的家目录下面,创建了一个dockermysqlconf文件夹,这个文件夹下面分了6个子目录文件夹,如下所示:

  • MySQL的配置文件目录如下:

  1. docker_mysql_conf ll

  2. total 0

  3. drwxr-xr-x 3 fengwenjian staff 96B 10 19 14:31 master1

  4. drwxr-xr-x 3 fengwenjian staff 96B 10 19 14:32 master2

  5. drwxr-xr-x 3 fengwenjian staff 96B 10 19 14:32 master3

  6. drwxr-xr-x 3 fengwenjian staff 96B 9 29 15:49 slave1

  7. drwxr-xr-x 3 fengwenjian staff 96B 9 29 15:50 slave2

  8. drwxr-xr-x 3 fengwenjian staff 96B 10 18 12:17 slave3

复制
  • MySQL的配置文件如下:

  1. docker_mysql_conf pwd

  2. /Users/fengwenjian/docker_mysql_conf

  3. docker_mysql_conf ll */my.cnf

  4. -rw-r--r--@ 1 fengwenjian staff 1.3K 10 19 14:31 master1/my.cnf

  5. -rw-r--r-- 1 fengwenjian staff 1.1K 10 19 14:32 master2/my.cnf

  6. -rw-r--r-- 1 fengwenjian staff 1.1K 10 19 14:32 master3/my.cnf

  7. -rw-r--r-- 1 fengwenjian staff 1.2K 9 29 15:49 slave1/my.cnf

  8. -rw-r--r-- 1 fengwenjian staff 1.2K 9 29 15:50 slave2/my.cnf

  9. -rw-r--r-- 1 fengwenjian staff 1.2K 10 18 12:17 slave3/my.cnf

  10. docker_mysql_conf

复制

具体每一个节点的配置文件,下面分别贴出各自my.cnf的内容

  • master1的my.cnf配置如下:

  1. docker_mysql_conf cat master1/my.cnf

  2. [mysqld]


  3. # 主服务器唯一ID,使用主机IP地址的最后一个域值来作为MySQL集群中的serverid

  4. server-id=11


  5. # 启用二进制日志

  6. log-bin=mysql-bin


  7. # 设置不要复制的数据库(可设置多个)

  8. #binlog-ignore-db=mysql

  9. #binlog-ignore-db=information_schema


  10. # 设置需要复制的数据库

  11. #binlog-do-db=test_slave


  12. # 设置logbin格式

  13. #binlog_format=STATEMENT

  14. binlog_format=row

  15. binlog_row_image=minimal


  16. # 在作为从数据库的时候,有写入操作也要更新二进制日志文件

  17. #log-slave-updates

  18. log_slave_updates=on


  19. # 表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535

  20. auto-increment-increment=2


  21. # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535

  22. auto-increment-offset=1


  23. # 数据库编码设置

  24. character-set-server=utf8mb4

  25. collation-server=utf8mb4_general_ci

  26. #collation-server=utf8mb4_unicode_ci


  27. # 开启记录日志位置的方式为表的方式,而不是使用文件的方式。

  28. master_info_repository=TABLE

  29. relay_log_info_repository=TABLE


  30. # 从库需要配置下面的选项

  31. #read_only=on


  32. # 慢查询日志

  33. slow_query_log=ON

  34. #log_output=table

  35. slow_query_log_file=/var/lib/mysql/master1-slow.log

  36. #slow_query_log_file=/opt/mysql-5.7.29/data/slow.log

  37. long_query_time=3


  38. # 配置从库同步数据的线程数

  39. slave_parallel_type='logical_clock'

  40. slave_parallel_workers=6


  41. docker_mysql_conf

复制

  • slave1的my.cnf配置如下:

  1. docker_mysql_conf cat slave1/my.cnf

  2. [mysqld]


  3. # 主服务器唯一ID,使用主机IP地址的最后一个域值来作为MySQL集群中的serverid

  4. server-id=12


  5. # 启用二进制日志

  6. #log-bin=mysql-bin


  7. # 设置不要复制的数据库(可设置多个)

  8. #binlog-ignore-db=mysql

  9. #binlog-ignore-db=information_schema


  10. # 设置需要复制的数据库

  11. #binlog-do-db=test_slave


  12. # 设置logbin格式

  13. #binlog_format=STATEMENT

  14. #binlog_format=row

  15. #binlog_row_image=minimal


  16. # 在作为从数据库的时候,有写入操作也要更新二进制日志文件

  17. #log-slave-updates

  18. #log_slave_updates=on


  19. # 表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535

  20. #auto-increment-increment=2


  21. # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535

  22. #auto-increment-offset=1


  23. # 数据库编码设置

  24. character-set-server=utf8mb4

  25. collation-server=utf8mb4_general_ci

  26. #collation-server=utf8mb4_unicode_ci


  27. # 开启记录日志位置的方式为表的方式,而不是使用文件的方式。

  28. master_info_repository=TABLE

  29. relay_log_info_repository=TABLE


  30. # 从库需要配置下面的选项

  31. read_only=on


  32. # 启用中继日志

  33. relay-log=mysql-relay



  34. # 配置从库同步数据的线程数

  35. slave_parallel_type='logical_clock'

  36. slave_parallel_workers=6


  37. docker_mysql_conf

复制

  • master2的my.cnf配置如下:

  1. docker_mysql_conf cat master2/my.cnf

  2. [mysqld]


  3. # 主服务器唯一ID,使用主机IP地址的最后一个域值来作为MySQL集群中的serverid

  4. server-id=21


  5. # 启用二进制日志

  6. log-bin=mysql-bin


  7. # 设置不要复制的数据库(可设置多个)

  8. #binlog-ignore-db=mysql

  9. #binlog-ignore-db=information_schema


  10. # 设置需要复制的数据库

  11. #binlog-do-db=test_slave


  12. # 设置logbin格式

  13. #binlog_format=STATEMENT

  14. binlog_format=row

  15. binlog_row_image=minimal


  16. # 在作为从数据库的时候,有写入操作也要更新二进制日志文件

  17. #log-slave-updates

  18. log_slave_updates=on


  19. # 表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535

  20. auto-increment-increment=2


  21. # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535

  22. auto-increment-offset=2


  23. # 数据库编码设置

  24. character-set-server=utf8mb4

  25. collation-server=utf8mb4_general_ci

  26. #collation-server=utf8mb4_unicode_ci


  27. # 开启记录日志位置的方式为表的方式,而不是使用文件的方式。

  28. master_info_repository=TABLE

  29. relay_log_info_repository=TABLE


  30. # 从库需要配置下面的选项

  31. #read_only=on


  32. # 配置从库同步数据的线程数

  33. slave_parallel_type='logical_clock'

  34. slave_parallel_workers=6


  35. docker_mysql_conf

复制

  • slave2的my.cnf配置如下:

  1. docker_mysql_conf cat slave2/my.cnf

  2. [mysqld]


  3. # 主服务器唯一ID,使用主机IP地址的最后一个域值来作为MySQL集群中的serverid

  4. server-id=22


  5. # 启用二进制日志

  6. #log-bin=mysql-bin


  7. # 设置不要复制的数据库(可设置多个)

  8. #binlog-ignore-db=mysql

  9. #binlog-ignore-db=information_schema


  10. # 设置需要复制的数据库

  11. #binlog-do-db=test_slave


  12. # 设置logbin格式

  13. #binlog_format=STATEMENT

  14. #binlog_format=row

  15. #binlog_row_image=minimal


  16. # 在作为从数据库的时候,有写入操作也要更新二进制日志文件

  17. #log-slave-updates

  18. #log_slave_updates=on


  19. # 表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535

  20. #auto-increment-increment=2


  21. # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535

  22. #auto-increment-offset=1


  23. # 数据库编码设置

  24. character-set-server=utf8mb4

  25. collation-server=utf8mb4_general_ci

  26. #collation-server=utf8mb4_unicode_ci


  27. # 开启记录日志位置的方式为表的方式,而不是使用文件的方式。

  28. master_info_repository=TABLE

  29. relay_log_info_repository=TABLE


  30. # 从库需要配置下面的选项

  31. read_only=on


  32. # 启用中继日志

  33. relay-log=mysql-relay



  34. # 配置从库同步数据的线程数

  35. slave_parallel_type='logical_clock'

  36. slave_parallel_workers=6


  37. docker_mysql_conf

复制

  • master3的my.cnf配置如下:

  1. docker_mysql_conf cat master3/my.cnf

  2. [mysqld]


  3. # 主服务器唯一ID,使用主机IP地址的最后一个域值来作为MySQL集群中的serverid

  4. server-id=31


  5. # 启用二进制日志

  6. log-bin=mysql-bin


  7. # 设置不要复制的数据库(可设置多个)

  8. #binlog-ignore-db=mysql

  9. #binlog-ignore-db=information_schema


  10. # 设置需要复制的数据库

  11. #binlog-do-db=test_slave


  12. # 设置logbin格式

  13. #binlog_format=STATEMENT

  14. binlog_format=row

  15. binlog_row_image=minimal


  16. # 在作为从数据库的时候,有写入操作也要更新二进制日志文件

  17. #log-slave-updates

  18. log_slave_updates=on


  19. # 表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535

  20. auto-increment-increment=2


  21. # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535

  22. auto-increment-offset=1


  23. # 数据库编码设置

  24. character-set-server=utf8mb4

  25. collation-server=utf8mb4_general_ci

  26. #collation-server=utf8mb4_unicode_ci


  27. # 开启记录日志位置的方式为表的方式,而不是使用文件的方式。

  28. master_info_repository=TABLE

  29. relay_log_info_repository=TABLE


  30. # 从库需要配置下面的选项

  31. #read_only=on


  32. # 配置从库同步数据的线程数

  33. slave_parallel_type='logical_clock'

  34. slave_parallel_workers=6


  35. docker_mysql_conf

复制

  • slave3的my.cnf配置如下:

  1. docker_mysql_conf cat slave3/my.cnf

  2. [mysqld]


  3. # 主服务器唯一ID,使用主机IP地址的最后一个域值来作为MySQL集群中的serverid

  4. server-id=32


  5. # 启用二进制日志

  6. #log-bin=mysql-bin


  7. # 设置不要复制的数据库(可设置多个)

  8. #binlog-ignore-db=mysql

  9. #binlog-ignore-db=information_schema


  10. # 设置需要复制的数据库

  11. #binlog-do-db=test_slave


  12. # 设置logbin格式

  13. #binlog_format=STATEMENT

  14. #binlog_format=row

  15. #binlog_row_image=minimal


  16. # 在作为从数据库的时候,有写入操作也要更新二进制日志文件

  17. #log-slave-updates

  18. #log_slave_updates=on


  19. # 表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535

  20. #auto-increment-increment=2


  21. # 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535

  22. #auto-increment-offset=1


  23. # 数据库编码设置

  24. character-set-server=utf8mb4

  25. collation-server=utf8mb4_general_ci

  26. #collation-server=utf8mb4_unicode_ci


  27. # 开启记录日志位置的方式为表的方式,而不是使用文件的方式。

  28. master_info_repository=TABLE

  29. relay_log_info_repository=TABLE


  30. # 从库需要配置下面的选项

  31. read_only=on


  32. # 启用中继日志

  33. relay-log=mysql-relay



  34. # 配置从库同步数据的线程数

  35. slave_parallel_type='logical_clock'

  36. slave_parallel_workers=6


  37. docker_mysql_conf

复制

准备虚拟网段

做这一步的原因主要是避免容器再次启动的时候,容器的IP地址变动导致,从而导致MySQL主从同步的时候出现主从节点混乱问题的发生。

一开始的时候我没有指定MySQL各个容器的IP地址和hostname,后来我验证mycat读写分离和自动切换的时候,不断的启动和停止MySQL的容器,导致同一个容器镜像重启的IP地址和第一次创建的时候IP地址不一致,进而导致MySQL主从复制的关系混乱了。所以在创建容器的时候,指定好每一个容器的IP地址和hostname。

  • 使用下面命令创建虚拟网段

  1. docker network create --subnet=172.19.0.0/24 mysql-cluster-network

复制

参数解释说明:

  1. --subnet=172.19.0.0/24:指定网段

  2. mysql-cluster-network:网段的名字

  • 使用下面命令查看网段内容:

  1. docker inspect mysql-cluster-network

  2. docker network ls

复制

  • 网段创建示例:

  1. docker_mysql_conf docker network ls

  2. NETWORK ID NAME DRIVER SCOPE

  3. c2c0f3ce99ae bridge bridge local

  4. 20a529083ab9 host host local

  5. e550bcb69d18 none null local

  6. docker_mysql_conf

  7. docker_mysql_conf docker network create --subnet=172.19.0.0/24 mysql-cluster-network

  8. 3192d3b2360eedf304023e616a7256254622031368d215146e6b28a09a11932f

  9. docker_mysql_conf

  10. docker_mysql_conf docker network ls

  11. NETWORK ID NAME DRIVER SCOPE

  12. c2c0f3ce99ae bridge bridge local

  13. 20a529083ab9 host host local

  14. 3192d3b2360e mysql-cluster-network bridge local

  15. e550bcb69d18 none null local

  16. docker_mysql_conf

复制

启动MySQL容器

使用docker run命令启动容器,具体命令参考如下。

  • 启动MySQL容器的命令如下:

  1. docker run --net=mysql-cluster-network --hostname master1.mysql --ip 172.19.0.11 --name mysql-master1 -d -v /Users/fengwenjian/docker_mysql_conf/master1:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3311:3306 mysql:5.7.31


  2. docker run --net=mysql-cluster-network --hostname slave1.mysql --ip 172.19.0.12 --name mysql-slave1 -d -v /Users/fengwenjian/docker_mysql_conf/slave1:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3312:3306 mysql:5.7.31


  3. docker run --net=mysql-cluster-network --hostname master2.mysql --ip 172.19.0.21 --name mysql-master2 -d -v /Users/fengwenjian/docker_mysql_conf/master2:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3321:3306 mysql:5.7.31


  4. docker run --net=mysql-cluster-network --hostname slave2.mysql --ip 172.19.0.22 --name mysql-slave2 -d -v /Users/fengwenjian/docker_mysql_conf/slave2:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3322:3306 mysql:5.7.31


  5. docker run --net=mysql-cluster-network --hostname master3.mysql --ip 172.19.0.31 --name mysql-master3 -d -v /Users/fengwenjian/docker_mysql_conf/master3:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3331:3306 mysql:5.7.31


  6. docker run --net=mysql-cluster-network --hostname slave3.mysql --ip 172.19.0.32 --name mysql-slave3 -d -v /Users/fengwenjian/docker_mysql_conf/slave3:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3332:3306 mysql:5.7.31

复制

  • 创建示例如下:

  1. docker_mysql_conf docker run --net=mysql-cluster-network --hostname master1.mysql --ip 172.19.0.11 --name mysql-master1 -d -v /Users/fengwenjian/docker_mysql_conf/master1:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3311:3306 mysql:5.7.31

  2. f3a642b89001be6c066c293721a4024dcc3ad4ebc65a4e3076ebfc0ec8077d6f

  3. docker_mysql_conf

  4. docker_mysql_conf docker run --net=mysql-cluster-network --hostname slave1.mysql --ip 172.19.0.12 --name mysql-slave1 -d -v /Users/fengwenjian/docker_mysql_conf/slave1:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3312:3306 mysql:5.7.31

  5. cb5c2dbb291b7e25756b4ed2b2851aa8ca4ac312992955db88454e46b0059b98

  6. docker_mysql_conf

  7. docker_mysql_conf docker run --net=mysql-cluster-network --hostname master2.mysql --ip 172.19.0.21 --name mysql-master2 -d -v /Users/fengwenjian/docker_mysql_conf/master2:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3321:3306 mysql:5.7.31

  8. 0756b65f118821f80cc396d4e80b7c7aa14c5a07a82637022a927dbef93e892e

  9. docker_mysql_conf

  10. docker_mysql_conf docker run --net=mysql-cluster-network --hostname slave2.mysql --ip 172.19.0.22 --name mysql-slave2 -d -v /Users/fengwenjian/docker_mysql_conf/slave2:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3322:3306 mysql:5.7.31

  11. 87e4940f6e2c8acafcdb42d673de2b55986870ebaaa779613480c5479dfaae6a

  12. docker_mysql_conf

  13. docker_mysql_conf docker run --net=mysql-cluster-network --hostname master3.mysql --ip 172.19.0.31 --name mysql-master3 -d -v /Users/fengwenjian/docker_mysql_conf/master3:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3331:3306 mysql:5.7.31

  14. 5841f97bc021358ab9d355521749d6c905a49ff6ac79e7617da910d8b1d6f1ef

  15. docker_mysql_conf

  16. docker_mysql_conf docker run --net=mysql-cluster-network --hostname slave3.mysql --ip 172.19.0.32 --name mysql-slave3 -d -v /Users/fengwenjian/docker_mysql_conf/slave3:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -e TZ="Asia/Shanghai" -p 3332:3306 mysql:5.7.31

  17. 8a54ec54de08f7c3fb5e8771ded7195d6593fbb633269a51f72e46f6c9970c71

  18. docker_mysql_conf

复制

  • 容器启动后的结果如下所示:

  1. docker_mysql_conf docker ps

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  3. 8a54ec54de08 mysql:5.7.31 "docker-entrypoint.s…" About a minute ago Up About a minute 33060/tcp, 0.0.0.0:3332->3306/tcp mysql-slave3

  4. 5841f97bc021 mysql:5.7.31 "docker-entrypoint.s…" About a minute ago Up About a minute 33060/tcp, 0.0.0.0:3331->3306/tcp mysql-master3

  5. 87e4940f6e2c mysql:5.7.31 "docker-entrypoint.s…" About a minute ago Up About a minute 33060/tcp, 0.0.0.0:3322->3306/tcp mysql-slave2

  6. 0756b65f1188 mysql:5.7.31 "docker-entrypoint.s…" About a minute ago Up About a minute 33060/tcp, 0.0.0.0:3321->3306/tcp mysql-master2

  7. cb5c2dbb291b mysql:5.7.31 "docker-entrypoint.s…" About a minute ago Up About a minute 33060/tcp, 0.0.0.0:3312->3306/tcp mysql-slave1

  8. f3a642b89001 mysql:5.7.31 "docker-entrypoint.s…" About a minute ago Up About a minute 33060/tcp, 0.0.0.0:3311->3306/tcp mysql-master1

  9. docker_mysql_conf

复制

  • 查看各个容器启动后的主机名称和IP地址,结果如下所示:

从下面的结果可以看出,每一个MySQL数据库实例的IP地址和主机名称和我们前面规划的IP地址和主机名称是可以对上的。

  1. docker_mysql_conf docker exec mysql-master1 /bin/cat /etc/hosts

  2. 127.0.0.1 localhost

  3. ::1 localhost ip6-localhost ip6-loopback

  4. fe00::0 ip6-localnet

  5. ff00::0 ip6-mcastprefix

  6. ff02::1 ip6-allnodes

  7. ff02::2 ip6-allrouters

  8. 172.19.0.11 master1.mysql master1

  9. docker_mysql_conf

  10. docker_mysql_conf docker exec mysql-slave1 /bin/cat /etc/hosts

  11. 127.0.0.1 localhost

  12. ::1 localhost ip6-localhost ip6-loopback

  13. fe00::0 ip6-localnet

  14. ff00::0 ip6-mcastprefix

  15. ff02::1 ip6-allnodes

  16. ff02::2 ip6-allrouters

  17. 172.19.0.12 slave1.mysql slave1

  18. docker_mysql_conf

  19. docker_mysql_conf docker exec mysql-master2 /bin/cat /etc/hosts

  20. 127.0.0.1 localhost

  21. ::1 localhost ip6-localhost ip6-loopback

  22. fe00::0 ip6-localnet

  23. ff00::0 ip6-mcastprefix

  24. ff02::1 ip6-allnodes

  25. ff02::2 ip6-allrouters

  26. 172.19.0.21 master2.mysql master2

  27. docker_mysql_conf

  28. docker_mysql_conf docker exec mysql-slave2 /bin/cat /etc/hosts

  29. 127.0.0.1 localhost

  30. ::1 localhost ip6-localhost ip6-loopback

  31. fe00::0 ip6-localnet

  32. ff00::0 ip6-mcastprefix

  33. ff02::1 ip6-allnodes

  34. ff02::2 ip6-allrouters

  35. 172.19.0.22 slave2.mysql slave2

  36. docker_mysql_conf

  37. docker_mysql_conf docker exec mysql-master3 /bin/cat /etc/hosts

  38. 127.0.0.1 localhost

  39. ::1 localhost ip6-localhost ip6-loopback

  40. fe00::0 ip6-localnet

  41. ff00::0 ip6-mcastprefix

  42. ff02::1 ip6-allnodes

  43. ff02::2 ip6-allrouters

  44. 172.19.0.31 master3.mysql master3

  45. docker_mysql_conf

  46. docker_mysql_conf docker exec mysql-slave3 /bin/cat /etc/hosts

  47. 127.0.0.1 localhost

  48. ::1 localhost ip6-localhost ip6-loopback

  49. fe00::0 ip6-localnet

  50. ff00::0 ip6-mcastprefix

  51. ff02::1 ip6-allnodes

  52. ff02::2 ip6-allrouters

  53. 172.19.0.32 slave3.mysql slave3

  54. docker_mysql_conf

复制
连接MySQL服务

在本地使用mysql命令来连接MySQL服务,测试是否可以正常连接到各个MySQL实例。各个MySQL服务实例,用端口号来区分开来。

  • 使用如下命令来连接MySQL服务

  1. # 登录master1

  2. mysql -uroot -proot -P3311 -h127.0.0.1

  3. # 登录slave1

  4. mysql -uroot -proot -P3312 -h127.0.0.1


  5. # 登录master2

  6. mysql -uroot -proot -P3321 -h127.0.0.1

  7. # 登录slave2

  8. mysql -uroot -proot -P3322 -h127.0.0.1


  9. # 登录master3

  10. mysql -uroot -proot -P3331 -h127.0.0.1

  11. # 登录slave3

  12. mysql -uroot -proot -P3332 -h127.0.0.1

复制

微信搜索“coder-home”或扫一扫下面的二维码, 关注公众号,第一时间了解更多干货分享,还有各类视频教程资源。扫描它,带走我。


文章转载自程序猿集锦,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论