且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

分享几个实用的技巧

更新时间:2022-07-01 20:46:34

1. 重建rpmdb

有时候rpm数据库偶尔发生损坏,无法安装新rpm包:

rpmdb: Thread/process 21721/140622824318880 failed: Thread died in Berkeley DB library                
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery                
error: cannot open Packages index using db3 -  (-30974)                
error: cannot open Packages database in /var/lib/rpm                
rpmdb: Thread/process 21721/140622824318880 failed: Thread died in Berkeley DB library                
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery                
error: cannot open Packages database in /var/lib/rpm

这时候只需要重建就好了:

mv /var/lib/rpm/__db* /tmp
yum clean all
yum update
rm -i /tmp/__db*

2. 利用 mysql_random_data_load 生成随机测试数据

mysql_random_data_load 是Percona贡献的工具,可以用于生成随机测试数据,非常方便。

其项目地址 https://github.com/Percona-Lab/mysql_random_data_load

简单一个命令即可填充测试数据:

$ mysql_random_data_load -h127.0.0.1 -uroot  -pGreatSQL -P3306 --max-threads=4 testdb t1 1000

各参数比较简单清晰,不再额外解释。

3. 在MySQL Shell里也启用pager

有时候,MySQL Shell的输出内容也挺多,需要加上pager便于查看:

mysqlsh> shell.enablePager();
mysqlsh> shell.options["pager"]="less -i -n -S";

4. 利用awk快速求和

假如有下面这样一段文本内容:

$ grep Lock_time: slow.log | head
# Query_time: 1.097620  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
# Query_time: 0.000111  Lock_time: 0.000060 Rows_sent: 1  Rows_examined: 1
# Query_time: 0.000462  Lock_time: 0.000120 Rows_sent: 2  Rows_examined: 544
...

现在想求得 Query_time 列的数值,可以用类似下面的方法:

$ grep Lock_time: slow.log | head | awk '{sum1+=$3;}END{print sum1}'
77.228

这样就行了。