Mac shell 指令 修改文本最后一行的 , 换成 ;
你可以使用以下命令来修改文本文件中最后一行的逗号(,)为分号(;): sed '$ s/,$/;/' file.txt > temp.txt && mv temp.txt file.txt 这个命令使用sed工具,它在给定的文本文件中进行替换操作。具体步骤如下: $表示匹配最后一行。 s/,$/;/表示将逗号(,)替换为分号(;)。 file.txt是要修改的文本文件名。 命令执行后,它将生成一个临时文件temp.txt,其中修改了最后一行的逗号为分号。然后,使用mv命令将临时文件重命名为原始文件file.txt,以完成修改。 请注意,在运行这个命令之前,请备份你的文件以防万一。 直接修改 : 你可以使用以下命令直接修改文本文件中最后一行的逗号(,)为分号(;): echo "$(head -n -1 file.txt),;" > file.txt 这个命令使用了命令替换(command substitution)的方式。具体步骤如下: head -n -1 file.txt用于获取除了最后一行之...
安装笔记:在CentOS上安装pt-online-schema-change
$ yum -y install perl perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-Digest-MD5 到 https://www.percona.com/downloads/percona-toolkit/LATEST/ 下载并安装: # wget https://www.percona.com/downloads/percona-toolkit/3.1.0/binary/redhat/7/x86_64/percona-toolkit-3.1.0-2.el7.x86_64.rpm# rpm -ivh percona-toolkit-3.1.0-2.el7.x86_64.rpmwarning: percona-toolkit-3.1.0-2.el7.x86_64.rpm : Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEYerror: Failed dependencies: perl(DBD::mysql) &...
Mac 安装 brew
要在 macOS 上安装 Homebrew(常简称为 Brew),请按照以下步骤进行操作: 打开终端:你可以在 macOS 中的“应用程序”文件夹中找到“终端”应用程序。双击打开它。 安装 Homebrew:在终端中,粘贴或输入以下命令,然后按回车键执行: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 这将下载并运行安装脚本。在此过程中,可能需要输入你的 macOS 用户密码。 等待安装完成:安装过程可能需要一些时间,具体时间取决于你的网络连接和计算机速度。 验证安装:安装完成后,可以通过运行以下命令来验证 Homebrew 是否正确安装: brew doctor 如果一切正常,它应该显示 “Your system is ready to brew” 或类似的消息,表示 Homebrew 安装成功。 现在,你已成功在 macOS 上安装了 Homebrew。你可以使用 Homebrew 来安装各种软件包、工具...
[踩坑] 解决nginx反向代理proxy不能转发header报头
今天发现生产环境自定义透传字段 头部转发IP, 错误. 观察了下 获取IP 方式并没有问题. 开发环境ok 的. 区别在于开发环境是直连的, 而生产是 Nginx Proxy server { listen 8080; server_name localhost; access_log /data/log/nginx/asset-access.log main; error_log /data/log/nginx/asset-error.log error; location / { set $mode "test"; if ($request_uri ~* xxxx=([0-9a-z]+)) { set $mode $1; } proxy_pass http://swoole_a...
Mysql 在线改表工具 PT-Online-Schema-Change
pt-online-schema-change英文描述是: ALTER tables without locking them,即在线改表。 工具下载地址 : https://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html 使用场景在 mysql 5.6 版本以前,修改表结构如添加索引、修改列,需要锁表,期间不能写入,对于一个有几千万数据的大表来说,这个简直不能接收,对于分秒必争的互联网时代,服务中断很长时间的后果是很严重的。 升级 Mysql 到5.6 版本后,情况会好转,支持online-DDL, 但是实际在Alter表的时候,还会有可能锁表。 pt-online-schema-change是Percona-toolkit一员, 支持在不锁表的情况下,在线改表。 PT-OSC 工作流程 创建一个和要执行 alter 操作的表一样的新的空表,后缀默认是new。 在新表执行alter table 语句,因为是空表,执行速度很快。 在原表中创建触发器3个触发器分别对应insert,u...
Mysql 在线执行 DDL 语句不造成长时间锁表的工具.
记录一下 , 之前生产环境生成大量冷数据, 需要切走. 切走后delete 产生很多 内存碎片. 正常是需要停服运行 碎片整理 释放内存. 咨询了下DBA同学 , 说是有在线就可以整理内存碎片的工具. 我没细问DBA同学, 隔天问了下 ChatGPT, 推荐了三个工具 pt-online-schema-change:这是Percona Toolkit提供的一个工具,用于在线执行DDL语句而不会造成长时间的锁表。它会创建一个临时表来进行表结构变更,并在后台逐步复制数据,最后切换到新表。 gh-ost:这是GitHub开源的一个工具,用于在线执行DDL语句而不会造成长时间的锁表。它使用了类似pt-online-schema-change的原理,通过创建临时表和后台数据复制来实现无锁操作。 Percona Online Schema Change for MySQL:这是JetBrains提供的一个工具,用于在线执行DDL语句而不会造成长时间的锁表。它通过创建临时表、在后台复制数据并使用MySQL事件来实现无锁操作 DBA 推荐常用 第一个
MySQL 性能优化:碎片整理
MySQL 碎片是什么MySQL 碎片就是 MySQL 数据文件中一些不连续的空白空间,这些空间无法再被全部利用,久而久之越来多,越来越零碎,从而造成物理存储和逻辑存储的位置顺序不一致,这就是碎片。 碎片是如何产生的delete 操作在 MySQL 中删除数据,在存储中就会产生空白的空间,当有新数据插入时,MySQL 会试着在这些空白空间中保存新数据,但是呢总是用不满这些空白空间。所以日积月累,亦或是一下有大量的 delete 操作,一下就会有大量的空白空间,慢慢的会大到比表的数据使用的空间还大。 update 操作在 MySQL 中更新数据,在可变长度的字段(比如 varchar)中更新数据,innodb 表存储数据的单位是页,update 操作会造成页分裂,分裂以后存储变的不连续,不规则,从而产生碎片。比如说原始字段长度 varchar(100),我们大量的更新数据长度位为 50,这样的话,有 50 的空间被空白了,新入库的数据不能完全利用剩余的 50,这就会产生碎片。 碎片到底产生了什么影响MySQL 既然产生了碎片,你可能比较豪横说磁盘空间够大,浪费空间也没事,但是这...
MySQL 查询数据库表内存大小
当需要查询 MySQL 数据库表的内存大小时,可以使用以下步骤: 查询 MySQL 数据库表内存大小 登录到 MySQL 数据库: mysql -u username -p 选择要查询的数据库: USE database_name; 运行以下查询语句,以获取表的内存大小: SELECT table_name AS "Table", round(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"FROM information_schema.tablesWHERE table_schema = 'database_name' AND table_name = 'table_name'; 确保将 database_name 替换为实际的数据库名称,table_name 替换为要查询的表名。 这个查询语句将返回指定表的内存大小(数据长度 + 索引长度),以 MB 为单位。 结论通过以上步骤,...
Linux fork: retry: No child processes
记录一下今天踩的坑. 同事构建了一个服务后到开发环境, 之后整台服务器就一直抛错, CPU狂飙, 16核的机器负载上到 七八百.发现问题后, 第一时间将开发环境 superver 服务 stop all.全部停止后发现 让然存在很多子进程未杀死 ps -ef |grep -i swoole |awk '{print $2}' |xargs kill -9 全部swoole 进程杀死后,等待1分钟 , top 检测负载降了下来. 重启服务. supervisorctl start all 重启后查看 supervisorctl status , 一直存在部分服务重启失败. 嘿嘿, 抛错 fork: retry: No child processes 查看 ulimit -a , max user processes (-u) 4096 很明显 dev1 开发账户控制的进程数超出上限了. ulimit -u 10000 果然, 执行指令 就ok了, 不在抛错了.
Mysql 查询主键未指定排序时的默认排序问题
跑批量任务需要分批按顺序把主键取出来,语句如下: SELECT id FROM foo.bar LIMIT 10 OFFSET 0+-----+| id |+-----+| 109 || 13 || 14 || 15 || 128 || 129 || 130 || 190 || 226 || 227 |+-----+ 发现虽然用主键去查,但结果没有按照主键排序。 查询*试试 SELECT * FROM foo.bar LIMIT 10 OFFSET 0+----+-------+---+| id | a | b |+----+-------+---+| 1 | 24274 | 0 || 2 | 24274 | 0 || 3 | 24274 | 0 || 4 | 24274 | 0 || 5 | 24274 | 0 || 6 | 24274 | 0 || 7 | 24274 | 0 || 8 | 24274 | 0 || 9 | 24274 | 0 || 10 | 24274 | 0 |+----+-------+---+ 排序按照主键。查...



