美文网首页
ES数据备份与恢复

ES数据备份与恢复

作者: superxcp | 来源:发表于2019-10-11 16:49 被阅读0次

    场景:ES线上的数据和服务迁移到另外的机器上去

    老ES机器ip:172.16.0.1
    新ES机器ip:172.16.0.2

    一. 首先,

    1. 在备份之前要在es/config/elasticsearch.yml添加仓库配置:
    path.repo: ["/data/es/snapshot"]
    

    2.重启ES

    二. 在老机器上

    3.创建备份仓库

    在/data/es/snapshot下新建名为bro_backup的仓库

    curl -XPOST '172.16.0.1:9200/_snapshot/bro_backup' -H  'Content-Type: application/json' -d 
    '{ "type": "fs",  "settings": { "location": "/data/es/snapshot", "compress": true, "chunk_size": "1g", "max_snapshot_bytes_per_sec": "50m", "max_restore_bytes_per_sec": "50m"}}'
    
    • max_snapshot_bytes_per_sec 和max_restore_bytes_per_sec 为了限制备份和恢复时的速度

    4.备份数据

    curl -XPUT "172.16.0.1:9200/_snapshot/bro_backup/ss_2019100905?wait_for_completion=true"
    
    • 如果不希望快照作为后台进程运行,可以通过添加wait_for_completion=true参数,使其在前台运行,知道备份完成。
    • 如果想备份部分索引,可以加上indices 参数:
    curl -XPUT http://172.16.0.1:9200/_snapshot/bro_backup/ss_2019100905 -d '
        {
            "indices": "index_1,index_2"
        }'
    
    • 终止备份:
    curl -XDELETE http://172.16.0.1:9200/_snapshot/bro_backup/ss_2019100905
    
    • 查看备份信息
    curl -XGET http://172.16.0.1:9200/_snapshot/bro_backup/ss_2019100905
    
    

    三. 在新机器上
    (将备份数据打包传到新机器上,并解压到/data/es/snapshot目录下)

    6.恢复数据
    与之前步骤一致,先修改配置文件

    path.repo:["/data/backup/elasticsearch"],
    

    7.创建备份仓库bro_backup,然后执行恢复命令:

    curl -XPOST 'http://172.16.0.2:9200/_snapshot/bro_backup' -H  'Content-Type: application/json' -d '{ "type": "fs",  "settings": { "location": "/data/es/snapshot", "compress": true, "chunk_size": "1g", "max_snapshot_bytes_per_sec": "50m", "max_restore_bytes_per_sec": "50m"}}'
    

    8.执行恢复命令

    curl -XPOST '172.17.90.3:9200/_snapshot/bro_backup/ss_20190905/_restore' -H 'Content-Type: application/json' -d'{ "ignore_unavailable": true, "include_global_state": false }'
    
    • 如果只想恢复某些分片的数据,还可以在json参数里加{"indices": "game_info"},以指定只恢复game_info分片数据。

    9.查看恢复的分片数据

    curl '172.16.0.2:9200/_cat/indices?v'
    

    类似这种(我们这里只有一个节点,没有主从,所以是yellow状态,正常的)


    image.png

    10.ES集群迁移
    我这迁移的是es单节点,如果想要迁移和恢复集群的数据,
    (1)首先要在老机器(多台)的一台中建立共享文件夹(mount,可以自行百度),在每个节点中分别建立仓库(3个主节点需要建立3次仓库,建立快照时只需在一个节点执行建立快照命令即可,三个节点的数据都会被备份到快照中);
    (2)快照打包到新机器上;
    (3)在新机器恢复的时候也需要建立共享文件夹,三个节点建立仓库,恢复一次即可把数据恢复到3个节点上。

    参考文章:

    1. 集群备份:https://blog.csdn.net/ysl1242157902/article/details/78313227
    2. 共享文件夹nfs和设置权限:https://blog.csdn.net/xuplus/article/details/51669063
    3. https://www.cnblogs.com/huangzhen/archive/2012/08/15/2640371.html

    相关文章

      网友评论

          本文标题:ES数据备份与恢复

          本文链接:https://www.haomeiwen.com/subject/qqlipctx.html