Thingsboard Device 단위 Backup Restore 전 사전 준비 사항
1. Device ID 확인
백업하고자 하는 단말 정보의 Copy device ID 통해 준비
2. SQL문 실행을 위한 Console을 접속 및 DB 접속 해서 Thingsboard 테이블 접속
sudo -u postgres psql
postgres=# \c thingsboard;
1. Backup 할 Table 생성하여 Copy 테이블 생성 (Create a table with only the data you need to export:)
create table export_telemetry as
select * from ts_kv
where entity_id = '[your_device_id]' and ts>[your_value_start_ts] and ts<[your_value_end_ts];
[your_device_id] - ID of device you want to migrate telemetry from;
[your_value_start_ts] - start of range in epoch milliseconds
[your_value_end_ts] - end of time range in milliseconds
2. 이전 할 DB의 device 가 같은 지 확인 후 다른 경우 변경 작업 진행(이번 작업에서는 device_id 동일하여 생략) Create a device on the ThingsBoard you want to migrate this data to, copy its ID and edit the export table correspondingly:
update table export_telemetry
set entity_id='[new_device_id]'
where entity_id='[old_device_id]'
[new_device_id] - ID of the device you want import data to, from new ThingsBoard instance
[old_device_id] - ID of the device you are exporting data from, from old ThingsBoard instance
3. Copy한 DB 테이블 덤프
Dump this specific table:
pg_dump -U postgres -h <host_name> -d thingsboard --table=export_telemetry --data-only --column-inserts > export_telemetry.sql
4. Edit the file (via any text editor) and change all
public.export_telemetry entries to public.ts_kv
이전할 서버와 백업한 서버의 Table 정보가 같아서 thingsboard.ts_tv가 아닌 public.ts_tv로 교체 작업
sed 명령어로 파일 일괄 변환
sed -i 's/public.export_telemetry_0695074/public.ts_kv/g' export_telemetry_0695074.sql
5. Restore it onto your new DB instance:
덤프 뜬 sql 문을 이용하여 Restore
RDS의 경우는 -h 옵션의 localhost 정보를 AWS RDS Endpoint 정보로 교체 해서 restore 하면 된다.
psql -U postgres -d thingsboard -h localhost < export_telemetry_0695074.sql
댓글