备份MySQL脚本-shell版
发表于|更新于|基础运维
备份数据库, 并排除系统库, 使用 mysqldump
1 | #!/bin/bash |
文章作者: 张理坤
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
相关推荐
2025-07-24
解决MySQL 5.7在Redhat 9中启动报错:libncurses.so.5和libtinfo.so.5缺失问题
采用二进制安装 MySQL 服务的时候, 之前在 CentOS 7 系统中,直接 yum 安装依赖包就可以正常运行,但是到了 RHEL 9 系统下, 会报错找不到 libncurses.so.5, 根据经验需要查找一下这个库属于哪个包: 找不到这个包 不考虑版本,再次搜索 发现可以找到 6.2 的版本, 安装这个包 查看这个 rpm 包包含的文件: 此时需要做一个软链接(前提是此版本可以向后兼容,至少在 MySQL 5.7 这里运行是没问题的。) 修改完成,报另一个错误了: 同样的方法, 再创建一个软链接: 然后 MySQL 就可以正常运行了。
2025-01-07
常用shell组合命令
循环遍历{1..3} 这种格式 seq for 循环 while 循环 遍历列表 这个 list 也可以写成 list=(a b c) 这种形式 遍历换行字符串 条件判断shell条件判断 脚本里的交互命令修改密码 自动执行 fdisk 删除文件只保留最近 20 个 jar 版本 写入文件不处理变量 这样的可以处理变量 使用 sudo 写入 写入内容控制台看得见 tee -a 为追加, tee 前面可以加 sudo 或者 运行 5s 自动退出 脚本里获取目录或名字脚本里获取路径这种方法可能是绝对路径,也可能是相对路径: 绝对路径 脚本里获取脚本文件名 $0 在 bash 里表示执行脚本的命令,如 ./xx.sh 或 /opt/xxx.sh 批量启动服务 判断里面有变量,用双中括号 sudo 执行命令举个例子 截取文件名或路径名 去除字符串中间的空格 输入 yes 或 no 执行不同的选项 获取网卡 IP 获取网卡设备名 获取当前目录下的所有目录 使用 shell 生成随机 MAC 地址 以禁止登录的用户执...
2026-09-12
自动清理日志脚本
公司的业务服务会打日志到磁盘, 程序已经做了日志切割, 时间一长磁盘占满会导致业务异常, 普通的清理逻辑是使用 crontab 定时删除文件, 比如每天 1 点删除创建日期超过 30 天的日志文件, 大部分情况下工作是 OK 的, 但是执行周期太长, 如果当天日志暴增, 不能及时删除文件. 也会有隐患, 优化版脚本如下: 日志清理分以下几种: 历史日志, 并且未在写入的日志, 这种可以直接删除掉. 当前正在写入的日志, 需要清理, 这种不能删除, 可以通过清空文件的方式来释放空间 set -euo pipefail 的作用:set -e: 脚本中有任何一条命令执行失败, 整个脚本就失败set -u: 脚本中的变量有任何一个变量为空, 整个脚本执行失败-o pipefail: 脚本中的管道中任何一条命令执行失败, 也会认为脚本执行失败 脚本内容: 磁盘使用率低于 80% 不会执行操作, 所以可以缩短 crontab 执行的间隔, 我一般设置成 5 分钟检测一次, crontab 内容: 注意: crontab 最后需要保留一个空行

2025-03-24
java容器entrypoint.sh参数传递的隐藏陷阱
构建容器镜像对运维来说已经轻车熟路了,但是最近遇到个问题百思不得其解,准确的说就是手动执行 java -jar 带上所有参数,可以正常启动,但是打包成镜像就会报错: 先附上 entrypoint.sh Dockerfile: 看起来很正常对吧,但是启动报错: 查看控制台,echo 出来的 JAVA_CMD 变量也是正常的 中间排查过程忽略,最后增加了 set -x 参数后,重新打包镜像,再次查看控制台输出: 注意以 + 开头的输出 这里 java 启动命令是被解析成了单引号引用,所以造成无法启动。把 java 启动参数中的环境变量双引号去掉,可以正常启动了。 罪魁祸首:Shell 变量展开的分词机制问题的本质在于 Shell 脚本中变量展开时的参数分割规则。当我们使用 "$VAR" 这种带引号的写法时,变量值中的所有内容会被视为一个整体参数,即使其中包含空格也不会被分割。而 Java 虚拟机要求每个参数必须作为独立的命令行参数传递。
2025-07-24
MySQL常用操作记录
记录一下日常工作中常用到的 MySQL 语句和一些配置等,方便日后查询 用户授权相关创建用户 修改密码 授权 授权的同时修改密码 创建只读账号 创建业务账号 库相关建库 配置文件相关apt 安装的 mysql 配置文件在 /etc/mysql/mysql.conf.d/mysqld.cnf 初始化密码 ubuntu 系统通过 apt 安装的 mysql,需要切换到 root,然后执行 mysql 命令就可以登录(不用密码),对应的用户是 root@localhost当然也可以 cat /etc/mysql/debian.cnf 查看密码。 表名强制转换为小写仅适用于 MySQL 5.7 及以下版本,到了 8.0,只支持初始化时指定该参数,初始化之后,如果修改了该参数,启动就会报错。 配置文件在 [mysqld] 下面新增一行 可以通过执行 sql 查看是否设置成功 查看建库建表语句 binlog查看 binlog 状态 查看 binlog 模式 binlog 配置文件 排序 批量 kill 慢查询 自动 kill 慢 SQL 脚本,并记录...
2025-10-18
MySQL慢查询日志
慢 SQL 一般都是指慢查询 开启慢查询会带来一定的性能影响。参考: http://c.biancheng.net/view/7782.html 查询慢查询日志功能状态默认情况下,慢查询日志功能是关闭的。可以通过以下命令查看是否开启慢查询日志功能。命令和执行过程如下: slow_query_log: 慢查询开启状态slow_query_log_file: 慢查询日志存放的位置(一般设置为 MySQL 的数据存放目录)long_query_time: 查询超过多少秒才记录 启动和设置慢查询日志可以通过 log-slow-queries 选项开启慢查询日志。通过 long_query_time 选项来设置时间值,时间以秒为单位。如果查询时间超过了这个时间值,这个查询语句将被记录到慢查询日志。 修改配置文件方式将 log_slow_queries 选项和 long_query_time 选项加入到配置文件的 [mysqld] 组中。格式如下: 执行 sql 命令方式可以实时生效,无须重启 MySQL 删除慢查询日志慢查询日志的删除方法与通用日志的删除方法是一样的。可以使用 ...
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加博主微信,进微信运维技术交流群:

