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

    Linux 传输文件 - nc + pv

    在 Linux 服务器之间传输文件时,scprsync 是常见的选择,但 nc (netcat) 搭配 pv (Pipe Viewer) 也提供了一种轻量级且高效的方式。本文介绍 nc + pv 组合的使用,并对比 scprsync 等传统方法。

    简要代码示例:

    # 接收端
    yum install pv nc -y
    nc -l -p 9999 | pv | tar -xf -
    # 发送端
    yum install pv nc -y
    pv /mnt/data2/k8sstorage/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

    概述: 数据目录挂载在外部的/data/server/gitlab/下,主要涉及到的有状态内容为/etc/gitlab 下的配置、/var/log/gitlab下的日志、/var/opt/gitlab下的数据

    过程: 通过备份命令gitlab-rake gitlab:backup:create SKIP=artifacts创建备份, 在新的服务器上拉起Gitlab后进入维护模式并解决了sql的报错与配置文件恢复