一、上期回顾

每天半小时,轻松学Docker第十四篇:Docker Compose案例2-负载均衡Web网站开发与部署

二、案例 MariaDB主从服务部署

1、项目目录创建与初始化

创建~/dkcompose/mariadb-ms文件夹,并切入该目录:

rz@demo:~$ mkdir ~/dkcompose/mariadb-ms
rz@demo:~$ cd dkcompose/mysql-ms/
rz@demo:~/dkcompose/mysql-ms$

2、配置文件准备

在~/dkcompose/mysql-ms目录下先创建相关配置文件的空文件:

rz@demo:~/dkcompose/mysql-ms$ touch 50-server.cnf
rz@demo:~/dkcompose/mysql-ms$ touch compose.yaml
rz@demo:~/dkcompose/mysql-ms$ touch MDockerfile
rz@demo:~/dkcompose/mysql-ms$ touch SDockerfile
rz@demo:~/dkcompose/mysql-ms$ touch sources.list
rz@demo:~/dkcompose/mysql-ms$ tree
.
├── 50-server.cnf
├── compose.yaml
├── MDockerfile
├── SDockerfile
└── sources.list

1 directory, 5 files

其中,50-server.cnf是数据库db1的配置文件;compose.yaml是docker compose配置文件,定义了服务、容器及容器行为;MDockerfile用于构建db1服务的镜像,SDockerfile用于构建db2服务的镜像;sources.list是ubuntu:20.04的软件源配置,用于加速软件安装。

3、数据库主配置文件

编写数据db1的配置文件50-server.cnf文件,内容如下

[server]
[mysqld]
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
query_cache_size        = 16M
log_error = /var/log/mysql/error.log
server-id               = 2
log_bin                 = mysql-bin
expire_logs_days        = 10
binlog_ignore_db        = mysql
character-set-server    = utf8mb4
collation-server        = utf8mb4_general_ci
[embedded]
[mariadb]
[mariadb-10.3]

50-server.cnf是db1的主配置文件,其中定义了服务的端口、日志文件类型等配置。

4、Docker Compose编排配置

编写docker compose配置文件compose.yaml,内容如下:

services:
    db1:
        image: ubuntu:db1
        build:
            context: .
            dockerfile: MDockerfile
        networks:
            - db_network
        ports:
            - 33060:3306
    db2:
        image: ubuntu:db2
        build:
            context: .
            dockerfile: SDockerfile
        networks:
            - db_network
        ports:
            - 33061:3306

networks:
    db_network:
        driver: bridge

5、主数据库镜像构建配置

编写用于构建db1服务的镜像对应的MDockerfile文件:

FROM ubuntu:20.04

COPY sources.list /etc/apt

RUN apt-get update && apt-get dist-upgrade -y && \
     apt-get install mariadb-server -y

COPY 50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf

RUN /etc/init.d/mysql start \
               && mysql -u root -e "create user 'root'@'%' identified by '123456'" \
               && mysql -u root -e "grant all on *.* to 'root'@'%'"

EXPOSE 3306
CMD ["/usr/bin/mysqld_safe"]

6、从数据库镜像构建配置

编写用于构建db2服务的镜像对应的SDockerfile文件:

FROM ubuntu:20.04

COPY sources.list /etc/apt

RUN apt-get update && apt-get dist-upgrade -y \
                && apt-get install mariadb-server -y \
                && sed -i s/bind-address/#bind-address/g /etc/mysql/mariadb.conf.d/50-server.cnf \
                && /etc/init.d/mysql start \
                && mysql -u root -e "change master to master_host='db1', \
                       master_user='root',master_password='123456'" \
                && mysql -u root -e "start slave"
EXPOSE 3306
CMD ["/usr/bin/mysqld_safe"]

7、软件源配置

编写ubuntu:20.04的软件源配置sources.list文件:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

8、服务构建与启动

rz@demo:~/dkcompose/mysql-ms$ docker compose build
[+] Building 0.0s (0/1)                                                   docker:default
[+] Building 0.2s
 ✔ Service db1  Building                                                  0.2s
[+] Building 2.2s (18/18) FINISHED                                        docker:default
 => [db1 internal] load build definition from MDockerfile                  0.0s
 => => transferring dockerfile: 463B                                       0.0s
 => [db2 internal] load build definition from SDockerfile                  0.0s
 => => transferring dockerfile: 480B                                       0.0s
 => [db2 internal] load metadata for docker.io/library/ubuntu:20.04        2.1s
 => [db1 internal] load .dockerignore                                      0.0s
 => => transferring context: 2B                                            0.0s
 => [db2 internal] load .dockerignore                                      0.0s
 => => transferring context: 2B                                            0.0s
 => [db2 1/3] FROM docker.io/library/ubuntu:20.04@sha256:8feb4d8ca5354def3  0.0s
 => [db1 internal] load build context                                      0.0s
 => => transferring context: 67B                                           0.0s
 => [db2 internal] load build context                                      0.0s
 => => transferring context: 34B                                           0.0s
 => CACHED [db1 2/5] COPY sources.list /etc/apt                            0.0s
 => CACHED [db1 3/5] RUN apt-get update && apt-get dist-upgrade -y &&      0.0s
 => CACHED [db1 4/5] COPY 50-server.cnf /etc/mysql/mariadb.conf.d/50-serve  0.0s
 => CACHED [db1 5/5] RUN /etc/init.d/mysql start               && mysql -  0.0s
 => [db1] exporting to image                                               0.0s
 => => exporting layers                                                    0.0s
 => => writing image sha256:e9c9668cf0b88e5fa6d09739ab53379e540fda2543a8f9  0.0s
 => => naming to docker.io/library/ubuntu:db1                             0.0s
 => CACHED [db2 2/3] COPY sources.list /etc/apt                            0.0s
 => CACHED [db2 3/3] RUN apt-get update && apt-get dist-upgrade -y   && ap  0.0s
 => [db2] exporting to image                                               0.0s
 => => exporting layers                                                    0.0s
 => => writing image sha256:3bb4b6e5f24fdf5f3f26e224436f644adcb61beac78f74  0.0s
[+] Building 2/2 docker.io/library/ubuntu:db2                            0.0s
 ✔ Service db1  Built                                                     2.3s
 ✔ Service db2  Built                                                     2.3s

rz@demo:~/dkcompose/mysql-ms$ docker images
REPOSITORY   TAG             IMAGE ID       CREATED          SIZE
ubuntu       db1             e9c9668cf0b8   19 minutes ago   601MB
ubuntu       db2             3bb4b6e5f24f   19 minutes ago   487MB
...

rz@demo:~/dkcompose/mysql-ms$ docker compose up -d
[+] Running 2/0
 ✔ Container mysql-ms-db2-1  Running                                       0.0s
 ✔ Container mysql-ms-db1-1  Running                                       0.0s

rz@demo:~/dkcompose/mysql-ms$ docker compose ps
NAME             IMAGE        SERVICE   STATUS          PORTS
mysql-ms-db1-1   ubuntu:db1   db1       Up 20 minutes   ...:33060->3306...
mysql-ms-db2-1   ubuntu:db2   db2       Up 20 minutes   ...:33061->3306...

9、主从同步状态验证

运行mysql,使用端口33061登录数据库db2,查看主从服务状态:

rz@demo:~/dkcompose/mysql-ms$ mysql -h 127.0.0.1 -P33061 -uroot -p123456 -e "show slave status\G"
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: db1
                   Master_User: root
                   Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 342
               Relay_Log_File: mysqld-relay-bin.000004
                Relay_Log_Pos: 641
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
                             ...
       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
             Slave_DDL_Groups: 2
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 0

10、数据同步功能测试

使用端口33060登录数据库db1,创建数据库、数据表:

rz@demo:~/dkcompose/mysql-ms$ mysql -h 127.0.0.1 -P33060 -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.3.39-MariaDB-0ubuntu0.20.04.2-log Ubuntu 20.04

MariaDB [(none)]> create database student_manager;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> use student_manager;
Database changed
MariaDB [student_manager]> create table student(
    -> id int primary key auto_increment,
    -> name varchar(20)
    -> );
