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 &
相关推荐
Database_Cool_1 小时前
PB 级海量数据需要实时分析,应该选择什么数仓产品?阿里云 AnalyticDB MySQL 是首选
数据库·数据仓库·mysql·阿里云
AOwhisky1 小时前
MySQL 学习笔记(第二期):SQL 语言之库表操作与数据类型
linux·运维·数据库·笔记·sql·学习·mysql
学代码的真由酱1 小时前
MySQL数据库进阶-Java
数据库·mysql
学计算机的计算基2 小时前
MySQL 锁体系全解:从 MDL 到间隙锁,一次讲透
java·数据库·笔记·python·mysql
j7~2 小时前
MySQL C语言连接库和MYSQL连接池原理与简易数据网站数据流动是如何进行的
c语言·数据库·mysql·连接池·mysqlc语言连接库
2601_961194022 小时前
27考研刘晓燕资源
linux·sql·ubuntu·华为·pdf·.net
这个DBA有点耶11 小时前
云上运维新挑战:当数据库不再“看得见摸得着”
数据库·sql·程序人生·云原生·运维开发·学习方法·dba
九皇叔叔12 小时前
PostgreSQL/openGauss pg_stats 视图从入门到精通:统计信息、执行计划与慢 SQL 优化实战
数据库·sql·postgresql
南极企鹅13 小时前
MySQL间隙锁&临键锁
数据库·sql·mysql
l1t16 小时前
DeepSeek总结的使用 PEG 实现运行时可扩展的 SQL 解析器
数据库·sql