MySQL查询出所有没有主键的表
作者:May22Night链接:https://www.jianshu.com/p/f484c63e5c96 压缩版:1SELECT a.TABLE_SCHEMA,a.TABLE_NAME FROM (SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema','sys','sysdb')) as a LEFT JOIN (SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE='PRIMARY KEY' AND TABLE_SCHEMA NOT...
在Windows下实现一个快速转换音乐格式的小工具
搞点歌在车里听,但是早年 10w 的合资车只能听 mp3 格式,所以把需要我珍藏的音乐转换成 mp3 拷进 U 盘, 转换格式工具当然是选择 ffmpeg 了。搜了下命令是: 1ffmpeg -i xxx.flac -acodec libmp3lame xxx.mp3 接下来需要做一个稍微自动化一点的工具,比如把 flac 文件拖放到 bat 脚本上,就能实现自动转换格式。 完整脚本如下: 12chcp 65001ffmpeg -i "%~s1" -acodec libmp3lame "%~dp0%~n1.mp3" 其中 chcp 65001 是为了防止 bat 脚本中包含中文导致的乱码。申明脚本编码为 UTF-8, 脚本保存的时候也要以 UTF-8 编码保存, 如果不加 chcp 65001, 那么需要使用 windows 记事本打开重新保存编码选择 ANSI, 因为 cmd 默认的编码就是 GBK 以下是一些常用的代码页。 代码页 说明 65001 UTF-8 代码页 950 繁体中文 936 简体中文默认...
WSL2 - Ubuntu配置记录
WSL 防火墙规则1New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow 基础环境配置更换源使用中科大的源: https://mirrors.ustc.edu.cn/help/ubuntu.html 12345# 老版本Ubuntu# sudo sed -i 's@//.*.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list# Ubuntu 24 及以上sudo sed -i 's@//.*.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list.d/ubuntu.sources 安装常用的包12sudo apt update && sudo apt upgrade -ysudo apt...
Linux终端复用器Screen和tmux
参考阮一峰的博客https://www.ruanyifeng.com/blog/2019/10/tmux.html 作用想象一下, 我在自己电脑远程 SSH 连接服务器, 正在命令行执行 mysqldump, 突然 (断网\电脑蓝屏) 了, 那么终端就断了, mysqldump 也就断了, 就需要重新来过. 终端复用器就是创建一个虚拟的终端, 可以挂在后台, 随时想进就进, 还有其他好用的功能, 比如将终端日志保存到文件内. 常用的工具有 tmux 和 screen, tmux 类似于 screen, 但是功能更强大, screen 的记录日志功能很好用, 两者各有千秋. 另外终端复用器对 rz/sz 这种工具的兼容性都不好, 建议不要用来进行 rz/sz 传文件 tmux安装12345# centosyum install -y tmux# ubuntuapt-get install -y tmux 快速使用输入 tmux 即可启动, 在终端下面有一条状态栏, 显示当前的终端编号. 退出输入: exit 或者按下 Ctrl + d 或者直接关闭窗口查看后台运行的会话:...
Jenkins pipeline中正确使用git
看到很多 jenkins 使用都是直接执行 git clone 命令, 这么做有以下几个缺点. 需要耗费时间去处理 git 分支, 代码冲突等工作, 还需要判断是使用 git clone 还是 git pull 账号密码 (或者 ssh 秘钥) 需要存储在构建机器上, 如果更换了构建节点, 那么需要重新配置, 即对构建环境有依赖, 构建环境是个黑盒子, 因为你不知道上个维护者在这台构建机器上做了什么. 不受 jenkins 管理, 比如删除流水线, 拉取的代码任然存在机器上 做个分支选项框是个痛苦的事情将代码交给 jenkins 管理则省去了这些操作. 使用凭据管理账号密码在 系统管理 – 凭据 – 系统 – 全局凭据 里面增加一个新的凭据 成功后记录一下 ID 编写流水线1234567891011121314151617pipeline { agent any parameters { gitParameter branch: '', branchFilter: '.*',...
Jenkins升级插件引发的血案
我们公司用的 jenkins 是老版本, 不知道什么时候谁点了升级插件, 但是没有重启 jenkins, 一直用者好好的, 突然有一天有个倒霉蛋重启了 jenkins,然后就报错了. 搜索了一圈的解决方案:关闭认证, 配置文件在 .jenkins/config.xml 目录中, 需要先切换到 jenkins 用户, 先备份 cp .jenkins/config.xml{,.bak} 然后再修改 将 authorizationStrategy 这一块改为 123<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"> <denyAnonymousReadAccess>false</denyAnonymousReadAccess></authorizationStrategy> 将 securityRealm 块 删除, 保存后重启 jenkins,...
记录一次生产环境数据库迁移
迁移要求不要清理目标数据 迁移是老环境迁移到新环境, 新环境之前有过使用记录了, 要求不删除现有的数据, 将老数据导入。有以下几个问题: 导出的 sql 里面不能带 drop table 语句,所以在 mysqldump 的时候需要加上 --skip-add-drop-table 参数 主键或唯一键重复的问题,需要增加参数 --skip-extended-insert sql 执行失败了需要继续, 因为现有数据可能和老环境冲突, 所以插入失败不能影响其他数据的插入, 这里选择在 mysql 控制台执行 source 命令。 备份源数据库1mysqldump -h192.168.21.26 -P3306 -uroot -p<password> --skip-add-drop-table --skip-extended-insert --databases test_database > test.sql –skip-add-drop-table 这个参数为了不在 sql 文件里面增加 drop 语句,不加的话,执行这个 sql...
mac下实现快速登陆带有两步验证的ssh跳板机
我们有个堡垒机当前的登陆流程是: ssh username@ip -p port –> 输入密码 –> 打开手机 –> 查看两部验证码 –> 输入 –> 连接成功 解决输入密码的问题mac 因为安全问题使用 brew 已经无法安装 sshpass 这个包了, 我们可以使用 ssh key 来进行免密登陆并提高安全性。不同的跳板机平台设置方式不太一样,一般都是在个人信息设置里面增加 ssh 公钥。 输入密码还可以用一个叫 tssh 的开源工具来实现(兼容 openssh 且支持 lrzsz) 解决输入两步验证码的问题两步验证码就是 TOTP,基于生成的 6 位数字, 30s 更换一次, 我们需要先拿到 TOTP 的 seed, 一般都会给一个二维码,用二维码解析工具解析, 解析出来的内容大致类似于: 1otpauth://totp/Microsoft:iuxt@outlook.com?secret=XUHHW5TKKTYGMJYM&issuer=Microsoft secret= 后面的内容就是 TOTP 的...
使用echo server测试ingress-nginx服务
这个是 灰度的方案 创建正式环境的服务1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677# DeploymentapiVersion: apps/v1kind: Deploymentmetadata: name: production labels: app: productionspec: replicas: 1 selector: matchLabels: app: production template: metadata: labels: app: production spec: containers: - name: production image:...
Prometheus标签处理
元标签在被监控端纳入普罗米修斯里面定义了一些元数据标签在 Prometheus 所有的 Target 实例中,都包含一些默认的 Metadata 标签信息。可以通过 Prometheus UI 的 Status 里面的 Service Discovery 查看 Metadata 标签 说明 address 当前 Target 实例的访问地址 host:port scheme 采集目标服务访问地址的 HTTP Scheme,HTTP 或者 HTTPS metrics_path 采集目标服务访问地址的访问路径 上面这些标签将会告诉 Prometheus 如何从该 Target 实例中获取监控数据。除了这些默认的标签以外,我们还可以为 Target 添加自定义的标签。 元标签是不会写到数据库当中的,使用 promql 是查询不到这些标签的,如果需要源标签的数据(比如 k8s 部署的 Prometheus 使用自动发现获取 pod 监控),这个时候就需要把一些元标签重新打标签来使用。 比如上图,监控 k8s 的 pod 状态, 因为 pod 是动态的,所以需要...