Query OK, 0 rows affected (0.008 sec)

MariaDB [student_manager]> insert into student values(null, 'zhangsan');
Query OK, 1 row affected (0.003 sec)

MariaDB [student_manager]> exit;
Bye

rz@demo:~/dkcompose/mysql-ms$ mysql -h 127.0.0.1 -P33061 -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.3.39-MariaDB-0ubuntu0.20.04.2 Ubuntu 20.04

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| student_manager    |
+--------------------+
4 rows in set (0.001 sec)

MariaDB [(none)]> use student_manager;
Database changed
MariaDB [student_manager]> select * from student;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
+----+----------+
1 row in set (0.001 sec)

11、服务停止与清理

rz@demo:~/dkcompose/mysql-ms$ docker compose down
[+] Running 3/3
 ✔ Container mysql-ms-db2-1     Removed                                    10.3s
 ✔ Container mysql-ms-db1-1     Removed                                    10.4s
 ✔ Network mysql-ms_db_network  Removed                                     0.3s

rz@demo:~/dkcompose/mysql-ms$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

rz@demo:~/dkcompose/mysql-ms$ cd

rz@demo:~$

三、案例 MariaDB读写分离服务部署

1、项目目录创建

rz@demo:~$ mkdir dkcompose/mysql-mycat
rz@demo:~$ cd dkcompose/mysql-mycat/
rz@demo:~/dkcompose/mysql-mycat$

2、配置文件初始化

rz@demo:~/dkcompose/mysql-mycat$ touch 50-server.cnf
rz@demo:~/dkcompose/mysql-mycat$ touch compose.yaml
rz@demo:~/dkcompose/mysql-mycat$ touch MDockerfile
rz@demo:~/dkcompose/mysql-mycat$ touch SDockerfile
rz@demo:~/dkcompose/mysql-mycat$ touch MycatDockerfile
rz@demo:~/dkcompose/mysql-mycat$ touch sources.list
rz@demo:~/dkcompose/mysql-mycat$ touch schema.xml
rz@demo:~/dkcompose/mysql-mycat$ touch server.xml
rz@demo:~/dkcompose/mysql-mycat$ touch supervisord.conf

3、MyCat程序文件准备

下载或拷贝Mycat的程序文件,可以从https://github.com/MyCATApache/Mycat-Server/releases下载,本示例所下载的文件名为Mycat-server-1.6.7.5-release-20200422133810-linux.tar.gz,为方便使用,重命名为Mycat-server-1.6.7.5.tar.gz。可以先使用笔记本或实验物理设备主机上的下载到本地,然后再通过MobaXterm工具等工具传至虚拟机服务器中。

rz@demo:~/dkcompose/mysql-mycat$ mv ~/Mycat-server-1.6.7.5.tar.gz .
rz@demo:~/dkcompose/mysql-mycat$ tree
.
├── 50-server.cnf
├── compose.yaml
├── MDockerfile
├── MycatDockerfile
├── Mycat-server-1.6.7.5.tar.gz
├── schema.xml
├── SDockerfile
├── server.xml
├── sources.list
└── supervisord.conf

1 directory, 10 files

4、数据库主配置文件

[server]
[mysqld]
user = mysql
pid-file = /run/mysqld/mysqld.pid
socket = /run/mysqld/mysqld.sock
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
query_cache_size = 16M
log_error = /var/log/mysql/error.log
server-id = 2
log_bin = mysql-bin
expire_logs_days = 10
binlog_ignore_db = mysql
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
[embedded]
[mariadb]
[mariadb-10.3]

5、Docker Compose编排配置

services:
  db1:
    image: ubuntu:db1
    build:
      context: .
      dockerfile: MDockerfile
    networks:
      - db_network
  db2:
    image: ubuntu:db2
    build:
      context: .
      dockerfile: SDockerfile
    networks:
      - db_network
  mycat:
    image: ubuntu:mycat
    build:
      context: .
      dockerfile: MycatDockerfile
    ports:
      - 8066:8066
      - 9066:9066
    networks:
      - db_network

networks:
  db_network:
    driver: bridge

6、主数据库镜像构建配置

