无    2022-04-19 11:23:14    42    0    0
  1. version: "3.2"
  2. services:
  3. rabbitmq:
  4. image: rabbitmq:3-management-alpine
  5. container_name: 'rabbitmq'
  6. environment:
  7. - RABBITMQ_DEFAULT_VHOST=/
  8. - RABBITMQ_DEFAULT_USER=admin
  9. - RABBITMQ_DEFAULT_PASS=Rabbitmq2022
  10. - RABBITMQ_ERLANG_COOKIE=rabbitmq-localdev
  11. ports:
  12. - 5672:5672
  13. - 15672:15672
  14. volumes:
  15. - ./data:/var/lib/rabbitmq
  16. - ./log:/var/log/rabbitmq
  17. networks:
  18. - rabbitmq_go_net
  19. networks:
  20. rabbitmq_go_net:
  21. driver: bridge

Reference:
https://x-team.com/blog/set-up-rabbitmq-with-docker-compose/
https://blog.yowko.com/docker-compose-rabbitmq-cluster/

无    2022-04-19 11:23:06    35    0    0

crontab意思

crontab辅助网站

  1. * * * * * command(s)
  2. - - - - -
  3. | | | | |
  4. | | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
  5. | | | ------- Month (1 - 12)
  6. | | --------- Day of month (1 - 31)
  7. | ----------- Hour (0 - 23)
  8. ------------- Minute (0 - 59)

通过shell脚本实现contab每15秒运行一次git pull

  1. [root@xxx ~]# cat crontab.sh
  2. #!/bin/bash
  3. step=15
  4. for (( i = 0; i < 60; i=(i+step) )); do
  5. sh /tmp/test.sh
  6. sleep $step
  7. done
  8. exit 0

实际要执行的脚本

  1. [root@xxx ~]# cat test.sh
  2. #!/bin/bash
  3. cd /data/www && git pull >> /tmp/test.log
  4. #cd /data/www && git pull > /dev/null 2>&1
  5. [root@xxx ~]# crontab -l
  6. * * * * * /tmp/crontab.sh

a批量加crontab

  1. ansible prod-consul -m shell -a " echo '* */6 * * * /root/clear-ram.sh' >> /var/spool/cron/root"
无    2022-04-19 09:24:02    45    0    0

创建topic

  1. ./kafka-topics.sh --create --zookeeper 0.0.0.0:2181 --replication-factor 1 --partitions 1 --topic my-topic

删除topic

  1. ./kafka-topics.sh --zookeeper 0.0.0.0:2181 --delete --topic my-topic

查看所有tpoic

  1. ./kafka-topics.sh --list --zookeeper 0.0.0.0:2181

列出所有主题中的所有用户组

  1. ./kafka-consumer-groups.sh --bootstrap-server 0.0.0.0:9092 --list

-members: 此选项提供使用者组中所有活动成员的列表

  1. ./kafka-consumer-groups.sh --bootstrap-server 0.0.0.0:9092 --describe --group group1 --members

查看topic消费进度,必须参数为--group,不指定--topic,默认为所有topic

  1. ./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group group1

查询指定的组各topic消息消费情况

  1. ./kafka-consumer-groups.sh --bootstrap-server 0.0.0.0:9092 --describe
无    2022-04-11 18:08:27    176    0    0

简介

title
canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

基于日志增量订阅和消费的业务包括

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务 cache 刷新
  • 带业务逻辑的增量数据处理
  • 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

工作原理

title

  • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
  • MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据
  • canal 工作原理
  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • MySQL
无    2022-04-07 10:50:55    24    0    0

MySQL查看数据库表容量大小

查看一个数据中所有表的相关信息:

(1)可以在命令下使用show table status \G命令查看:

(2)如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:

TABLE_SCHEMA : 数据库名

TABLE_NAME:表名

ENGINE:所使用的存储引擎

TABLES_ROWS:记录数

DATA_LENGTH:数据大小

INDEX_LENGTH:索引大小

其他字段请参考MySQL的手册,我们只需要了解这几个就足够了。所以要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可。

1.查看所有数据库容量大小

  1. select
  2. table_schema as '数据库',
  3. sum(table_rows) as '记录数',
  4. sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
  5. sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
  6. from information_schema.tables
  7. group by table_schema
  8. order by sum(data_length) desc, sum(index_length) desc;

2.查看所有数据库各表容量大小

  1. select
  2. table_schema as '数据库',
  3. table_name as '表名',
  4. table_rows as '记录数',
  5. truncate(data_length/1024/1024, 2) as '数据容量(MB)',
  6. truncate(index_length/1024/1024, 2) as '索引容量(MB)'
  7. from informa
无    2022-04-02 15:35:48    33    0    0

简介

NSCD(Name Service Cache Daemon)是服务缓存守护进程,它为NIS和LDAP等服务提供更快的验证。不管是什么系统,缓存是一项非常重要的技术[或机制],缓存的主旨就是提高客户端访问速度。

NSCD(name service cache daemon)是GLIBC关于网络库的一个组件,服务基于glibc开发的各类网络服务,基本上来讲我们能见到的一些编程语言和开发框架最终均会调用到glibc的网络解析的函数(如GETHOSTBYNAME or GETHOSTBYADDR等),因此绝大部分程序能够使用NSCD提供的缓存服务。当然如果是应用端自己用socker编写了一个网络client就无法使用NSCD提供的缓存服务,比如DNS领域常见的dig命令不会使用NSCD提供的缓存,相反ping得到的DNS解析结果将使用NSCD提供的缓存。

