Стратегия резервного копирования и восстановления базы данных временных рядов InfluxDB

задняя часть база данных GitHub

logo

резервное копирование и восстановление influxdb

Ссылаться на:influxdb backup and restore

окрестности:

  • influxdb v1.6.0
  • Используйте автоматическую консоль притока для

I. Резервное копирование

команда резервного копирования

influxd backup
    [ -database <db_name> ]  --> 指定需要备份的数据库名
    [ -portable ]            --> 表示在线备份
    [ -host <host:port> ]    --> influxdb服务所在的机器,端口号默认为8088
    [ -retention <rp_name> ] | [ -shard <shard_ID> -retention <rp_name> ]  --> 备份的保留策略,注意shard是挂在rp下的;我们需要备份的就是shard中的数据
    [ -start <timestamp> [ -end <timestamp> ] | -since <timestamp> ]   --> 备份指定时间段的数据
    <path-to-backup>   --> 备份文件的输出地址

1. Пример демонстрации

Сначала создайте базу данных yhhblog, которая содержит два измерения, соответствующие данные выглядят следующим образом.

> show databases
name: databases
name
----
_internal
yhhblog

> use yhhblog
Using database yhhblog
> show measurements
name: measurements
name
----
netLoad
serviceLoad

> select * from netLoad
name: netLoad
time                host      netIn netOut service
----                ----      ----- ------ -------
1532658769048100401 127.0.0.1 13m   521K   app.service.about

> select * from serviceLoad
name: serviceLoad
time                cpu   host      load mem   qps  rt   service
----                ---   ----      ---- ---   ---  --   -------
1532658713805369067 45.23 127.0.0.2 1.21 4145m 1341 1312 app.service.about
1532658718726259226 45.23 127.0.0.1 1.21 4145m 1341 1312 app.service.about

А. Резервное копирование всех баз данных

Резервное копирование всех баз данных в influxdb без добавления каких-либо параметров

influxd backup -portable /tmp/data/total

б. Резервное копирование указанной базы данных

Если вы хотите сделать резервную копию только указанной выше базы данных yhhblog, добавьте-databaseПараметры могут быть указаны

# influxd backup -portable -database yhhblog /tmp/data/yhhblog

2018/07/27 10:38:15 backing up metastore to /tmp/data/yhhblog/meta.00
2018/07/27 10:38:15 backing up db=yhhblog
2018/07/27 10:38:15 backing up db=yhhblog rp=autogen shard=10 to /tmp/data/yhhblog/yhhblog.autogen.00010.00 since 0001-01-01T00:00:00Z
2018/07/27 10:38:15 backup complete:
2018/07/27 10:38:15 	/tmp/data/yhhblog/20180727T023815Z.meta
2018/07/27 10:38:15 	/tmp/data/yhhblog/20180727T023815Z.s10.tar.gz
2018/07/27 10:38:15 	/tmp/data/yhhblog/20180727T023815Z.manifest

в. Резервное копирование данных за указанный период времени в базе данных

Для вышеуказанных данных, только часть времени резервного копирования данных, которые соответствуют требованиям, вы можете добавить параметры начала/окончания

# influxd backup -portable -database yhhblog -start 2018-07-27T2:31:57Z -end 2018-07-27T2:32:59Z  /tmp/data/yhhblog_per

2018/07/27 10:42:14 backing up metastore to /tmp/data/yhhblog_per/meta.00
2018/07/27 10:42:14 backing up db=yhhblog
2018/07/27 10:42:14 backing up db=yhhblog rp=autogen shard=10 to /tmp/data/yhhblog_per/yhhblog.autogen.00010.00 with boundaries start=2018-07-27T02:31:57Z, end=2018-07-27T02:32:59Z
2018/07/27 10:42:14 backup complete:
2018/07/27 10:42:14 	/tmp/data/yhhblog_per/20180727T024214Z.meta
2018/07/27 10:42:14 	/tmp/data/yhhblog_per/20180727T024214Z.s10.tar.gz
2018/07/27 10:42:14 	/tmp/data/yhhblog_per/20180727T024214Z.manifest

Теперь, когда бэкап в порядке, вопрос, как подтвердить, есть ли проблема с бэкапом, и как восстановить данные после бэкапа?

II. Восстановление

Команда выглядит следующим образом