编写用于构建db1容器的来源镜像的MDockerfile,内容如下:

FROM ubuntu:20.04

COPY sources.list /etc/apt

RUN apt-get update && apt-get dist-upgrade -y \
    && apt-get install mariadb-server -y

COPY 50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf

RUN /etc/init.d/mysql start \
    && mysql -u root -e "create user 'root'@'%' identified by '123456'" \
    && mysql -u root -e "grant all on *.* to 'root'@'%'" \
    && mysql -u root -e "create database student_manager" \
    && mysql -u root \
       -e "create table student_manager.student (\
       id int primary key auto_increment, name varchar(20))" \
    && mysql -u root -e "insert into student_manager.student values(null, 'zhangsan')"

EXPOSE 3306

CMD ["/usr/bin/mysqld_safe"]

7、从数据库镜像构建配置

编写用于构建db2容器的来源镜像SDockerfile,内容如下:

FROM ubuntu:20.04

COPY sources.list /etc/apt

RUN apt-get update && apt-get dist-upgrade -y \
    && apt-get install mariadb-server -y \
    && sed -i s/bind-address/#bind-address/g /etc/mysql/mariadb.conf.d/50-server.cnf \
    && /etc/init.d/mysql start \
    && mysql -u root -e "change master to master_host='db1', \
       master_user='root',master_password='123456'" \
    && mysql -u root -e "start slave"

EXPOSE 3306

CMD ["/usr/bin/mysqld_safe"]

8、MyCat代理镜像构建配置

编写用于构建mycat容器的来源镜像MycatDockerfile,内容如下:

FROM ubuntu:20.04

ADD sources.list /etc/apt

ADD Mycat-server-1.6.7.5.tar.gz /root

RUN apt-get update && apt-get dist-upgrade -y \
    && apt-get install openjdk-8-jdk -y \
    && mkdir /root/mycat/logs

RUN apt-get install supervisor -y

ADD schema.xml /root/mycat/conf

ADD server.xml /root/mycat/conf

ADD supervisord.conf /etc/supervisord.conf

CMD ["/usr/bin/supervisord"]

9、MyCat数据源配置

编写mycat的配置文件schema.xml,内容如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema>
<dataNode name="dn1" dataHost="localhost1" database="student_manager" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1" slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="hostM1" url="db1:3306" user="root" password="123456">
      <readHost host="hostS1" url="db2:3306" user="root" password="123456" />
    </writeHost>
</dataHost>
</mycat:schema>

10、MyCat服务配置

编写mycat的配置文件server.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="nonePasswordLogin">0</property>
<property name="ignoreUnknownCommand">0</property>
<property name="useHandshakeV10">1</property>
<property name="removeGraveAccent">1</property>
<property name="useSqlStat">0</property>
<property name="useGlobleTableCheck">0</property>
<property name="sqlExecuteTimeout">300</property>
<property name="sequenceHandlerType">1</property>
<property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>
<property name="subqueryRelationshipCheck">false</property>
<property name="sequenceHanlderClass">io.mycat.route.sequence.handler.HttpIncrSequenceHandler</property>
<property name="processorBufferPoolType">0</property>
<property name="handleDistributedTransactions">0</property>
<property name="useOffHeapForMerge">0</property>
<property name="memoryPageSize">64k</property>
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<property name="systemReserveMemorySize">384m</property>
<property name="useZKSwitch">false</property>
<property name="strictTxIsolation">false</property>
<property name="parallExecute">0</property>
</system>
<user name="root">
<property name="password">123456</property>
<property name="schemas">USERDB</property>
<property name="usingDecrypt">0</property>
</user>
</mycat:server>

11、软件源配置

编写ubuntu:20.04的软件更新源列表sources.list,内容如下:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

12、进程管理配置

编写supervisor程序的配置文件supervisord.conf,其中定义了启动mycat服务的指令,内容如下:

[supervisord]
nodaemon=true

[program:mycat]
command=/bin/bash /root/mycat/bin/mycat start

13、镜像构建过程

