SQL执行后台脚本

SQL进程中断实验

我们操作数据库时,经常遇到数据导入等特别耗时的SQL操作,而关闭MySQL客户端或SSH终端,就会立马关闭SQL会话,导致SQL执行中断,如下实验:

  1. 在第一个SSH终端执行
shell 复制代码
# 进入Mysql客户端,模拟一个sleep(30)秒的耗时操作:
$ mysql -uroot
mysql> select sleep(30);
  1. 打开第二个SSH终端。查看Msql进程
shell 复制代码
$ mysql -uroot -e "SHOW PROCESSLIST";

+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
| Id  | User            | Host      | db   | Command | Time   | State                  | Info             |
+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
|   5 | event_scheduler | localhost | NULL | Daemon  | 230197 | Waiting on empty queue | NULL             |
| 180 | root            | localhost | NULL | Query   |      8 | User sleep             | select sleep(30) |
| 181 | root            | localhost | NULL | Query   |      0 | init                   | SHOW PROCESSLIST |
+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
  1. 关闭第一个SSH终端,再次执行第二步(查看Msql进程)。 发现sleep进程已关闭。

守护进程执行SQL

可以借助于nohup,在后台执行sql命令/脚本,格式如下:

sql 复制代码
nohup mysql -u用户名 -p密码 -e "YOUR_SQL" &
nohup mysql -u用户名 -p密码 < script.sql &

终端直接执行SQL语句

shell 复制代码
$ mysql -uroot -e "show databases";
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

$ mysql -uroot -e "select @@version";
+-----------+
| @@version |
+-----------+
| 8.3.0     |
+-----------+

nohup执行SQL

shell 复制代码
# 模拟一个耗时的SQL操作(sleep 10秒),然后将执行结果写入文件
$ nohup mysql -uroot -e "select sleep(10);select now() as complected;select 'SQL执行完毕' as result;" > nohup.txt 2>&1 &

# 验证结果
$ cat nohup.txt
nohup: ignoring input
sleep(10)
0
complected
2024-03-04 03:27:25
result
SQL执行完毕

nohup执行脚本

shell 复制代码
nohup mysql -h192.168.10.11 -uroot -p123456 < db.sql > nohup.txt 2>&1 &
相关推荐
迷枫71237 分钟前
SQL性能排查记录
java·数据库·sql
东风破_8 小时前
从输入 juejin.cn 到看到页面:DNS、Nginx、服务器集群与 CDN 到底在做什么?
后端·mysql
小成很成9 小时前
mysql 8.0.21 升级 mysql 8.0.45(经过生产环境验证)
android·mysql·adb
东风破_9 小时前
从 0 设计一个博客数据库:用户、头像与文章表应该怎么建?
后端·mysql
大模型码小白11 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
云计算DevOps-韩老师12 小时前
【MySQL运维DBA】【SQL基础系列002篇】
运维·mysql·dba
放风铃的兔子12 小时前
15 年 DBA 经验:MySQL 迁移到 KES,哪些东西真的不用改?
mysql
动力 continue14 小时前
MySQL 基础篇 · SELECT 查询大
数据库·sql·mysql·select
程序员-Benothing15 小时前
MySQL 索引下推是什么?——深入理解 ICP 原理与实践
android·数据库·mysql
JavaPub-rodert17 小时前
Ontop 详解:不搬数据库,也能把 MySQL / PostgreSQL 变成知识图谱
数据库·mysql·postgresql