Docker部署数据库以及事件调度器功能使用

本文为博主独立完成的原创技术文档,首发于个人博客。
转载须知:
✅ 欢迎分享本文链接至技术群、朋友圈
✅ 个人收藏、学习使用不限
❌ 严禁洗稿、抄袭,或未经授权的商业转载/汇编
📩 如需转载至其他平台,请私信联系博主获取授权

作者:赵俊杰

一.文章概述

dokcer环境配置国内镜像源,拉取mysql镜像,启动mysql,创建表,创建数据,在容器中每分钟创建一次数据。

二.Docker部署mysql

2.1 配置docker镜像源

配置docker镜像源:(连接国内镜像源)

[root@node1 ~]# cat /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ],
  "exec-opts": [
    "native.cgroupdriver=systemd"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
[root@node1 ~]#

重启docker服务:

[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl restart docker.service

2.2 部署mysql环境

部署mysql环境:

docker run -d --name mysql-db --net=host -e MYSQL_ROOT_PASSWORD=Root@123456 mysql:8.0

进入容器:

docker exec -it mysql-db mysql -uroot -pRoot@123456

创建数据库:

CREATE DATABASE test_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

使用库:

USE test_db;

创建表:

CREATE TABLE t_user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    age INT
);

打开事件调度器:

SET GLOBAL event_scheduler = ON;

-- 创建存储过程:一次性插入3条随机不重复数据
DELIMITER //
CREATE PROCEDURE proc_insert_3user()
BEGIN
    INSERT INTO t_user(username,age) VALUES
        (CONCAT('user_',FLOOR(RAND()*100000)), FLOOR(RAND()*60+18)),
        (CONCAT('user_',FLOOR(RAND()*100000)), FLOOR(RAND()*60+18)),
        (CONCAT('user_',FLOOR(RAND()*100000)), FLOOR(RAND()*60+18));
END //
DELIMITER ;

-- 创建定时事件:每1分钟执行一次,调用存储过程,永久生效
CREATE EVENT IF NOT EXISTS evt_insert_user
ON SCHEDULE EVERY 1 MINUTE
STARTS NOW()
DO CALL proc_insert_3user();

-- 看事件是否启用
SHOW EVENTS\G

-- 看表数据,等待1分钟观察数据上涨
SELECT * FROM t_user;
-- 停止定时事件
ALTER EVENT evt_insert_user DISABLE;

-- 重新开启
ALTER EVENT evt_insert_user ENABLE;

-- 删除事件
DROP EVENT IF EXISTS evt_insert_user;

-- 删除存储过程
DROP PROCEDURE IF EXISTS proc_insert_3user;

虽然前方拥堵,但您仍在最优路线上

posted @ 2026-09-21 18:05  超级喜欢下雨天  阅读(8)  评论(0)    收藏  举报