周末外面太冷,在家搞了下Prometheus的白屏化运维DEMO。目前只是把后端简单的几个接口搞出来,校验之类的还没加。。。这里先记录下。 后续等后端完成后,把前端也尝试写一下。重点:1、prometheus的target,是存在数据库里面的,只要符合一定的格式即可。 prometheus很早之前就支持了http接口方式动态target发现机制。格式类似这样:2、告警的rules,也是存在数据库里
使用python3.9+django4.1.2 开发程序,部署上线后,admin后台post修改操作有保错。提提示CSRF验证失败. 请求被中断看了下settings.py ,middleware中的csrf校验已经是关闭状态的MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.
MySQL和PG的数据校对
python发送邮件
在群里看到的一个Redis 快速删除数据 小技巧。之前我一直用scan出来再删方式,比较慢,不如本文下面这个方法。 造些测试数据 for i in {1..1000};do echo "set age_$i $i" | redis-cli -c -p 7000 ;done单机 查找数据(每行显示10条记录) redis-cli -c -p 7000 --scan --pattern "age_*"
官方文档https://docs.starrocks.io/zh-cn/latest/administration/deploy_with_docker在使用官方文档的安装的时候,遇到些问题(主要是jdk yum安装的版本变动导致的)。 我这里稍微优化了下,具体记录如下。准备好离线安装包mkdir /usr/local/starrocks -pvcd /usr/local/starrock
参考https://www.modb.pro/db/60164 在PG里面查看表结构,不如mysql那样show create table xx 这样方便。 在PG里面常用如下3种方法:第一种,最朴实的方法就是 pg_dump --schema-only 导出全部的表结构第二种,创建一个function,具体如下:CREATE OR
默认情况下,pt-kill (3.3.1版本) 的执行记录如果是输出到log文件的话,日志里面是不会带上 库名、客户端地址的,类似如下:我们可以简单修改下代码, 让其支持该属性的输出。$ cd /usr/bin/$ pt-kill --versionpt-kill 3.3.1$ cp pt-kill pt-kill_20221028_bak修改前: foreach my $quer
作者 Fander 芬达的数据库学习笔记 2022-09-16 08:00 发表于广东背景朋友业务上有一个需求:业务库 fanderdb 上有 10 张表,表名有规律,叫 fander_tb1、fander_tb2、fander_tb3... fander_tb10。他需要实现这些已存在的表对用户 fander@'192.168.199.%' 只读
coroot-pg-agent 和 postgres_exporter 的不同之处在于, coroot-pg-agent 主要是根据 pg_stat_statements 这个extension来采集sql维度的指标。 而 postgres_exporter 更关注的是metrics维度的指标。coroot-pg-agent 的部署也很简单,参考官方github即可。
说明: pgenv只能做到单机单实例PG。如果你要搞PG流复制等环境,需要多台机器上部署pgenv,然后各自启动一个PG实例。它做不到单机启动多个PG实例(从这点看的话 不如自行编译的PG 可以改改路径和端口随便启动多个实例出来)适用于临时起个测试实例。仓库地址:https://github.com/theory/pgenv部署很简单:su - postgres (不支持用root启动)
假设有个场景,数据库或者其它中间件的运行时文件句柄等参数设置过低,导致服务不可用或者间歇性不可用。 但是重启服务的代价可能很大,那么我们也可以不重启进程,做到修改某个进程的 limits范围。这里可以使用 prlimit 命令来实现。这里我以MySQL服务为例 $ ps auxf | grep -v grep | grep mysqld mysql 1204 1.3 3.4 7
原文: https://pythonspeed.com/articles/shell-scripts/作者:Itamar Turner-Trauring最后更新于 2022 年 3 月 24 日,最初创建于 2022 年 3 月 22 日当您自动化某些任务时,例如为 Docker 打包您的应用程序时,您经常会发现自己正在编写 shell 脚本。您可能有一个bash脚本来驱
常见的方法,直接把新的节点加入到现有的MongoDB集群中,让它自己去同步数据,这个方法最简单省事。但是,也会存在一些缺点:1、全量同步期间,集群的负载会变高,如果业务程序的read_timeout write_timeout 设置的比较低可能会有感知。对此可以调大业务程序链接mongodb的几个timeout参数。2、需要事先估算下oplog的大小,防止出现新的节点还处于全量同步的过程中,现有集
脚本加密
kettle 数据抽取
最近有套测试数据库需要从5.6迁移到8.x,用的是逻辑备份迁移方式。试了下pt-show-grants,发现它导出的账号授权语句在8.x里面不再那么好用了。因为8.x下用户和授权被拆分成了create user和grant 这2个步骤。工具不好直接搞,我们还可以用sql拼接下。1 获取待迁移的账号列表SELECT CONCAT('create user "',USER,'"@"',HOST,'";
今天同事过来问了个sql相关的问题。 为啥select查询条件中2个列,表上有2个单列索引,它执行计划走的其中一个索引,MySQL它这么做是有什么依据吗?这个问题,我们可以使用mysql的trace功能分析下看看。trace分析优化器如何选择执行计划 ,这个方法的缺点是必须真实的运行一次这个SQL才能获取分析结果案例:CREATE TABLE `tb1` (`id` bigint(20) unsi
最近有个业务数据变更的需求,要将1个已生成的500w记录写回到另一个表里面。 这里的需求比较简单,可以通过pt-archiver来做,也通过kettle之类工具来做。kettle的话比较重,可支持的数据整型功能也更强大。我这里是用kettle来搞的(复习下kettle,弄个demo,指不定后面有更复杂的业数据需求要找DBA介入) 配置JDBC连接的时候,建议加上字符集设定等几个参数:
DBeaver 日志这块做的还是不错的(免费产品还要啥自行车),其它产品要么不支持记录日志要么就比较费事。设置路径: 窗口 --> 首选项把能够勾选的全选上, 然后把日志存储的路径也改掉,改到非系统盘去。 设置完成后,重启下DBeaver使其生效。大致日志如下,可以看到我们对MySQL执行的加账号的操作都被记录在案了。
语法参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntaxhttps://lucene.apache.org/core/9_2_0/queryparser/org/apache/lucene/query
生产环境遇到几个YearningSQL平台触发的慢查询(该sql产生的笛卡尔积太大,出不来结果,研发在前端界面再次触发查询),最终把数据库的CPU拖高的情况。DBA紧急介入后,根据mysql服务器上show full processlist抓取到相关sql,执行时间已经超过120s。先记录下现场,然后kill掉相关query。query类似如下:select aa AS A列,bb as B列FR
下文 转自 爱可生开源社区 公众号, 作者:任坤1、背景某业务写多读少,上线前预估TPS最高可达4w且可能会随时增长,去年上线时采用了mongo 4分片集群架构。现在业务趋于稳定,日常TPS只有最高值的1/10不到,项目组出于成本考虑想要将其迁移到内存KV数据库,但是 redis纯内存模式机器成本有点高,经过调研后决定尝试360开源的pika。我们采用的是3.3.6版本,机器A配置为8c8G200
原创 陈臣MySQL实战 2021-08-14 23:00:59在使用MySQL的过程中,在存储字符串时,大家或许都有过这样或那样的困惑,譬如:对于固定长度的字符串,为什么推荐使用 CHAR 来存储?VARCHAR 可设置的最大长度是多少?给定一个字符串,怎么知道它的空间使用情况?创建索引时,提示“Index column size too large.
一个有趣的BUG老张的求知思考世界2022-06-11 13:40:55发表于上海编者荐语:软件测试有个经典的问题:说说你印象最深的一个BUG。这个问题其实考察的是并不是BUG有多复杂,而是你分析和排查的思路,以及最终的改进措施是否形成了有效的正向的反馈。以下文章来源于CKL的思考空间 ,作者CKL的思考最近在协助团队完成ES数据的切换(业务数据迁移),过程中遇到一个比较好玩的B
原文来自Percona Blog: https://www.percona.com/blog/migrating-to-utf8mb4-things-to-consider/utf8mb4字符集是 MySQL 8.0 的新默认字符集,此更改既不会影响现有数据,也不会强制进行任何升级。迁移到utf8mb4有很多优点,包括:它可以存储更多符号,包括表情符号它有针对亚洲语言的新排序规则
参考: http://redsymbol.net/articles/unofficial-bash-strict-mode/建议写法:#!/bin/bashset -e # 建议使用set -u # 强烈建议使用set -o pipefail # 建议使用IFS=$'\n\t' # 建议使用含义说明:set -e 设置该选项后,当脚本中任何以一个命令执行返回的状态码
前段时间,研发反馈个问题:一个新上的服务,在测试环境(MySQL5.6)跑的的好好的,发布到产线去(MySQL8.0.19) 运行不起来了,报错如下:运行异常的jdbc连接串写法:jdbc:mysql://test.mysql.db01:3306/sbtest?allowMultiQueries=true&useSSL=false&useUnicode=true&chara
写个笔记备忘下,防止后面再用到。直接配置下即可对应的SQL如下:SELECT $__timeGroupAlias(ts,$__interval), avg(metrics) AS "thread running"FROM t_thread_runningWHERE $__timeFilter(ts)GROUP BY 1ORDER BY $__timeGroup(ts,$__interval)
最近看到有些研发写代码jdbc的配置文件是MGR多个地址。出于好奇它是如何选择连接的,在节点故障的时候,又是如何failover的。于是有了下文的探索与发现。jdbc连接示例如下:spring.datasource.url=jdbc:mysql://mgr-01:3306,mgr-02:3306,mgr-03:3306/sbtest?useUnicode=true&characterEnc
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号