背景:在数据库中对象与对象之间存在一定的依赖关系,例如继承表之间的依赖,视图与基表的依赖,主外键的依赖,序列的依赖等等。在删除对象时,数据库也会先检测依赖,如果有依赖,会报错,需要使用cascade删除。另外一方面,如果需要重建表,使用重命名的方式是有一定风险的,例如依赖关系没有迁移,仅仅迁移了表是不够的。所以迁移,通常使用的是增量迁移数据,同时使用替换filenode的方式更加靠谱,依赖关系不变
TiDB Syncer不同表名库名同步且支持pt-osc改表mysql端库名叫sysbench, 表名sbtest11tidb端库名ptosc_sysbench,表名ptosc_sbtest11执行的pt-osc命令#pt-online-schema-change --ask-pass --check-interval=1 --no-check-replication-filters --no-c
对于pxc, 为了避免流控, 可以在导入.sql文件时, 先对文件做处理awk '1;NR%1000==0{print "select sleep(1);"}' xxx.sql > xxx_dba.sql上面的命令每1000行增加一行select sleep(1);, 这样执行频率是1k/s对于mysqldump产生的sql文件, 则需要在导出是指定mysqldump --skip-
作者:杨奇龙网名“北在南方”,资深 DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。一 介绍本章内容通过一个例子说明 replace into 带来的潜在的数据质量风险,当涉及 replace into 操作的表含有自增主键时,主备切换后会造成数据覆盖等不一致的情况发生。二 案例分析在主库上操作root@test 12:36:51>show
内容来源 https://help.aliyun.com/document_detail/281785.html做了少量的精简1 客户端连接池 使用绑定变量(PreparedStatement),消除数据库SQL硬解析CPU消耗,对性能提升巨大。 减少idle connection数量。可以降低RDS PostgreSQL连接内存占用,并提升GetSnapshotData()效率,
使用Python写了个最基本的表结构比对告警脚本, 目前这个版本只能做到发现表结构存在差异的表。后续考虑再迭代下,看如何把差异的表和列的明细也报出来。configs.py 内容如下:# MySQL数据源的信息mysql_source_host = "localhost"mysql_source_port = "3306"mysql_source_user = "dts"mysql_source_p
MySQL版本信息和sql_mode[sb1]> \s--------------mysql Ver 8.0.29 for Linux on x86_64 (MySQL Community Server - GPL)Connection id: 21Current database: sb1Current user: root@localhostSSL: Not i
原文 https://mp.weixin.qq.com/s/96Dc--hKB9nJQXjitPJNGQ下面是节选部分主要内容。Oracle开发者学习资源https://github.com/oracleGitHub无疑是开发者最常使用的网站之一,Oracle GitHub也是Oracle产品针对开发者非常重要的渠道和窗口。目前Oracle在GitHub上提供了264个资
1、发行版Chrome的改版有很多,除官方Chrome外,个人更喜欢国内改版的 Cent Browser 百分浏览器, 比原生的多了些功能(最喜欢它的鼠标手势)。2、插件推荐AdGuard , 广告拦截,强烈推荐ChromeKeePass ,对接本地KeePass本地密码本,推荐Chrono下载管理器,推荐Clutter Free - Prevent duplicate tabs
火狐浏览器默认总是把链接在当前页面打开,覆盖了原来内容,导致找之前在看的东西很不方便。。。估计由于装了最新版火狐浏览器的原因,之前好用的方法,如安装 open-link-with-new-tab,tab mix 等插件,现在都没用了,貌似只能手动修改了。解决方法:以下方法可以使绝大多数链接在新标签页打开(书签、搜索结果、网页上的URL链接等):打开一个新标签页,地址栏输入about:config分
1、reindex的速率极慢,是否有办法改善? 问题1:reindex和snapshot的速率极慢,是否有办法改善? reindex和snapshot的速率比用filebeat或者kafka到es的写入速率慢好几个数量级(集群写入性能不存在瓶颈),reindex/snapshot的时候CPU还是IO使用率都很低,是不是集群受什么参数限制了reindex和snapshot的速率? reindex不管
周末外面太冷,在家搞了下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
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号