es数据备份、 Elasticsearch数据备份、contos使用elasticdump备份es数据
es数据备份使用elasticdump
一、安装elasticdump
# elasticdump依赖node环境,先安装node yum -y install nodejs npm node -v npm -v # 使用npm安装elasticdump npm install elasticdump -g find / -name elasticdump # 进入软件目录 cd /usr/local/lib/node_modules/elasticdump/bin
二、备份数据
#导出数据 #说明: elasticdump --input=ES服务地址/索引名称 --output=导出地址及文件 --type=mapping或者data elasticdump --input=http://192.168.0.18:9200/rtp_news --output=/opt/esbckup/backup/rtp_news_mapping.json --type=mapping elasticdump --input=http://192.168.0.18:9200/rtp_news --output=/opt/esbckup/backup/rtp_news_data.json --type=data #导入数据 #说明:elasticdump --input=文件地址 --output=ES服务地址/索引名称 --type=mapping或者data
elasticdump --input=/opt/esbckup/backup/rtp_news_mapping.json --output=http://192.168.0.18:9200/rtp_news--type=mapping elasticdump --input=/opt/esbckup/backup/rtp_news_data.json --output=http://192.168.0.18:9200/rtp_news --type=data
三、定时备份脚本
结合crontab 实现每日指定时间备份,备份成功后删除前一日数据
#!/bin/bash # 备份根目录 BACKUP_BASE="/opt/esbackup/backup" # 今日日期(格式:YYYYMMDD) TODAY=$(date +%Y%m%d) # 昨日日期(格式:YYYYMMDD) YESTERDAY=$(date -d "yesterday" +%Y%m%d) # 定义需要备份的索引列表 INDEXES=( "rtp_news" "rtp_article" "rtp_article_extend" "rtp_terms" ) # 创建今日备份目录 TODAY_DIR="${BACKUP_BASE}/${TODAY}" mkdir -p "${TODAY_DIR}" || { echo "ERROR: 无法创建今日备份目录 ${TODAY_DIR}" exit 1 } # 标记备份是否成功 BACKUP_SUCCESS=true # 遍历索引进行备份 for index in "${INDEXES[@]}"; do echo "开始备份索引: ${index}" # 备份mapping /usr/bin/node /usr/local/lib/node_modules/elasticdump/bin/elasticdump \ --input="http://192.168.0.18:9200/${index}" \ --output="${TODAY_DIR}/${index}_mapping.json" \ --type=mapping if [ $? -ne 0 ]; then echo "ERROR: ${index} mapping备份失败" BACKUP_SUCCESS=false fi # 备份data /usr/bin/node /usr/local/lib/node_modules/elasticdump/bin/elasticdump \ --input="http://192.168.10.38:9200/${index}" \ --output="${TODAY_DIR}/${index}_data.json" \ --type=data if [ $? -ne 0 ]; then echo "ERROR: ${index} data备份失败" BACKUP_SUCCESS=false fi done # 根据备份结果处理 if [ "${BACKUP_SUCCESS}" = true ]; then echo "所有索引备份成功!" # 删除昨日备份(如果存在) YESTERDAY_DIR="${BACKUP_BASE}/${YESTERDAY}" if [ -d "${YESTERDAY_DIR}" ]; then echo "删除昨日备份: ${YESTERDAY_DIR}" rm -rf "${YESTERDAY_DIR}" fi else echo "备份失败,保留今日不完整备份,不删除昨日备份" # 可选:如果需要清理失败的备份,可以取消下面一行的注释 # rm -rf "${TODAY_DIR}" fi echo "备份流程结束"

浙公网安备 33010602011771号