不知不觉间,Piwik数据的容量已经达到500GB,虽然并没有感觉到性能有什么影响,但也是时候考虑如何清理其最占空间的访问记录数据了。于是决定拿备份库演练一番:

首先想到的是使用后台的自动清理功能,但是发现其每次10000条的删除能力,对于此等量级的数据可谓是杯水车薪。最后只能翻看源码,得出最基本的两条删除语句。

DELETE FROM `wk_log_visit` WHERE visit_last_action_time < '2018-11-05 00:00:00';
DELETE FROM `wk_log_link_visit_action` WHERE server_time < '2018-11-05 00:00:00';

至于 wk_log_action 表一则也就10G多些,无伤大雅;二则这个表可以根据上面的两个表对其引用情况执行自动清理。

https://your.domain.com/index.php?action=executeDataPurge&date=today&format=html&idSite=1&module=PrivacyManager&period=day

至此,我们将遇到第二个问题:

如果要从InnoDB大表中删除许多行,则可能会超出表的锁定表大小InnoDB。也许删除500G的数据需要8个小时左右。

为了避免这个问题,或者只是为了最小化表保持锁定的时间,官方给出以下策略(根本不使用 DELETE):

  • 选择不要删除的行到与原始表具有相同结构的空表中

    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
  • 使用RENAME TABLE以原子移动原始表的方式进行,并重新命名拷贝到原来的名称

    RENAME TABLE t TO t_old, t_copy TO t;
  • 删除原始表
    DROP TABLE t_old;

最终,我们优化查询如下

CREATE TABLE wk_log_visit_copy LIKE wk_log_visit;
INSERT INTO wk_log_visit_copy SELECT * FROM wk_log_visit WHERE visit_last_action_time >= '2018-11-05 00:00:00';
RENAME TABLE wk_log_visit TO wk_log_visit_old, wk_log_visit_copy TO wk_log_visit;

CREATE TABLE wk_log_link_visit_action_copy LIKE wk_log_link_visit_action;
INSERT INTO wk_log_link_visit_action_copy SELECT * FROM wk_log_link_visit_action WHERE server_time >= '2018-11-05 00:00:00';
RENAME TABLE wk_log_link_visit_action TO wk_log_link_visit_action_old, wk_log_link_visit_action_copy TO wk_log_link_visit_action;

DROP TABLE wk_log_visit_old, wk_log_link_visit_action_old;

1.修改系统网卡ens3为eth7
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

2.解决docker cgroup限制问题
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

最后,不要忘记执行 update-gurn; reboot

创建文件系统,并设置t为8e

fdisk /dev/sdb

扩容LVM卷

pvcreate /dev/sdb1
vgextend centos /dev/sdb1
lvextend -l +100%FREE /dev/centos/root

若根目录/文件系统为ext4

resize2fs /dev/centos/root

若根目录/文件系统为xfs

xfs_growfs /dev/centos/root

查看磁盘状态

df -h

今天帮朋友刷2个极路由的uboot,但他那边只有一台Ubuntu-Server可远程登陆。
悲剧的我,只好SSH连接他本地的Ubuntu,然后再连接极路由刷写固件:

极路由1s

wget https://breed.hackpascal.net/breed-mt7620-hiwifi-hc5761.bin

scp -P 1022 root@192.168.199.1:/tmp/
ssh -p 1022 root@192.168.199.1

输入密码,登陆系统后,执行刷写命令

mtd write /tmp/breed-mt7620-hiwifi-mt7620.bin u-boot

极路由3

wget https://breed.hackpascal.net/breed-mt7620-hiwifi-hc5861.bin

scp -P 1022 root@192.168.199.1:/tmp/
ssh -p 1022 root@192.168.199.1

输入密码,登陆系统后,执行刷写命令

mtd write /tmp/breed-mt7620-hiwifi-hc5861.bin u-boot

自从macOS有了这个不着调的提示,一直让我这个强迫症患者无比揪心,于是各方寻访与尝试,总结如下2个方法可用于手动清理这部分空间。

1.清空 ~/library/caches 文件夹里面的内容(小白可以用这个方法试试)

2.命令行里跑一下 sudo diskutil secureErase freespace 0 /dev/disk1s1 (请自行替代分区数字,新手请绕道)