《企业级云原生白皮书项目实战》——第五章 大数据——5.1 检索分析服务 Elasticsearch版——5.1.6 数据备份恢复(1) https://developer.aliyun.com/article/1228732?spm=a2c6h.13148508.setting.29.78e74f0eMONppV
5.1.6.2 备份到本地OSS仓库
5.1.6.2.1 自动备份
自动备份到本地OSS仓库,在7.6及以上版本中可以通过SLM实现,创建SLM命令如下
PUT _slm/policy/auto-snapshots { "schedule": "0 0 0/12 * * ?", "name": "<auto-snap-{now/d}>", "repository": "my_auto_backup", "config": { "indices": "*", "include_global_state": true }, "retention": { "expire_after": "30d", "min_count": 5, "max_count": 50 } }
"schedule"为定时任务,类似Linux下的crontab命令,取值中的数字分别对应:秒、分钟、小时、天、月、星期、年(可选)。"name"为快照名称。"repository"为仓库名称。"confifig"为备份的配置,"indices"表示设置快照包含的索引。"include_-global_state"表示设置快照是否包含集群状态以及feature状态,true为包含,false为不包含。"retention"为配置快照的保留规则。以上配置示例表示将快照保留30天,保留的快照最少为5个,最多为50个。各参数说明如下:
其中expire_after为快照保留时间。min_count为最少保留多少个快照。即使超过保留时间也要满足最小要求。max_count为最多保留多少个快照。即使未达到保留时间也不能超过最大数。
然后还需执行创建的policy,执行完成后,阿里云Elasticsearch会每隔12小时创建一个快照。
POST _slm/policy/auto-snapshots/_execute
7.6以下版本,可以通过crontab定期执行curl命令,手动执行es备份命令,具体命令见下面手动备份章节。
5.1.6.2.2 手动备份
手动备份到本地OSS仓库,需要先开通对象存储服务OSS,并新建一个标准存储类型的Bucket,且Bucket的地域与Elasticsearch实例的地域保持一致。在手动备份与恢复数据前,请确保集群的状态正常,否则会影响备份任务。快照仅保存索引数据,不保存Elasticsearch实例自身的监控数据(例如以.monitoring和.security_audit为前缀的索引)、元数据、Translog、实例配置数据、Elasticsearch软件包、自带和自定义的插件、Elasticsearch日志等。
然后创建仓库,创建一个名称为test的仓库,具体命令如下,其中"endpoint"为OSS Bucket的内网访问域名。"access_key_id"为账号ak。"secret_access_key"为账号sk。"bucket"为OSS Bucket的名称。"compress"为是否打开快照文件的压缩功能,参数值为true和false。"chunk_size"的含义是当上传的数据非常大时,配置此参数可以限制快照过程中分块的大小。超过这个大小,数据将会被分块上传到OSS中。"base_path"是仓库的起始位置,默认为根目录。
PUT _snapshot/test/ { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "xxxx", "secret_access_key": "xxxxxx", "bucket": "xxxxxx", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
然后进行快照的创建,为全部索引创建快照命令如下
PUT _snapshot/test/snapshot_1
以上命令会为所有打开的索引创建名称为snapshot_1的快照,并保存到test仓库中。该命令会立刻返回,并在后台执行备份任务。如果您希望任务执行完成后再返回可通过添加wait_for_completion实现。该参数会阻塞调用直到备份完成,如果是大型快照,需要很长时间才能返回。
PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true
注意:一个仓库可以包含多个快照,每个快照中可以包含所有、部分或单个索引的备份数据。第一次创建快照时,系统会备份所有的数据,后续所有的快照仅备份已存快照和新快照之间的增量数据。随着快照的不断进行,备份也在增量的添加和删除。这意味着后续备份会相当快速,因为它们只传输很小的数据量。
系统默认会备份所有打开的索引,也可以为指定索引创建快照,具体命令如下,该命令只会备份名称为index_1和index_2的索引。
PUT _snapshot/my_backup/snapshot_2 { "indices": "index_1,index_2" }
《企业级云原生白皮书项目实战》——第五章 大数据——5.1 检索分析服务 Elasticsearch版——5.1.6 数据备份恢复(3) https://developer.aliyun.com/article/1228730?groupCode=supportservice