本质上NSCD不止为DNS提供缓存服务,同时可以为passwd/group/hosts等服务提供缓存,本文重点介绍的是DNS(hosts)范畴内的缓存,相关测试结果和代码的对象对应的是glibc-2.17版本。

NSCD安装

RHEL/CentOS

  1. $ yum -y install nscd

Debian/Ubuntu

  1. $ apt-get install nscd

NSCD命令选项

  1. $ nscd --help
  2. 用法: nscd [选项...]
  3. Name Service Cache Daemon.
  4. -d, --debug Do not fork and display messages on the current
  5. tty
  6. -f, --conf
无    2022-03-31 15:07:42    29    0    0

1.可选项,将swap分区dump到内存中去

  1. sync

2.释放cache

  1. echo "3" > /proc/sys/vm/drop_caches

As this is a non-destructive operation, and dirty objects are not freeable, the user should run "sync" first in order to make sure all cached objects are freed.

3.检查 Swap 空间,先检查一下系统里有没有既存的 Swap 文件

  1. swapon -s

如果返回的信息概要是空的,则表示 Swap 文件不存在。

4.创建要作为swap分区的文件:增加4GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。

  1. dd if=/dev/zero of=/var/swap/swapfile bs=4G count=8
  2. dd if=/dev/zero of=/var/swap/swapfile bs=1M count=4096
  3. 【参数说明】
  4. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
  5. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
  6. bs=bytes:同时设置读入/输出的块大小为bytes个字节
  7. count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。

5.格式化为交换分区文件:

  1. mkswap /var/sw
无    2022-03-31 12:24:38    26    0    0

服务器及MySQL数据库巡检手册

服务器巡检

Linux服务器是系统重要的业务运行平台,对服务器进行巡检能够及时发现服务 器的隐患,以便于改善和优化服务器的性能;观察服务器的运行状况,及时对
设备进行调整,保证服务器的24小时不间断的工作。

硬件配置信息

检查项 检查操作
机器型号 dmidecode 1 grep "Product Name"
CPU cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
内存 free -m
磁盘 df -h
网卡 ifconfig -a
操作系统 uname -a

性能检查

检查项 检查操作 参考指标
CPU占用率 top CPU每个线程占用率小于80%
CPU负载 uptime CPU负载应小于10
内存占用率 free -m 内存使用率小于80%
内存swap使用率 free -m swap使用率小于10%
磁盘使用率 df -ah 磁盘使用率小于80%
磁盘负载 iostat -xkd 1 uti 1应在10%以内
系统开放端口 netstat -an Igrep LISTEN 只显示出提供对于服务的端 口,无关的端口一律关闭
网卡流量 iftop 网卡流量小于带宽的50%
进程检查 ps aux | more 关闭占用资源的无用进程

数据库日常健康巡检表

检查项 检查操作 参考指标
进程检查 ps -ef | grep mysqld 检查port以及datadir
数据库版本 select version()
超大库检查 du -sh 每个数据库目录
无    2021-11-26 14:28:48    37    0    0

Something need to Preparing

官网下载最新的jenkins.war
下面是列表
https://updates.jenkins.io/download/war/

启动脚本

master

需要注意的是这里启动的java版本是11.0.12

  1. #!/bin/bash
  2. export JAVA_HOME=/usr/local/java11/openjdk
  3. export PATH=$PATH:$JAVA_HOME/bin
  4. nohup java -Duser.home=/home/jenkins/master_data -Djenkins.model.Jenkins.slaveAgentPort=50000 -jar /home/jenkins/bin/master/jenkins.war >> /home/jenkins/data/all.log &

slave

需要注意的是这里启动的java版本是1.8.0_202
下面只是其中的一个agent,其他的只需要按需求将secret替换即可。

  1. #!/bin/bash
  2. export JAVA_HOME=/usr/local/jdk1.8.0_202
  3. export PATH=$PATH:$JAVA_HOME/bin
  4. nohup java -jar /home/jenkins/bin/slave/agent.jar -jnlpUrl http://jenkins.xxx.com/computer/agent1/jenkins-agent.jnlp -secret 9cf71dd0b91ecbc7203fafe0bfbbefd947898ecdca51ab7f0332cf90e93a4840 -workDir "/home/jenkins/slave_data/agent1" >> /home/jenkins/slave_data/agent1/a
无    2021-11-17 17:14:28    17    0    0

概述

系统:centos 7.x
基础安装:docker、docker-compose
jenkins架构:一主三从
jenkins主从中需要的命令均通过挂载宿主机上的实现,如java、python、node等,均通过编译或二进制安装方式。

编译安装命令

  1. # 注意 --enable-optimizations 可能会报错,如果有就去掉
  2. $ ./configure --prefix=/usr/local/python3 --enable-optimizations
  3. $ make
  4. $ make install

master docker-compose.yaml

  1. version: '3.5'
  2. services:
  3. jenkins-master:
  4. # image: jenkinsci/blueocean
  5. image: reg.xxx.xxx/jenkins/jenkinsci-blueocean-1.25.0
  6. container_name: jenkins-master
  7. privileged: true
  8. ports:
  9. - 8080:8080
  10. - 50000:50000
  11. restart: always
  12. volumes:
  13. - /home/jenkins/data:/var/jenkins_home
  14. - /usr/local/apache-maven-3.8.3:/usr/local/maven-3.8.3
  15. - /usr/local/jdk1.8.0_202:/usr/local/jdk1.8.0_202
  16. - /usr/local/python3:/usr/local/python3
  17. - /usr/local/node-v16.6.0-linux-x64:/usr/local/node-v16.6.0-linux-x64
12/14