mysql:
dump备份:
mysqldump -R -E --single-transaction --hex-blob --opt -h源IP -P源端口 -u源用户 -p源密码 数据库名 |gzip > /data/xxx.sql.gz && gunzip < /data/xxx.sql.gz | mysql -h目标IP -P目标端口 -u目标用户 -p目标密码 数据库名
#参数说明:
-R 导出存储过程以及自定义函数
-E 导出事件
--single-transaction 此选项会将隔离级别设置为:REPEATABLE READ。并且随后再执行一条START TRANSACTION语句,让整个数据在dump过程中保证数据的一致性,这个选项对InnoDB的数据表很有用,且不会锁表。但是这个不能保证MyISAM表和MEMORY表的数据一致性
--hex-blob 将:BINARY, VARBINARY, BLOB, BIT类型导出为十六进制。 若不带,部分数据会乱码。
--opt 对数据库的信息充实等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys
查询数据库中,占用空间大的库
select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024/1024,2),' GB') as data_size,
concat(truncate(sum(index_length)/1024/1024/1024,2),' GB') as index_size
from information_schema.tables
group by TABLE_SCHEMA
order by data_length desc;
查询数据库中,占用空间大的表
select TABLE_NAME, concat(truncate(data_length/1024/1024/1024,2),' GB') as data_size,
concat(truncate(index_length/1024/1024/1024,2),' GB') as index_size
from information_schema.tables where TABLE_SCHEMA = '库名'
group by TABLE_NAME
order by data_length desc;
es:
索引排序:http://x.x.x.x:9200/_cat/indices?v&s=store.size:desc
docker:
登陆:docker login --username=admin harbor.com.cn
打标签:docker tag centos7.6-openjdk1.8:1.2 harbor.com.cn/dev/docker tag centos7.6-openjdk1.8:1.2
上传: docker push harbor.com.cn/dev/docker tag centos7.6-openjdk1.8:1.2
拉取:docker pull harbor.com.cn/dev/docker tag centos7.6-openjdk1.8:1.2
导出镜像: docker save -o xxx.tar image/x1/nginx:v1
导入镜像: docker load -i xxx.tar
查看当前docker 磁盘使用情况: docker system df -v
清理docker 无用镜像 :docker image prune -a
清理docker 无用镜像、磁盘、网络等:docker system prune
Redis:
正式redis禁止使用KEYS * 等命令,查询redis key 使用SCAN MATCH 命令,可写成脚本使用
#!/bin/bash
redisbase='/usr/local/bin'
##定义使用说明
usage(){
echo -e "\033[31m脚本功能:\033[0m"
echo -e " 用于扫描redis实例中所有的key"
echo -e " "
echo -e "\033[31m示例如下:\033[0m"
echo -e "\033[31m 执行 脚本名 库名 每次扫描redis卡槽数 匹配式\033[0m"
echo -e " bash scan_get_all_keys.sh 0 10000 'match cbh_20210728*'"
echo -e " "
echo -e "\033[31m注意事项:\033[0m"
echo -e " 1. 只能用于redis 2.8及以上版本,因为只有这些版本支持scan命令"
echo -e " 2. 第三个参数表示每次scan的key个数, 自行评估每次扫描卡槽数"
}
##参数判断
if [ "$1"x = x ] || ([ -n "$1" ] && [ "$2"x = x ] )
then
usage
exit
fi
#入参
i=0 #初始游标
host=xxx #主机
passwd=xxx #密码
port=6379 #端口
db=$1 #redis库
num=$2 #每次扫描卡槽数
matchpattern=$3 #匹配表达式 match cbh_20270828*
# 将反回值放入临时文件中,若该次扫描未找到对应的key,文本中记录为redis卡槽位与匹配的值,若该次扫描没值则为空
$redisbase/redis-cli -h $host -p $port -a $passwd -n $db scan $i ${matchpattern} count $num > tmp.txt 2>>/dev/null
#取第一行游标
i=$(head -1 tmp.txt)
#获取文本总行数
tmpNum=$(cat tmp.txt | wc -l)
#查看除去第一行的所有keys
tail -$(($tmpNum -1)) tmp.txt >> tmp_all_keys.txt
#判断游标是否为0,遍历是否完成
while [ $i -ne 0 ]
do
$redisbase/redis-cli -h $host -p $port -a $passwd -n $db scan $i ${matchpattern} count $num > tmp.txt 2>>/dev/null
i=$(head -1 tmp.txt)
tmpNum=$(cat tmp.txt |wc -l)
tail -$(($tmpNum -1)) tmp.txt >> tmp_all_keys.txt
done
rm -rf tmp.txt
sed '/^$/d' tmp_all_keys.txt > all_keys.txt
rm -rf tmp_all_keys.txt
# 删除脚本 可能会因key太多,导致不能直接cat删除,使用sed 按部分删
# redis-cli -h 'x.x.x.x' -p 6379 -n 0 -a 'YOU_PASSWOD' del $(sed -n '1,68'p all_keys.txt)
OSS Utile :
本地上传至OSS:
./ossutil i (access-key-id) -k (access-key-secret) -e (endpoint) cp -r E:\\test(本地文件夹) oss://(Buckets)/
k8s:
限制文件上传大小:
nginx.ingress.kubernetes.io/proxy-body-size 1024m
Nginx:
日志文件统计IP:
cat /var/log/nginx/access.log |grep -v -E "x.x.x.x" |awk '{print $5}'|sort -nr |uniq -c |sort -nr|head -50
常用系统初始化:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld.service && systemctl disable firewalld.service
yum install wget -y
mkdir -p /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
#没有代理执行
wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo -O /etc/yum.repos.d/epel-7.repo
yum clean all && yum makecache && yum update -y
yum install -y vim telnet iftop net-tools
#有代理执行
echo 'proxy=http://xx.xx.xx.xx:xx' >> /etc/yum.conf
wget -e 'http_proxy=http://xx.xx.xx.xx:xx' http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/Centos-7.repo
wget -e 'http_proxy=http://xx.xx.xx.xx:xx' http://mirrors.aliyun.com/repo/epel-7.repo -O /etc/yum.repos.d/epel-7.repo
yum clean all && yum makecache && yum update -y
yum install -y vim telnet iftop net-tools
#同步服务器时间
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#可以直接通外网:
yum install ntpdate -y
ntpdate ntp.aliyun.com
#不能访问外网
date -s "2022-03-04 00:00:00"
#将系统时间同步至服务器硬件
hwclock -w
Redis AOF文件过大,清理及重新AOF:由于服务器内存已不足以redis自动重写aof文件了,需要更大内存服务器来处理AOF文件
一、info 记录 keys值
二、bgsave触发写成rdb -- 耗时
三、shutdown
四、修改配置文件,将aof 关闭,【appendonly no 三个save 取消注释】
五、移动备份aof文件
六、启动redis ,使其读到rdb,并使用info查看key值。 -- 短暂耗时
七、BGREWRITEAOF 将rdb转存aof【需要查看aof是否生成】 -- 耗时
八、shutdown
九、修改配置文件,关闭rdb,开启aof 【appendonly yes 三个save 注释掉】
十、启动redis -- 耗时
路由追踪
traceroute -n -T -p 8080 xx.xx.xx.xx