- Monitoring
- 모니터링용 Software 설치
- CPU 모니터링
- Momory 모니터링
- Storage 모니터링
- Disk 증설
- Network 모니터링
- Process 모니터링
- MariaDB 모니터링
- Device 모니터링
- 기타 모니터링
- MariaDB 관리
- MariaDB 튜닝
- DB Connection 관리
- Partition 관리
- 데이터 백업과 삭제
- 예스코 데이터 삭제
- PGSKorea 관리
- SCADA 서비스 재기동
- 참고 문헌
Monitoring
모니터링용 Software 설치
#--- CentOS7
yum -y install sysstat
#--- NodeJS
npm install node-os-utils
#--- OS 버전 확인
cat /etc/*-release | uniq
#--- 설치된 package 버전 확인
rpm -q 이름
CPU 모니터링
#--- CPU 갯수
cat /proc/cpuinfo | grep processor
#--- CPU 평균 사용시간
sar 1 100 #--- 1초 단위로 100번 검사후 평균 표시
#--- 기타 확인 방법
top
pidstat 1
sar 1 3
sar -r
#--- CPU별 CPU 사용시간 표시
mpstat -P ALL 1
Momory 모니터링
#--- 전체 메모리 용량
cat /proc/meminfo | grep MemTotal
#--- 메모리 상태 확인
vmstat 1 100 #--- 1초마다 정보 표시
#--- r : 동작중인 프로세스의 수 #--- 값이 크면 cpu 부족
#--- free : Free memory (KB)
#--- si : swap-In #--- 0이 아니면 메모리 부족 (swap 영역에서 주메모리로 이동)
#--- so : Swap-Out #--- 0이 아니면 메모리 부족 (주메모리에서 swap 영역으로 이동)
#--- us, sy, id, wa, st : CPU 사용율
#--- us. User time, sy. System time, id. Idle, wa. Wait I/O, st. Stolen time
#--- 메모리 사용 평균 확인
free -m
#--- Free 메모리 확인
#--- buff/cache : I/O Buffer 캐시 사용량, 0에 가까우면 높은 Disk I/O 발생
#--- available
Storage 모니터링
yum install dstat
#--- 로그 정리
pm2 flush
cd /root/.pm2/logs
#--- 수작업으로 로그 정리
#--- 디스크 사용량 조회
df -h | egrep 'Avail|mapper'
iostat -xz 5
#--- r/s : Read 요청
#--- w/s : Write 요청
#--- rkB/s : Read KB/s
#--- wkB/s : Write KB/s
#--- await : I/O 처리 평균 시간 (밀리세컨드)
dstat
lsblk
Disk 증설
LVM (Logical Volume Manager)
yum -y install lvm2 lvm2-*
yum -y install xfsprogs #--- For mkfs.xfs
#--- KT Cloud에서 SSD Disk를 추가 한다.
#--- "Server > Disk" 메뉴에서 "Disk 생성"을 한다.
#--- Server Disk는 최대 13개까지 mount 가능하다고 합니다.
#--- "Server > Disk" 메뉴에서 "연결"을 사용하여 추가한 Disk를 Server에 연결 한다.
#--- 추가된 disk 확인
lsblk -l
fdisk -l
#--- Disk를 LVM용으로 설정
fdisk /dev/xvdk
# n p 1 엔터 엔터
# t 8e
# w
lsblk -l #--- part가 생김
fdisk -l
#--- LVM에 disk(part) 추가
#--- PG(Physical Volumn) 생성
# pvdisplay
pvcreate /dev/xvdk1
pvscan
#--- VG(Volumn Group) 확장
# vgscan
# 생성: vgcreate vg_data /dev/xvdk1
vgextend vg_data /dev/xvdk1
vgdisplay
#--- LV (Logical Volume) 확장
# lvscan
lvextend -l +100%FREE -n /dev/vg_data/lv_data
lvdisplay
#--- 파일 시스템 생성
# resize2fs /dev/mapper/vg_data-lv_data #--- for ext4
xfs_growfs /dev/mapper/vg_data-lv_data
df -Th
#--- Mount: 이미 되어 있어서 할 필요가 없음
# vi /root/mount.bash
# vi /etc/fstab
# /dev/vg_BigData001/lv_BigData001 /nas ext4 defaults 1 2
Network 모니터링
sar -n DEV 1
#--- rxpck/s
#--- txpck/s
#--- rxkB/s : 초당 네트워크 수신량
#--- txkB/s : 초당 네트워크 송신량
#--- TCP 통신량 요약
sar -n TCP,ETCP 1
#--- active/s : 로컬에서 요청한 초당 tcp connection 수 (connect())
#--- passive/s : 요청된 초당 tcp 커넥션 수 (accept())
#--- retrans/s : 초당 tcp 재연결 수
Process 모니터링
#--- CPU 사용량 top 10
#--- USER : 사용자 ID
#--- PID : Process ID
#--- PPID : Parent Process ID
#--- RSS : Non swapped Physical memory (KB)
#--- SIZE : SWAP 공간
#--- VSZ : 프로세스의 가상 메모리 (KB)
ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -pcpu | head -21
#--- Memory 사용량 top 10
#--- USER : 사용자 ID
#--- PID : Process ID
#--- PPID : Parent Process ID
#--- RSS : Non swapped Physical memory (KB)
#--- SIZE : SWAP 공간
#--- VSZ : 프로세스의 가상 메모리 (KB)
ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -pcpu | head -11
#--- 프로세스 정보
#--- /proc/${PID}/
cat /proc/${PID}/status
MariaDB 모니터링
-- scadadb 데이터베이스의 크기(MB)
SELECT table_schema, sum(round(((data_length + index_length) / 1024 / 1024), 2)) "MB"
FROM information_schema.TABLES
WHERE table_schema = "scadadb"
GROUP BY table_schema;
-- scadadb 데이터베이스에 포함된 테이블별 크기
SELECT TABLE_NAME, round(((data_length + index_length) / 1024 / 1024), 2) "MB"
FROM information_schema.TABLES
WHERE table_schema = "scadadb"
ORDER BY (data_length + index_length) DESC;
-- Table별 레코드 수
SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE table_schema = "scadadb"
ORDER BY TABLE_ROWS DESC;
-- obcondb 데이터베이스의 크기(MB)
SELECT table_schema, sum(round(((data_length + index_length) / 1024 / 1024), 2)) "MB"
FROM information_schema.TABLES
WHERE table_schema = "obcondb"
GROUP BY table_schema;
-- obcondb 데이터베이스에 포함된 테이블별 크기
SELECT TABLE_NAME, round(((data_length + index_length) / 1024 / 1024), 2) "MB"
FROM information_schema.TABLES
WHERE table_schema = "obcondb"
ORDER BY (data_length + index_length) DESC;
-- Table별 레코드 수
SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE table_schema = "obcondb"
ORDER BY TABLE_ROWS DESC;
-- 테이블에 포함된 partition 정보 표시
SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = 'devicedata1s';
-- scada 데이터베이스의 크기(MB)
SELECT table_schema, sum(round(((data_length + index_length) / 1024 / 1024), 2)) "MB"
FROM information_schema.TABLES
WHERE table_schema = "scada"
GROUP BY table_schema;
-- scada 데이터베이스에 포함된 테이블별 크기
SELECT TABLE_NAME, round(((data_length + index_length) / 1024 / 1024), 2) "MB"
FROM information_schema.TABLES
WHERE table_schema = "scada"
ORDER BY (data_length + index_length) DESC;
-- Table별 레코드 수
SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE table_schema = "scada"
ORDER BY TABLE_ROWS DESC;
-- scadadata 데이터베이스의 크기(MB)
SELECT table_schema, sum(round(((data_length + index_length) / 1024 / 1024), 2)) "MB"
FROM information_schema.TABLES
WHERE table_schema = "scadadata"
GROUP BY table_schema;
-- scadadata 데이터베이스에 포함된 테이블별 크기
SELECT TABLE_NAME, round(((data_length + index_length) / 1024 / 1024), 2) "MB"
FROM information_schema.TABLES
WHERE table_schema = "scadadata"
ORDER BY (data_length + index_length) DESC;
-- Table별 레코드 수
SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE table_schema = "scadadata"
ORDER BY TABLE_ROWS DESC;
Device 모니터링
#--- Site 갯수
SELECT count(*)
FROM sites
WHERE deleted = 0
AND status = 'Active';
#--- 장비 종류별 갯수
SELECT type, count(*)
FROM devices
WHERE deleted = 0
GROUP BY type
ORDER BY type ASC;
SELECT type, count(*)
FROM devices
WHERE deleted = 0
AND statusUse = "Active"
GROUP BY type
ORDER BY type ASC;
#--- Site별 장비 종류별 갯수
SELECT site, type, count(*)
FROM devices
WHERE deleted = 0
AND statusUse = "Active"
GROUP BY site, type
ORDER BY site ASC, type ASC;
기타 모니터링
#--- 시스템 메시지 확인
dmesg | tail
MariaDB 관리
MariaDB 튜닝
top
ps -ef | grep mysql
pidstat -t -p 31922 2
# TID: Thread ID
#--- CentOS 설정
ulimit -n 65536
ulimit -n
ulimit -a
mysql -uroot -p mysql
show variables like '%connect%';
show global status like '%connect%';
show global status like '%Threads%';
show variables like 'wait_timeout';
show variables like 'thread_cache_size';
set global max_connections=1024;
vi /etc/my.cnf
key_buffer_size = 256M
query_cache_size = 512M
tmp_table_size = 64M
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 2M
innodb_log_buffer_size = 2M
max_connections = 1024
max_connect_errors = 2048
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
join_buffer_size = 1M
thread_stack = 196K
binlog_cache_size = 32K
# net_read_timeout = 3600
# net_write_timeout = 3600
# wait_timeout = 3600
# interactive_timeout = 3600
wait_timeout = 60
interactive_timeout = 60
max_heap_table_size = 64M
table_cache = 1024
max_allowed_packet = 4M
myisam_sort_buffer_size = 64M
thread_cache = 8
thread_stack = 262144
query_cache_type = 1
query_cache_limit = 16M
DB Connection 관리
-- 서비스 기동
ulimit -n 65536
systemctl restart mariadb.service
-- Database에서 Connection 관리
mysql -uroot -p mysql
-- 최대 접속 가능한 connection 수 관리
SHOW VARIABLES LIKE 'max_connections';
SET GLOBAL max_connections=2048;
-- 동시 사용한 최대 connection 수
SHOW STATUS LIKE 'Max_used_connections';
-- 현재 접속되어 있는 connection 수
SHOW STATUS LIKE 'Threads_connected';
-- 현재 실행중인 connection 수
SHOW STATUS LIKE 'Threads_running';
-- 현재 실행중인 process list
SHOW processlist;
SHOW FULL processlist;
SELECT ID, COMMAND, TIME, TIME_MS, INFO
FROM information_schema.processlist
WHERE COMMAND <> "Sleep";
//--- Sequelize에서 Connection Pool 관리
//--- 전체 Connection Pool 크기 : 인스턴스 갯수 * pool.max
//--- conf.databases.scada.pool.max = 20;
const sequelize = new Sequelize(
database,
username,
password,
{
pool:{
max: 20,
min: 0,
acruire: 30000,
idle: 10000
}
}
);
Partition 관리
-- scada.sql 참조
SHOW TABLES;
SHOW CREATE TABLE `devicedata1s`;
SHOW INDEXES FROM `devicedata1s`;
-- Partition 조회
SELECT table_schema, table_name, partition_name, partition_method, partition_expression, table_rows, avg_row_length, data_length, index_length
FROM information_schema.partitions
WHERE table_name = 'devicedata1s'
ORDER BY table_name ASC, partition_name ASC;
-- Partition 추가
-- ALTER TABLE `devicedata1s` ADD PARTITION (
-- PARTITION p202401 VALUES LESS THAN ('2024019') ENGINE = InnoDB
-- );
-- 1493 오류
-- VALUES LESS THAN value must be strictly increasing for each partition
-- 위 오류 발생시 partition 재구성
alter table test_db.tb_part_test
REORGANIZE PARTITION p202101 into (
partition p202012 values less than ('2021-01-01:00') engine=innodb,
partition p202101 values less than ('2021-02-01:00') engine=innodb
);
-- Partition 삭제
-- Partition을 삭제하면 해당 파티션에 있던 데이터도 모두 삭제 된다.
-- ALTER TABLE `devicedata1s`
-- DROP PARTITION p201901;
-- Partition의 데이터 조회
SELECT *
FROM `devicedata1s` PARTITION (p201901);
-- Exchange Partition를 사용하여 Partition과 해당 데이터 삭제
-- sourceTable : 원본 테이블
-- targetTable : 삭제를 위한 임시 테이블
CREATE TABLE targetTable like sourceTable;
AlTER TABLE targetTable REMOVE PARTITIONING;
ALTER TABLE sourceTable
EXCHANGE PARTITION p201901 WITH TABLE targetTable
WITHOUT VALIDATION;
ALTER TABLE sourceTable
DROP PARTITION p201901;
DROP TABLE targetTable;
데이터 백업과 삭제
#--- 데이터베이스 장비에서 show 명령을 실행한 후, 가이드대로 작업할 것
cd /nas2/backup_data
/work/bin/backupDevicedata.bash INIT
ls -altF
/work/bin/backupDevicedata.bash DATA 1140
watch -n 5 'ls -alF devicedata101s_* | tail -15'
/work/bin/backupDevicedata.bash OTHER
watch -n 2 'ls -alF devicedata[2345678AB]s_*2023*'
#-----------------------------------------------------------
#--- 백업 파일 목록 보기
#-----------------------------------------------------------
cd /nas2/backup_data
watch -n 5 'ls -alF devicedata101s_* | tail -10'
watch -n 5 'ls -alF devicedata[2345678a]s_* | tail -10'
#-----------------------------------------------------------
#--- 정류기 데이터 백업
#--- 2019년부터 2022년 5월까지 백업 완료
#--- 최종 백업 번호 : 270 < expr ${id} + 139
#--- *** 백업한 파일을 외장 디스크로 다운로드할 것 ***
#--- 다음 백업 번호 : 280
#-----------------------------------------------------------
# /work/bin/backupDevicedata.bash 파일 내용을 수정할 것
###--- 정류기 데이터 백업
###--- ID는 IDS이 갯수만큼 증가1G
IDS=(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29)
for id in ${IDS[@]}; do
ID=`expr ${id} + 180`
ID_FR=`expr ${ID} \* 5000000`
ID_TO=$(expr ${ID} \* 5000000 + 5000000 - 1)
funcBackupById devicedata101s ${ID_FR} ${ID_TO}
done
# 1 파일 백업시 약 40초 소요 (600MB, 500만 데이터)
# 영향 : 실시간 연동 현황에 약 2초 느려짐
#
# 139번 : 20220603111932
# 140번 : 20220604014446
# 189번 : 20220704083727
#-----------------------------------------------------------
#--- 기타 장비 데이터 백업
#--- 2019년부터 2021년 12월까지 백업 완료
#-----------------------------------------------------------
# /work/bin/backupDevicedata.bash 파일 내용을 수정할 것
TABLES=(
"devicedata2s" "devicedata3s" "devicedata4s" "devicedata5s"
"devicedata6s" "devicedata7s" "devicedata8s" "devicedataAs"
)
for table in ${TABLES[@]}; do
# funcBackupByStatusDatetime ${table} 2019
# funcBackupByStatusDatetime ${table} 2020
# funcBackupByStatusDatetime ${table} 2021
echo " "
done
#-----------------------------------------------------------
#--- 정류기 데이터 삭제
#--- ALTER TABLE devicedata1s TRUNCATE PARTITION p202010;
#--- ALTER TABLE devicedata1s TRUNCATE PARTITION p202010;
#-----------------------------------------------------------
# 아래에서 ppp로 표시한 2군데서 작업할 것
삭제
ppp 로 표시한 부분에서 작업할 것
-- ---------------------------------------------------------
-- Table별 레코드 수
SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE table_schema = "scadadb"
AND table_name like 'devicedata%'
ORDER BY TABLE_NAME ASC;
-- 2022년 8월 11일 기준
-- devicedata1s : 1,986,886,632 (201901 ~ 202204)
-- "2019년 ~ 2021년" 데이터 사용
-- 2,090,000,000 (~ 2022년 3월)
-- devicedata101s : 1,264,574,472 (202204 ~ )
--- "2022년 ~" 데이터 사용
-- devicedata2s : 4,532,070 (2019 ~ )
-- devicedata3s : 153,827 (2019 ~ )
-- devicedata4s : 397,148 (2019 ~ )
-- devicedata5s : 38,900,043 (2019 ~ )
-- devicedata6s : 5,119,056 (2019 ~ )
-- devicedata7s : 43,877 (2020 ~ 2020)
-- devicedata8s : 18,926,554 (202101 ~)
-- devicedataAs : 11 (없음)
-- 2019년 백업 대상 : devicedata[123456]s > 삭제 예정
-- 2020년 백업 대상 : devicedata[123456]s > 일부 삭제 예정
-- 2021년 백업 대상 : devicedata[12345678]s
-- 2022년 백업 대상 : devicedata[1234568]s, devicedata101s
-- ---------------------------------------------------------
-- 장비 정보 백업
SHOW CREATE TABLE `devices`;
SHOW CREATE TABLE `devicedata1s`;
SHOW CREATE TABLE `devicedata101s`;
SHOW CREATE TABLE `devicedata2s`;
SHOW CREATE TABLE `devicedata3s`;
SHOW CREATE TABLE `devicedata4s`;
SHOW CREATE TABLE `devicedata5s`;
SHOW CREATE TABLE `devicedata6s`;
SHOW CREATE TABLE `devicedata7s`;
SHOW CREATE TABLE `devicedata8s`;
SHOW CREATE TABLE `devicedataAs`;
-- ---------------------------------------------------------
-- 장비 데이터 백업
select id from devicedata1s order by id asc;
select id from devicedata101s order by id asc;
select id from devicedata2s order by id asc;
select id from devicedata3s order by id asc;
select id from devicedata4s order by id asc;
select id from devicedata5s order by id asc;
select id from devicedata6s order by id asc;
select id from devicedata7s order by id asc;
select id from devicedata8s order by id asc;
select id from devicedataAs order by id asc;
-- devicedata1s : 86,907,761
-- devicedata101s : 1
-- devicedata2s : 1
-- devicedata3s : 1
-- devicedata4s : 1
-- devicedata5s : 1
-- devicedata6s : 1
-- devicedata7s : 1
-- devicedata8s : 1
-- devicedataAs : 1
-- /work/bin/backupDevicedata.bash 프로그램 실행
-- ---------------------------------------------------------
-- 장비 데이터 삭제
-- 파트션의 데이터를 삭제 한다.
ALTER TABLE devicedata1s TRUNCATE PARTITION p201901;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201902;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201903;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201904;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201905;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201906;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201907;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201908;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201909;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201910;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201911;
ALTER TABLE devicedata1s TRUNCATE PARTITION p201912;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202001;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202002;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202003;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202004;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202005;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202006;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202007;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202008;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202009;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202010;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202011;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202012;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202101;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202102;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202103;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202104;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202105;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202106;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202107;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202108;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202109;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202110;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202111;
ALTER TABLE devicedata1s TRUNCATE PARTITION p202112;
ALTER TABLE devicedata1s TRUNCATE PARTITION p999999;
-- ppp 여기에 추가할 것
-- devicedata1s 파티션을 삭제 한다.
ALTER TABLE devicedata1s DROP PARTITION p201901;
ALTER TABLE devicedata1s DROP PARTITION p201902;
ALTER TABLE devicedata1s DROP PARTITION p201903;
ALTER TABLE devicedata1s DROP PARTITION p201904;
ALTER TABLE devicedata1s DROP PARTITION p201905;
ALTER TABLE devicedata1s DROP PARTITION p201906;
ALTER TABLE devicedata1s DROP PARTITION p201907;
ALTER TABLE devicedata1s DROP PARTITION p201908;
ALTER TABLE devicedata1s DROP PARTITION p201909;
ALTER TABLE devicedata1s DROP PARTITION p201910;
ALTER TABLE devicedata1s DROP PARTITION p201911;
ALTER TABLE devicedata1s DROP PARTITION p201912;
ALTER TABLE devicedata1s DROP PARTITION p202001;
ALTER TABLE devicedata1s DROP PARTITION p202002;
ALTER TABLE devicedata1s DROP PARTITION p202003;
ALTER TABLE devicedata1s DROP PARTITION p202004;
ALTER TABLE devicedata1s DROP PARTITION p202005;
ALTER TABLE devicedata1s DROP PARTITION p202006;
ALTER TABLE devicedata1s DROP PARTITION p202007;
ALTER TABLE devicedata1s DROP PARTITION p202008;
ALTER TABLE devicedata1s DROP PARTITION p202009;
ALTER TABLE devicedata1s DROP PARTITION p202010;
-- ppp 여기에 추가할 것
-- devicedata101s 파티션을 삭제 한다.
ALTER TABLE devicedata101s DROP PARTITION p201901;
ALTER TABLE devicedata101s DROP PARTITION p201902;
ALTER TABLE devicedata101s DROP PARTITION p201903;
ALTER TABLE devicedata101s DROP PARTITION p201904;
ALTER TABLE devicedata101s DROP PARTITION p201905;
ALTER TABLE devicedata101s DROP PARTITION p201906;
ALTER TABLE devicedata101s DROP PARTITION p201907;
ALTER TABLE devicedata101s DROP PARTITION p201908;
ALTER TABLE devicedata101s DROP PARTITION p201909;
ALTER TABLE devicedata101s DROP PARTITION p201910;
ALTER TABLE devicedata101s DROP PARTITION p201911;
ALTER TABLE devicedata101s DROP PARTITION p201912;
ALTER TABLE devicedata101s DROP PARTITION p202001;
ALTER TABLE devicedata101s DROP PARTITION p202002;
ALTER TABLE devicedata101s DROP PARTITION p202003;
ALTER TABLE devicedata101s DROP PARTITION p202004;
ALTER TABLE devicedata101s DROP PARTITION p202005;
ALTER TABLE devicedata101s DROP PARTITION p202006;
ALTER TABLE devicedata101s DROP PARTITION p202007;
ALTER TABLE devicedata101s DROP PARTITION p202008;
ALTER TABLE devicedata101s DROP PARTITION p202009;
ALTER TABLE devicedata101s DROP PARTITION p202010;
ALTER TABLE devicedata101s DROP PARTITION p202011;
ALTER TABLE devicedata101s DROP PARTITION p202012;
ALTER TABLE devicedata101s TRUNCATE PARTITION p202112;
ALTER TABLE devicedata101s DROP PARTITION p202101;
ALTER TABLE devicedata101s DROP PARTITION p202102;
ALTER TABLE devicedata101s DROP PARTITION p202103;
ALTER TABLE devicedata101s DROP PARTITION p202104;
ALTER TABLE devicedata101s DROP PARTITION p202105;
ALTER TABLE devicedata101s DROP PARTITION p202106;
ALTER TABLE devicedata101s DROP PARTITION p202107;
ALTER TABLE devicedata101s DROP PARTITION p202108;
ALTER TABLE devicedata101s DROP PARTITION p202109;
ALTER TABLE devicedata101s DROP PARTITION p202110;
ALTER TABLE devicedata101s DROP PARTITION p202111;
ALTER TABLE devicedata101s DROP PARTITION p202112;
-- ---------------------------------------------------------
-- To-Do : 장비 데이터 분류 프로그램
-- 정류기 : 2019년 ~ 2021년 (devicedata1s)
-- 2022년 01월 ~ (devicedata101s)
-- ---------------------------------------------------------
-- To-Do : 예스코의 장비 데이터 백업과 삭제 프로그램
-- 예스코의 정류기 데이터는 5일간만 보관
예스코 데이터 삭제
YESCO (예스코)
siteKey : '09'
type : '1'. 정류기
--- Query시 약 3분 소요
--- 500000000 : 2022-05-10
--- 600000000 : 2022-05-22
SELECT id, siteKey, type, deviceKey, statusDatetime
FROM devicedata101s
WHERE 500000000 <= id AND id < 600000000
AND siteKey = '09'
AND type = '1'
ORDER BY id DESC
LIMIT 20;
--- 삭제시 약 4분 소요 ( 0건 데이터 삭제)
--- 삭제시 약 4분 소요 ( 5,162,967건 데이터 삭제)
--- 삭제시 약 27분 소요 (54,699,458건 데이터 삭제)
DELETE FROM devicedata101s
WHERE 500000000 <= id AND id < 600000000
AND siteKey = '09'
AND type = '1';
--- Storage 사이즈를 줄이는 방법
--- DELETE 명령은 데이터만 삭제하고 용량은 줄어들지 않는다.
-- 사용 불가 : DB가 너무 느려져서 다른 처리가 되지 않음
-- ALTER TABLE devicedata101s
-- OPTIMIZE PARTITION p202201;
PGSKorea 관리
SCADA 서비스 재기동
#--- scada.techpalm.co.kr 장비에 root 사용자로 로그인하여 작업
#--- IP : 211.251.239.145
#--- Port : 2022
#--- 접속 형식 : SSH
#--- 서비스 종료
cd /work/appl/obcon
/work/appl/obcon/bin/proxyctl.bash stop
/work/appl/obcon/bin/scada_schedulectl.bash stop
/work/appl/obcon/bin/scadactl.bash stop
ps -ef | grep node | egrep 'obcon/bin'
# 위 명령으로 표시되는 라인이 없어야 함.
# 표시되는 라인이 있는 경우, 비정상 상황이므로 강제로 죽여야 함
# root 19322 1 9 10:26 pts/0 00:00:57 ... 생략 ...
# 위와 같이 표시되는 경우
# "kill -9 19322" 명령을 실행하여 강제로 죽인다.
#--- 서비스 시작
/work/appl/obcon/bin/scadactl.bash start
# https://scada.techpalm.co.kr/scada/homes?action=home
# 위 사이트에 접속하여 화면이 정상 표시되는지 확인 한다.
# 화면이 정상 표시된 이후에 다음 작업을 진행 한다.
/work/appl/obcon/bin/scada_schedulectl.bash start
/work/appl/obcon/bin/proxyctl.bash start
# https://scada.techpalm.co.kr/scada/homes?action=home
# 위 사이트에 예스코 관리자로 로그인 한다.
# "관리" 메뉴에서 "연동" 메뉴를 선택 한다.
# 전송일자와 데이터 일자가 현재 시간과 일치하는지 확인 한다.
# 일치하지 않으면, proxy 오류 이므로 proxy만 종료후 다시 시작한다.
# 정류기 데이터는 1분 정도 지나면 정상 수신된다.
# 즉시 정류기 정보를 갱신하기를 원하면 다음 작업을 진행 한다.
# https://scada.techpalm.co.kr/scada/homes?action=home
# 위 사이트에 관리자로 로그인 한다.
# "관리" 메뉴에서 "장비" 메뉴를 선택 한다.
# 아무 장비나 "편집" 메뉴를 눌러 아무것도 변경하지 않고 저장 한다.
# 그러면, 모든 장비 정보가 즉시 갱신 된다.
참고 문헌
최종 수정일: 2024-09-30 12:26:18
이전글 :
다음글 :