2025年 03月 21日 - Linux 传输文件 - nc + pv

    Linux 传输文件:nc + pv 实践

    在局域网大文件传输场景下,scp 的加密开销和 rsync 的校验逻辑有时会成为瓶颈。利用 nc (netcat) 直连配合 pv (Pipe Viewer) 监控进度,可以实现接近物理带宽的裸传速度。

    快速上手

    接收端 (IP: 172.25.1.54)

    # 开启监听,解包流
    nc -l -p 9999 | pv | tar -xf -
    

    发送端

    # 读取文件,压入 nc
    pv minio_backup.tar | nc 172.25.1.54 9999
    

    2025年 03月 19日 - GP数据库分区的合并和迁移

    备份

    #!/bin/bash
    # Greenplum 6.25.3 专用备份脚本
    # 修正路径和命令问题
    
    # 加载正确的环境变量(关键修复)
    source /usr/local/greenplum-db-6.25.3/greenplum_path.sh
    
    BACKUP_ROOT="/data/gp_backup"
    BACKUP_ROOT="/mnt/data1/gpdata/backup0320"
    TIMESTAMP=$(date +%Y%m%d_%H%M%S)
    BACKUP_DIR="${BACKUP_ROOT}/${TIMESTAMP}"
    LOG_FILE="${BACKUP_DIR}/backup.log"
    
    # 节点数据库配置(保持不变)
    CURRENT_IP=$(hostname -I | awk '{print $1}')
    case $CURRENT_IP in
        10.10.1.137)
            DB_LIST=(db_01,db_02,db_03)
            ;;
        10.10.1.143)
            DB_LIST=(db_01,db_02,db_03)
            ;;
        *)
            echo "无效的服务器IP:$CURRENT_IP"
            exit 1
            ;;
    esac
    
    mkdir -p ${BACKUP_DIR} || { echo "无法创建备份目录"; exit 1; }
    
    echo "备份开始时间:$(date +'%Y-%m-%d %T')" | tee -a ${LOG_FILE}
    
    # 使用pg_dumpall替代gp_dumpall(Greenplum 6特性)
    echo "正在备份全局对象..." | tee -a ${LOG_FILE}
    pg_dumpall --globals-only -f ${BACKUP_DIR}/globals.sql 2>>${LOG_FILE}
    
    # 并行备份数据库(使用pg_dump)
    for DB in ${DB_LIST[@]}; do
        {
            echo "开始备份数据库:${DB}" | tee -a ${LOG_FILE}
            pg_dump ${DB} \
                --schema-only \
                --exclude-schema=pg_catalog \
                --exclude-schema=gp_toolkit \
                --exclude-schema=information_schema \
                -f ${BACKUP_DIR}/${DB}_schema.sql \
                2>>${LOG_FILE}
    
            pg_dump ${DB} \
                --data-only \
                --exclude-schema=pg_catalog \
                --exclude-schema=gp_toolkit \
                --exclude-schema=information_schema \
                -f ${BACKUP_DIR}/${DB}_data.sql \
                2>>${LOG_FILE}
            echo "完成备份数据库:${DB}" | tee -a ${LOG_FILE}
        } &
    done
    
    wait
    
    echo "备份完成时间:$(date +'%Y-%m-%d %T')" | tee -a ${LOG_FILE}
    echo "备份文件存储路径:${BACKUP_DIR}" | tee -a ${LOG_FILE}
    
    # 压缩备份文件
    echo "正在压缩备份文件..." | tee -a ${LOG_FILE}
    tar czf ${BACKUP_DIR}.tar.gz -C ${BACKUP_ROOT} ${TIMESTAMP} 2>>${LOG_FILE}
    
    echo "备份操作全部完成!"
    

    2025年 02月 28日 - elasticsearch数据迁移

    elasticsearch数据迁移

    npm install elasticdump -g
    # 导出
    elasticdump \
      --input=http://source-es:9200/my_index \
      --output=/path/to/my_index_mapping.json \
      --type=mapping
    elasticdump \
      --input=http://source-es:9200/my_index \
      --output=/path/to/my_index_data.json \
      --type=data
      
    # 导入
    elasticdump \
      --input=/path/to/my_index_mapping.json \
      --output=http://target-es:9200/my_index \
      --type=mapping
    
    elasticdump \
      --input=/path/to/my_index_data.json \
      --output=http://target-es:9200/my_index \
      --type=data
    

    查看索引可以通过浏览器插件es-client

    2025年 02月 28日 - k8s中安装elasticsearch

    使用helm安装

    helm repo add elastic https://helm.elastic.co
    helm pull elastic/elasticsearch --version 8.8.101
    

    2025年 01月 04日 - 记一次Gitlab迁移

    Gitlab 迁移实战记录

    由于硬件升级或环境迁移,需要将原有的 GitLab CE (13.11) 完整迁移至新服务器。迁移核心在于:保持版本一致、恢复核心配置(gitlab-secrets.json)、以及处理 PostgreSQL 权限坑点

    原始环境分析

    • 版本: gitlab/gitlab-ce:13.11
    • 挂载点: /data/server/gitlab/
    • 核心数据:
      • /etc/gitlab: 配置文件
      • /var/opt/gitlab: 仓库、数据库及备份文件
      • /var/log/gitlab: 日志

    迁移步骤

    1. 备份原始数据

    执行备份命令时跳过 artifacts 以减小包体积(如有必要):

    docker exec gitlab gitlab-rake gitlab:backup:create SKIP=artifacts
    

    备份生成的 .tar 文件位于 /var/opt/gitlab/backups