rz@demo:~/dkcompose/mysql-mycat$ docker compose build
[+] Building 0.0s (0/1)                                                     docker:default
[+] Building 0.1s
 ✔ Service db2    Building                                                  0.1s
 ✔ Service mycat  Building                                                  0.1s
[+] Building 0.7s (30/30) FINISHED                                          docker:default
 => [mycat internal] load build definition from MycatDockerfile             0.0s
 => => transferring dockerfile: 409B                                        0.0s
 => [db2 internal] load build definition from SDockerfile                   0.0s
 => => transferring dockerfile: 472B                                        0.0s
 => [db1 internal] load build definition from MDockerfile                   0.0s
 => => transferring dockerfile: 694B                                        0.0s
 => [mycat internal] load metadata for docker.io/library/ubuntu:20.04       0.3s
 => [db2 internal] load .dockerignore                                       0.0s
 => => transferring context: 2B                                             0.0s
 => [mycat internal] load .dockerignore                                     0.0s
 => => transferring context: 2B                                             0.0s
 => [db1 internal] load .dockerignore                                       0.0s
 => => transferring context: 2B                                             0.0s
 => [db2 1/5] FROM docker.io/library/ubuntu:20.04@sha256:8feb4d8ca5354def3  0.0s
 => [db1 internal] load build context                                       0.0s
 => => transferring context: 507B                                           0.0s
 => [mycat internal] load build context                                     0.3s
 => => transferring context: 23.22MB                                        0.3s
 => [db2 internal] load build context                                       0.0s
 => => transferring context: 34B                                            0.0s
 => CACHED [db1 2/5] COPY sources.list /etc/apt                             0.0s
 => CACHED [db1 3/5] RUN apt-get update && apt-get dist-upgrade -y && apt-  0.0s
 => CACHED [db1 4/5] COPY 50-server.cnf /etc/mysql/mariadb.conf.d/50-serve  0.0s
 => CACHED [db1 5/5] RUN /etc/init.d/mysql start && mysql -u root -e "crea  0.0s
 => [db1] exporting to image                                                0.0s
 => => exporting layers                                                     0.0s
 => => writing image sha256:58866fa3752d57de2800849a1c8dff7b9656a0642efcba  0.0s
 => => naming to docker.io/library/ubuntu:db1                              0.0s
 => CACHED [db2 2/3] COPY sources.list /etc/apt                             0.0s
 => CACHED [db2 3/3] RUN apt-get update && apt-get dist-upgrade -y && apt-  0.0s
 => [db2] exporting to image                                                0.0s
 => => exporting layers                                                     0.0s
 => => writing image sha256:4d2cb14c71c9d728b21abbbc26c6a4370ceec087e1f9c9  0.0s
 => => naming to docker.io/library/ubuntu:db2                              0.0s
 => [db1] resolving provenance for metadata file                           0.0s
 => [db2] resolving provenance for metadata file                           0.0s
 => CACHED [mycat 2/8] ADD sources.list /etc/apt                            0.0s
 => CACHED [mycat 3/8] ADD Mycat-server-1.6.7.5.tar.gz /root                0.0s
 => CACHED [mycat 4/8] RUN apt-get update && apt-get dist-upgrade -y && ap  0.0s
 => CACHED [mycat 5/8] RUN apt-get install supervisor -y                    0.0s
 => CACHED [mycat 6/8] ADD schema.xml /root/mycat/conf                      0.0s
 => CACHED [mycat 7/8] ADD server.xml /root/mycat/conf                      0.0s
 => CACHED [mycat 8/8] ADD supervisord.conf /etc/supervisord.conf           0.0s
 => [mycat] exporting to image                                              0.0s
[+] Building 3/3 layers                                                    0.0s
 ✔ Service db2    Built                                                     0.7s
 ✔ Service mycat  Built                                                     0.8s
 ✔ Service db1    Built                                                     0.7s

14、服务启动与状态检查

rz@demo:~/dkcompose/mysql-mycat$ docker compose up -d
[+] Running 3/0
 ✔ Container mysql-mycat-db2-1    Running                                   0.0s
 ✔ Container mysql-mycat-mycat-1  Running                                   0.0s
 ✔ Container mysql-mycat-db1-1    Running                                   0.0s