influxd restore 
    [ -db <db_name> ]       --> 待恢复的数据库(备份中的数据库名)
    -portable | -online
    [ -host <host:port> ]    --> influxdb 的服务器
    [ -newdb <newdb_name> ]  --> 恢复到influxdb中的数据库名
    [ -rp <rp_name> ]        --> 备份中的保留策略
    [ -newrp <newrp_name> ]  --> 恢复的保留策略
    [ -shard <shard_ID> ]
    <path-to-backup-files>

Во-первых, используйте простой способ, чтобы продемонстрировать стратегию восстановления, и проверьте, нет ли проблем с резервными данными выше.

1. Восстановление в несуществующую базу данных

Ниже показано, как восстановить ранее экспортированную резервную копию в новую базу данных yhhblog_bk и выполнить команду следующим образом.

influxd restore -portable -db yhhblog -newdb yhhblog_bk yhhblog_per

Кстати, проверьте, нет ли проблем с резервной копией данных выше.Обратите внимание, что мы восстанавливаем резервную копию данных временного сегмента, поэтому восстановленные данные должны исключать данные, которые больше не относятся к указанной выше дате.

> show databases
name: databases
name
----
_internal
yhhblog
yhhblog_bk
> use yhhblog_bk
Using database yhhblog_bk
> show measurements
name: measurements
name
----
netLoad
serviceLoad
> select * from netLoad
name: netLoad
time                host      netIn netOut service
----                ----      ----- ------ -------
1532658769048100401 127.0.0.1 13m   521K   app.service.about
> select * from serviceLoad
name: serviceLoad
time                cpu   host      load mem   qps  rt   service
----                ---   ----      ---- ---   ---  --   -------
1532658718726259226 45.23 127.0.0.1 1.21 4145m 1341 1312 app.service.about

Обратите внимание, что в предыдущем serviceLoad есть только один фрагмент данных, а это значит, что нет проблем с резервным копированием по времени.

2. Восстановить существующую БД

Глядя на официальный документ по восстановлению веб-сайта, если вы хотите восстановить резервную копию существующей базы данных, это не так просто, как описано выше.Стратегия, принятая здесь, заключается в резервном копировании Xi'an во временную БД, а затем копирование временной БД. Записать данные в существующую БД

Конкретные демонстрационные шаги следующие (обратите внимание, что выполнение этой сводки может напрямую зависеть от ранее восстановленной резервной базы данных)

Восстановите резервную копию существующей базы данных yhhblogNew

# 首先是将备份恢复到一个不存在的数据库 yhhblog_bk 中
influxd restore -portable -db yhhblog -newdb yhhblog_bk yhhblog_per

Войдите в консоль притока, выполните копирование и удаление временной базы данных.

# 准备 yhhblogNew 数据库
> create database yhhblogNew

# 将临时数据库中的数据导入已存在的数据库中
> use yhhblog_bk
> SELECT * INTO yhhblogNew..:MEASUREMENT FROM /.*/ GROUP BY *
> drop yhhblog_bk

3. Если политика хранения уже существует, восстановите

influxd restore -portable -db yhhblog -newdb yhhblog_tmp -rp autogen -newrp autogen_tmp  yhhblog

Войдите в консоль притока и выполните копию

> user yhhblog_tmp
> SELECT * INTO yhhblogNew.autogen.:MEASUREMENT FROM /yhhblog_tmp.autogen_tmp.*/ GROUP BY *
> drop database yhhblog_tmp

4. Другое

Официальный также написал два других метода восстановления, один заброшен, другой в автономном режиме приведет к потере данных, и его не рекомендуется использовать, и сейчас большинство сообщений в блоге в резервном копировании и восстановлении являются этой устаревшей схемой, не очень дружелюбной, здесь не подробно

III. Другое

1. Серый блог: https://juneb.GitHub.IO/hex блог

Серый личный блог, записывающий все посты блога по учебе и работе, приглашаю всех в гости

2. Заявление

Это не так хорошо, как письмо веры.Контент уже был размещен, и это чисто из семьи.Из-за ограниченных личных возможностей неизбежно будут упущения и ошибки.Если вы найдете ошибки или лучше предложения, вы можете критиковать и исправлять их.

3. Сканируйте внимание

Блог Little Grey и общедоступный номер

QrCode

планета знаний

zhishi