rz@demo:~/dkcompose/mysql-mycat$ docker compose ps
NAME                  IMAGE          SERVICE   STATUS          PORTS
mysql-mycat-db1-1     ubuntu:db1     db1       Up 31 minutes   3306/tcp
mysql-mycat-db2-1     ubuntu:db2     db2       Up 31 minutes   3306/tcp
mysql-mycat-mycat-1   ubuntu:mycat   mycat     Up 31 minutes   0.0.0.0:8066->8066/tcp, :::8066->8066/tcp, 0.0.0.0:9066->9066/tcp, :::9066->9066/tcp

15、读写分离功能验证

rz@demo:~/dkcompose/mysql-mycat$ mysql --default-auth=mysql_native_password -h 127.0.0.1 -P8066 -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-mycat-1.6.7.5-release-20200422133810 MyCat Server (OpenCloudDB)

MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| USERDB   |
+----------+
1 row in set (0.001 sec)

MySQL [(none)]> use USERDB;
Database changed

MySQL [USERDB]> show tables;
+---------------------------+
| Tables_in_student_manager |
+---------------------------+
| student                   |
+---------------------------+
1 row in set (0.002 sec)

MySQL [USERDB]> select * from student;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
+----+----------+
1 row in set (0.117 sec)

MySQL [USERDB]> insert into student values(null, 'lisi');
Query OK, 1 row affected (0.007 sec)

MySQL [USERDB]> select * from student;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+
2 rows in set (0.001 sec)

16、集群运行状态监控

rz@demo:~/dkcompose/mysql-mycat$ mysql --default-auth=mysql_native_password -h 127.0.0.1 -P9066 -uroot -p123456 -e "show @@datasource"
+----------+--------+-------+------+------+------+-----------+------------+
| DATANODE | NAME   | TYPE  | HOST | PORT | W/R  | READ_LOAD | WRITE_LOAD |
+----------+--------+-------+------+------+------+-----------+------------+
| dn1      | hostM1 | mysql | db1  | 3306 | W    |         0 |          2 |
| dn1      | hostS1 | mysql | db2  | 3306 | R    |         4 |          0 |
+----------+--------+-------+------+------+------+-----------+------------+

17、服务清理与资源释放

rz@demo:~/dkcompose/mysql-mycat$ docker compose down
[+] Running 4/4
 ✔ Container mysql-mycat-mycat-1   Removed                                 0.9s
 ✔ Container mysql-mycat-db1-1     Removed                                10.3s
 ✔ Container mysql-mycat-db2-1     Removed                                10.2s
 ✔ Network mysql-mycat_db_network  Removed                                 0.3s

rz@demo:~/dkcompose/mysql-mycat$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

rz@demo:~/dkcompose/mysql-mycat$ docker rmi $(docker images -q)
Untagged: ubuntu:mycat
Deleted: sha256:0e4b82f7cda0f272f95441efa4e5073ce1986e88824908c0951685b82a8b475e
Untagged: ubuntu:db1
Deleted: sha256:58866fa3752d57de2800849a1c8dff7b9656a0642efcba0d0b0faaf3a79efa48
Untagged: ubuntu:db2
Deleted: sha256:4d2cb14c71c9d728b21abbbc26c6a4370ceec087e1f9c984c0b4c24784a4f407

rz@demo:~/dkcompose/mysql-mycat$ docker volume prune
WARNING! This will remove anonymous local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
4d7221430214307ba0545a08a5f933e62c1475cadce7a4a97d4668ee1e5484aa
52c0288f57be24c192bdcc185c505d6b088191e6fda0157ae5d4c730430ddaff
9dd1245a25de9b8dc60f08bf4caefbe063b32a8d54384aed1267625c2e138857
f0d1f73b73defeeedde19e909113bba124c28511d912e95f33e55ef689f07348

Total reclaimed space: 814.4MB

rz@demo:~/dkcompose/mysql-mycat$ cd

rz@demo:~$

六、总结与预告

1、下节课程预告

每天半小时,轻松学Docker第十六篇:Docker Compose案例4-WordPress内容管理系统部署

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