ืื ื ืจืืฆื ืืฉืชืฃ ืืชืื ืืืืืื ืืืืฆืืืช ืืจืืฉืื ื ืฉืื ืืฉืืืืจ ืืกื ื ืชืื ืื Postgres ืืคืื ืงืฆืืื ืืืืช ืืืื. ืืืจืชื ืืช Postgres DBMS ืืคื ื ืืฆื ืฉื ื, ืืคื ื ืื ืื ืืื ืื ื ืืกืืื ืื ืืืื ืืกืื ื ืชืื ืื ืืื.
ืื ื ืขืืื ืืืื ืืก DevOps ืืืืฆื ืืืืจืช IT ืืืืื. ืืืืจื ืฉืื ื ืืคืชืืช ืชืืื ื ืืฉืืจืืชื ืขืืืก ืืืื, ืืื ื ืืืจืื ืขื ืืืฆืืขืื, ืชืืืืงื ืืคืจืืกื. ืงืืืืชื ืืฉืืื ืกืื ืืจืืืช: ืืขืืื ืืคืืืงืฆืื ืืฉืจืช ืืื. ืืืคืืืงืฆืื ืืชืืื ื-Django, ืืืืื ืืขืืืื ืืชืืฆืขืืช ืืขืืจืืช (ืฉืื ืืืื ืืืื ื ืืกืืก ืื ืชืื ืื), ืืืคื ื ืชืืืื ืื ืื ื ืืืงืืื dump ืืกืืก ื ืชืื ืื ืืื ืืจื ืชืืื ืช pg_dump ืืจืืืื, ืืืชืจ ืืืืืื.
ืืืจืขื ืฉืืืื ืืืชื ืฆืคืืื ืืขืช ืืืฆืืข dump (ืืจืกืช Postgres 9.5):
pg_dump: Oumping the contents of table โws_log_smevlogโ failed: PQgetResult() failed.
pg_dump: Error message from server: ERROR: invalid page in block 4123007 of relatton base/16490/21396989
pg_dump: The command was: COPY public.ws_log_smevlog [...]
pg_dunp: [parallel archtver] a worker process dled unexpectedly
ืืจืง "ืืฃ ืื ืืืงื ืืืืืง" ืืืืจ ืขื ืืขืืืช ืืจืืช ืืขืจืืช ืืงืืฆืื, ืืื ืจืข ืืืื. ืืคืืจืืืื ืฉืื ืื ืืืฆืข ืืขืฉืืช ืืืงืื ืืื ืขื ืืคืฉืจืืช ืืคืก_ืืคืื_ืคืืืืื ืืคืชืืจ ืืช ืืืขืื ืืืืช. ืืืื, ืืืื ื ื ืกื...
ืืชืืื ื ืื ืืืืืื
ืืืืจื! ืืงืคื ืืงืืช ืืืืื Postgres ืืคื ื ืื ื ืืกืืื ืืฉืืืจ ืืช ืืกื ืื ืชืื ืื ืฉืื. ืื ืืฉ ืื ืืืื ื ืืืจืืืืืืช, ืขืฆืืจ ืืช ืืกื ืื ืชืื ืื ืืฆืื ืชืืื ืช ืืฆื. ืื ืื ื ืืชื ืืฆืื ืชืืื ืช ืืฆื, ืขืฆืืจ ืืช ืืกื ืื ืชืื ืื ืืืขืชืง ืืช ืืชืืื ืฉื ืกืคืจืืืช Postgres (ืืืื ืงืืฆื wal) ืืืงืื ืืืื. ืืขืืงืจ ืืขืกืง ืฉืื ื ืืื ืื ืืืืืืจ ืืช ืืืฆื. ืืงืจืื
ืืืืืื ืฉืืกื ืื ืชืื ืื ืืืจื ืืื ืขืื ืืฉืืืื, ืืืืืชื ืืช ืขืฆืื ื-dump ืจืืื ืฉื ืืกื ื ืชืื ืื, ืื ืื ืืืืชื ืืช ืืืืื ืขื ื ืชืื ืื ืคืืืืื (ืืคืฉืจืืช -T, --exclude-table=TABLE ื-pg_dump).
ืืฉืจืช ืืื ืคืืื, ืื ืืคืฉืจ ืืื ืืฆืื ืชืืื ืช ืืฆื. ืืืืืื ืืืกืจ, ืืืื ื ืืฉืื.
ืืืืงืช ืืขืจืืช ืงืืฆืื
ืืคื ื ืฉื ื ืกื ืืฉืืืจ ืืช ืืกื ืื ืชืื ืื, ืขืืื ื ืืืืื ืฉืืื ืืกืืจ ืขื ืืขืจืืช ืืงืืฆืื ืขืฆืื. ืืืืงืจื ืฉื ืืขืืืืช, ืชืงื ืืืชื, ืื ืืืจืช ืืชื ืืืื ืจืง ืืืืืืจ ืืช ืืืฆื.
ืืืงืจื ืฉืื, ืืขืจืืช ืืงืืฆืื ืขื ืืกื ืื ืชืื ืื ืืืืชื ืืืจืืืช "/srv" ืืืกืื ืืื ext4.
ืขืฆืืจืช ืืกื ืื ืชืื ืื: systemctl ืขืฆืืจ [ืืืื ืืืื"ื] ืืืืืง ืฉืืขืจืืช ืืงืืฆืื ืืื ื ืืฉืืืืฉ ืขื ืืื ืืฃ ืืื ืื ืืชื ืืืื ืืืชื ืืืืฆืขืืช ืืคืงืืื ืืกืืฃ:
lsof +D /srv
ื ืืืฆืชื ืื ืืขืฆืืจ ืืช ืืกื ืื ืชืื ืื ืฉื redis, ืืืืืื ืฉืืื ืื ืืฉืชืืฉ "/srv". ืืฉืื ืืื ืืชื ืชืงืชื / srv (umount).
ืืขืจืืช ืืงืืฆืื ื ืืืงื ืืืืฆืขืืช ืืื ืืฉืืจืืช e2fsck ืขื ืืืชื -f (ืืคื ืืืืงื ืื ืื ืืขืจืืช ืืงืืฆืื ืืกืืื ืช ื ืงืืื):
ืืืืจ ืืื, ืืืืฆืขืืช ืืื ืืฉืืจืืช dumpe2fs (sudo dumpe2fs /dev/mapper/gu2โsys-srv | grep ืืืง) ืชืืื ืืืืื ืฉืืืืืงื ืืื ืืืฆืขื:
e2fsck ืืืืจ ืฉืื ื ืืฆืื ืืขืืืช ืืจืืช ืืขืจืืช ืืงืืฆืื ext4, ืื ืฉืืืืจ ืฉืืชื ืืืื ืืืืฉืื ืื ืกืืช ืืฉืืืจ ืืช ืืกื ืื ืชืื ืื, ืื ืืืชืจ ื ืืื ืืืืืจ ืื ืืืงืื ืืื (ืืืืื, ืืชื ืฆืจืื ืืืขืืืช ืืช ืืขืจืืช ืืงืืฆืื ืืืืจื ืืืืคืขืื ืืช ืืกื ืื ืชืื ืื).
ืื ืืฉ ืื ืฉืจืช ืคืืื, ืืงืคื ืืืืืง ืืช ืืฆื ืืืืกืงืื (via smartctl -a /dev/XXX) ืื ืืงืจ RAID ืืื ืืืืื ืฉืืืขืื ืืื ื ืืจืืช ืืืืืจื. ืืืงืจื ืฉืื, ื-RAID ืืชืืจืจ ื"ืืืืจื", ืื ืืืงืฉืชื ืืืื ืื ืืืงืืื ืืืืืง ืืช ืืฆื ื-RAID (ืืฉืจืช ืืื ืืืจืืง ืืื ืืืืช ืงืืืืืืจืื ืืื ื). ืืื ืืืจ ืฉืื ืืื ืฉืืืืืช, ืื ืฉืืืืจ ืฉืื ืื ื ืืืืื ืืืืืื ืืืชืืื ืืฉืืงืื.
ื ืืกืืื 1: ืืคืก_ืืคืื_ืคืืืืื
ืื ื ืืชืืืจืื ืืืกื ืื ืชืื ืื ืืืืฆืขืืช psql ืขื ืืฉืืื ืืขื ืืืืืืช ืืฉืชืืฉ-ืขื. ืื ืื ื ืฆืจืืืื ืืฉืชืืฉ-ืขื, ืื... ืืึนืคึผึฐืฆึดืึธื ืืคืก_ืืคืื_ืคืืืืื ืจืง ืืื ืืืื ืืฉื ืืช. ืืืงืจื ืฉืื ืื postgres:
psql -h 127.0.0.1 -U postgres -s [ืฉื_ืืกืืก ืื ืชืื ืื]
ืืคืฉืจืืช ืืคืก_ืืคืื_ืคืืืืื ื ืืจืฉ ืขื ืื ืช ืืืชืขืื ืืฉืืืืืช ืงืจืืื (ืืืชืจ postgrespro):
ืืืฉืจ PostgreSQL ืืืื ืืืชืจืช ืขืืื ืคืืืื, ืืื ืืืจื ืืื ืืืืื ืขื ืฉืืืื ืืืืื ืืช ืืขืกืงื ืื ืืืืืช. ืื zero_damaged_pages ืืืคืขื, ืืืขืจืืช ืืืงืื ืืืช ืืืฆืืื ืืืืจื, ืืืคืกืช ืืช ืืืฃ ืืคืืื ืืืืืจืื ืืืืฉืืื ืืขืืืื. ืืืคื ืคืขืืื ืื ืืืจืก ื ืชืื ืื, ืืืืืจ ืืช ืื ืืฉืืจืืช ืืืฃ ืืคืืื.
ืื ื ืืืคืฉืจืื ืืช ืืืคืฉืจืืช ืืื ืกืื ืืืฆืข ืืืงืื ืืื ืฉื ืืฉืืืื ืืช:
VACUUM FULL VERBOSE
ืืืจืื ืืฆืขืจ, ืืื ืจืข.
ื ืชืงืื ื ืืฉืืืื ืืืื:
INFO: vacuuming "โpublic.ws_log_smevlogโ
WARNING: invalid page in block 4123007 of relation base/16400/21396989; zeroing out page
ERROR: unexpected chunk number 573 (expected 565) for toast value 21648541 in pg_toast_106070
ื ืืกืืื 2: ืืื ืืงืก ืืืืฉ
ืืขืฆื ืืจืืฉืื ื ืืืืื ืื ืขืืจื. ืืืจื ืืื ืืงืืช ืฉื ืืืคืืฉ ืืฆืืชื ืืช ืืืืค ืืฉื ื - ืืืืื ืจื ืืงืก ืฉืืืื ืคืืื. ืจืืืชื ืืช ืืขืฆื ืืื ืืืงืืืืช ืจืืื, ืืื ืืื ืื ืขืืจืจื ืืืื. ืืื ื ืขืฉื ืืื ืืงืก ืืืืฉ:
reindex table ws_log_smevlog
ืจื ืืงืก ืืืฉืื ืืื ืืขืืืช.
ืืื ืื ืื ืขืืจ, ืืืงืื ืืื ืงืจืก ืขื ืฉืืืื ืืืื. ืืืืืื ืฉืื ื ืจืืื ืืืืฉืืื ืืช, ืืชืืืชื ืืืคืฉ ืขืื ืขืฆืืช ืืืื ืืจื ื ืื ืชืงืืชื ืืืฉืื ืืขื ืืื ืืืื
ื ืืกืืื 3: SELECT, LIMIT, OFFSET
ืืืืืจ ืืืขืื ืืฆืืข ืืืกืชืื ืขื ืืืืื ืฉืืจื ืืืจ ืฉืืจื ืืืืกืืจ ื ืชืื ืื ืืขืืืชืืื. ืจืืฉืืช ืขืืื ื ืืืกืชืื ืขื ืื ืืฉืืจืืช:
for ((i=0; i<"Number_of_rows_in_nodes"; i++ )); do psql -U "Username" "Database Name" -c "SELECT * FROM nodes LIMIT 1 offset $i" >/dev/null || echo $i; done
ืืืงืจื ืฉืื, ืืืืื ืืืืื 1 628 991 ืฉืืจืืช! ืืื ืฆืืจื ืืืคื ืืืื
for ((i=0; i<1628991; i++ )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog LIMIT 1 offset $i" >/dev/null || echo $i; done
ืืืืงืจ ืืืืืชื ืืืืืง ืืื ืืืืจืื ืืชื ืืืื. ืืืคืชืขืชื ืืืืืชื ืฉืืืจื 20 ืฉืขืืช ืจืง 2% ืืื ืชืื ืื ื ืกืจืงื! ืื ืจืฆืืชื ืืืืืช 50 ืืื. ืขืื ืืืฉืืื ืืืืื.
ืืื ืื ืืืชืจืชื. ืชืืืชื ืืื ืืกืจืืงื ืืจืื ืื ืื ืืจืื ืืื. ืืืชืืขืื (ืฉืื ื-postgrespro) ืืืืืชื:
OFFSET ืืฆืืื ืืืื ืขื ืืกืคืจ ืืฉืืจืืช ืฉืฆืืื ืืคื ื ืชืืืืช ืืคืื ืฉื ืฉืืจืืช.
ืื ืฆืืื ื ืื OFFSET ืืื LIMIT, ืืืขืจืืช ืืืืืช ืชืืืื ืขื ืฉืืจืืช ื-OFFSET ืืืืืจ ืืื ืืชืืืื ืืกืคืืจ ืืช ืืฉืืจืืช ืขืืืจ ืืืืืฅ LIMIT.ืืขืช ืฉืืืืฉ ื-LIMIT, ืืฉืื ืืืฉืชืืฉ ืื ืืกืขืืฃ ORDER BY ืื ืฉืฉืืจืืช ืืชืืฆืื ืืืืืจื ืืกืืจ ืืกืืื. ืืืจืช, ืชืช-ืงืืืฆืืช ืืืชื ืฆืคืืืืช ืฉื ืฉืืจืืช ืืืืืจื.
ืืจืืจ ืฉืืคืงืืื ืืขืื ืืืืชื ืฉืืืื: ืจืืฉืืช, ืื ืืื ืกืืจ ืืคื, ืืชืืฆืื ืขืืืื ืืืืืช ืฉืืืื. ืฉื ืืช, Postgres ืชืืืื ืืื ืฆืจืื ืืกืจืืง ืืืืื ืขื ืฉืืจืืช OFFSET, ืืขื ืืืืืช OFFSET ืืคืจืืืืงืืืืืืช ืชืจื ืขืื ืืืชืจ.
ื ืืกืืื 4: ืงื dump ืืฆืืจืช ืืงืกื
ืืื ืขืื ืืืืื ืจืขืืื ืืืจืืง ืืืืืจื: ืงื dump ืืฆืืจืช ืืงืกื ืื ืชื ืืช ืืฉืืจื ืืืืจืื ื ืฉืืืงืืื.
ืืื ืจืืฉืืช, ืืืื ื ืกืชืื ืขื ืืื ื ืืืืื. ws_log_smevlog:
ืืืงืจื ืฉืื ื ืืฉ ืื ื ืืืจ "ืชึฐืขืึผืึทืช ืึถืืึผืช", ืฉืืืื ืืช ืืืืื (ืืืื ื) ืืืืืืื ืฉื ืืฉืืจื. ืืชืืื ืืช ืืืืชื ืืื:
- ืื ืื ื ืืชืืืืื ืืงืืช dump ืืฆืืจืช ืืงืกื (ืืฆืืจื ืฉื ืคืงืืืืช sql)
- ืื ืงืืืช ืืื ืืกืืืืช, ื-dump ืืืคืกืง ืขืงื ืฉืืืื, ืื ืงืืืฅ ืืืงืกื ืขืืืื ืืืฉืืจ ืืืืกืง
- ืื ื ืืกืชืืืื ืืกืืฃ ืงืืืฅ ืืืงืกื, ืืืื ืื ื ืืืฆืืื ืืช ืืืืื (ืืืื) ืฉื ืืฉืืจื ืืืืจืื ื ืฉืืืกืจื ืืืฆืืื
ืืชืืืชื ืืงืืช dump ืืฆืืจืช ืืงืกื:
pg_dump -U my_user -d my_database -F p -t ws_log_smevlog -f ./my_dump.dump
ื-dump, ืืฆืคืื, ืืืคืกืง ืขื ืืืชื ืฉืืืื:
pg_dump: Error message from server: ERROR: invalid page in block 4123007 of relatton base/16490/21396989
ืืืืฉื ืืืจื ืื ื ืืกืชืืืชื ืขื ืงืฆื ืืืืืื (ืื ื -5 ./my_dump.dump) ืืืื ืฉืืืืืื ื ืงืืขื ืืงื ืขื id 186 525. "ืื ืืืขืื ืืื ืืงื ื ืืื ืขื id 186 526, ืื ืฉืืืจ, ืืฆืจืื ืืืืืง ืืืชื!" - ืืฉืืชื. ืืื, ืืืฆืืข ืฉืืืืชื ืืืกื ืื ืชืื ืื:
ยซืืืจ * ืืชืื ws_log_smevlog ืฉืื id=186529"ืืชืืจืจ ืฉืืื ืืกืืจ ืขื ืืงื ืืื... ืื ืฉืืจืืช ืขื ืืืืื 186 - 530 ืขืืื ืืื ืืขืืืช. ืขืื "ืจืขืืื ืืืจืืง" ื ืืฉื. ืืืืืจ ืืืชืจ ืืื ืชื ืืื ืื ืงืจื: ืืฉืืืืงืื ืืืฉื ืื ื ืชืื ืื ืืืืื, ืื ืื ื ืืืงืื ืคืืืืช, ืืื ืืกืืื ืื ื"ืืืคืืื ืืชืื", ืืื ืืืืข ืืืงืื ืืืืืืื ืืืกืื ืฉืืจืืช ืืื ืืืืืงืืช ืืืืคืฉืจ ืฉืืืืฉ ืืืืจ ืืฉืืจืืช ืืื. ืืื ืืืืื, ืื ืื ืชืื ืื ืืืืื ืืฉืชื ืื ื-autovacuum ืืืคืขื, ืื ืื ืื ืืืืืกื ืื ืืจืฆืฃ.
ื ืืกืืื 5: SELECT, FROM, WHERE id=
ืืืฉืืื ืืช ืขืืฉืื ืืืชื ื ืืืงืื ืืืชืจ. ืืขืืื ืื ืชืืืชืจ, ืืชื ืฆืจืื ืืืืช ืขื ืืกืืฃ ืืืืืืื ืืขืฆืื ืืืืืืืืช ืฉืื. ืื ืืืืืชื ืื ืกืืช ืืคืฉืจืืช ืืืจืช: ืคืฉืื ืขืืื ืืื ืืจืฉืืืืช ืืืกื ืื ืชืื ืื ืืื ืืื. ืืืืจืช ืืืื ื ืฉื ืืืืื ืฉืื (ืจืื ืืืขืื), ืืฉ ืื ื ืฉืื ืืืื ืฉืืื ืืืืืื (ืืคืชื ืจืืฉื). ืืฉ ืื ื 1 ืฉืืจืืช ืืืืื ื id ืืกืืืจืื, ืื ืฉืืืืจ ืฉืื ืื ื ืืืืืื ืคืฉืื ืืขืืืจ ืขืืืื ืืื ืืื:
for ((i=1; i<1628991; i=$((i+1)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id=$i" >/dev/null || echo $i; done
ืื ืืืฉืื ืื ืืืื, ืืคืงืืื ืคืืขืืช ืืืืคื ืืื: ืืื ืกืืจืงืช ืืช ืืืืื ืฉืืจื ืืืจ ืฉืืจื ืืฉืืืืช stdout ืื / dev / null, ืืื ืื ืืคืงืืื SELECT ื ืืฉืืช, ืืื ืืืืคืก ืืงืกื ืืฉืืืื (stderr ื ืฉืื ืืงืื ืกืืื) ืืืืืคืกืช ืฉืืจื ืืืืืื ืืช ืืฉืืืื (ืชืืื ื-||, ืื ืฉืืืืจ ืฉื-select ืืื ืืขืืืช (ืงืื ืืืืืจื ืฉื ืืคืงืืื ืืื ื 0)).
ืืื ืื ืืื, ืืฆืจื ืื ืืื ืืงืกืื ืืฉืื id:
ืืืฉืืขืืช ืืื ืฉืืฆืืืช ืงื ืขื ืืืืื ืืจืฆืื ืื ืืืืจื ืืงืืช ืืจืื ืืื. ืืชืืืืจืื ืื ืืืืจ ืืขืืื. ืืืื, ืืื ื ืจืืฅ ืืช ืืคืงืืื ืคื ืืื tmux ืืืื ื ืื ืืืฉืื.
ืขื ืืืืงืจ ืืืืืชื ืฉื ืฆืคื ื-90 ืขืจืืื, ืฉืื ืงืฆืช ืืืชืจ ื-000%. ืชืืฆืื ืืฆืืื ืช ืืืฉืืืื ืืฉืืื ืืงืืืืช (5%)! ืืื ืื ืจืฆืืชื ืืืืืช 2 ืืื...
ื ืืกืืื 6: SELECT, FROM, WHERE id >= ืืืืื
ืืืงืื ืืื ืฉืจืช ืืฆืืื ืืืืงืืฉ ืืืกื ืื ืชืื ืื: ืืขืื ืืคืื Intel Xeon E5-2697 v2, ืืื ืขื 48 ืฉืจืฉืืจืื ืืืืงืื ืฉืื ื! ืืขืืืก ืขื ืืฉืจืช ืืื ืืืืฆืข; ืืืืื ื ืืืืจืื ื-20 ืฉืจืฉืืจืื ืืื ืืขืืืช. ืืื ืื ืืกืคืืง ืืืืจืื RAM: ืขื 384 ืืืื-ืืืื!
ืืื, ืืคืงืืื ืืืืชื ืฆืจืืื ืืืืืช ืืงืืืื:
for ((i=1; i<1628991; i=$((i+1)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id=$i" >/dev/null || echo $i; done
ืืื ืืคืฉืจ ืืื ืืืชืื ืชืกืจืื ืืคื ืืืืื ืื, ืืื ืืืจืชื ืืฉืืืช ืืืงืืื ืืืืืจื ืืืืชืจ: ืคืืฆืื ืืื ื ืืช ืืืืื 0-1628991 ืืืจืืืืื ืฉื 100 ืจืฉืืืืช ืืืจืฅ ืื ืคืจื 000 ืคืงืืืืช ืืืืืคืก:
for ((i=N; i<M; i=$((i+1)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id=$i" >/dev/null || echo $i; done
ืืื ืื ืื ืืื. ืืชืืืืจืื, ืืืืืจ ืืืกื ื ืชืื ืื ืืืจืฉ ืื ืืื ืืืฉืืื ืืขืจืืช. ืืืืืจ 1 ืื ืืื ืืื ืืืืืื, ืชืกืืื. ืืื, ืืืื ื ืฉืืืฃ 628 ืฉืืจืืช ืืืงืื ืืืืืจ ืืื ืขื ืืื. ืืชืืฆืื ืืื, ืืฆืืืช ืืคื ืืื:
for ((i=N; i<M; i=$((i+1000)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id>=$i and id<$((i+1000))" >/dev/null || echo $i; done
ืคืชื 16 ืืืื ืืช ืืืคืขืืช tmux ืืืคืขื ืืช ืืคืงืืืืช:
1) for ((i=0; i<100000; i=$((i+1000)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id>=$i and id<$((i+1000))" >/dev/null || echo $i; done 2) for ((i=100000; i<200000; i=$((i+1000)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id>=$i and id<$((i+1000))" >/dev/null || echo $i; done โฆ 15) for ((i=1400000; i<1500000; i=$((i+1000)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id>=$i and id<$((i+1000))" >/dev/null || echo $i; done 16) for ((i=1500000; i<1628991; i=$((i+1000)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id>=$i and id<$((i+1000))" >/dev/null || echo $i; done
ืืื ืืืืจ ืืื ืงืืืืชื ืืช ืืชืืฆืืืช ืืจืืฉืื ืืช! ืืืืืจ (ืืขืจืืื XXX ื-ZZZ ืืื ื ื ืฉืืจืื ืขืื):
ERROR: missing chunk number 0 for toast value 37837571 in pg_toast_106070
829000
ERROR: missing chunk number 0 for toast value XXX in pg_toast_106070
829000
ERROR: missing chunk number 0 for toast value ZZZ in pg_toast_106070
146000
ืืืฉืืขืืช ืืื ืฉืฉืืืฉ ืฉืืจืืช ืืืืืืช ืฉืืืื. ืืืืืื ืฉื ืจืฉืืืืช ืืืขืื ืืจืืฉืื ื ืืืฉื ืืื ืืื ืืื 829 ื-000, ืืืืืื ืฉื ืืฉืืืฉื ืืื ืืื 830 ื-000. ืืืืจ ืืื, ืคืฉืื ืืืื ื ืฆืจืืืื ืืืฆืื ืืช ืขืจื ืืืืื ืืืืืืง ืฉื ืจืฉืืืืช ืืืขืื. ืืฉื ืื, ืื ื ืืกืชืืืื ืขื ืืืืื ืฉืื ื ืขื ืจืฉืืืืช ืืขืืืชืืืช ืขื ืฉืื 146 ืืืืืื ืืช ืืืืื:
for ((i=829000; i<830000; i=$((i+1)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id=$i" >/dev/null || echo $i; done 829417 ERROR: unexpected chunk number 2 (expected 0) for toast value 37837843 in pg_toast_106070 829449 for ((i=146000; i<147000; i=$((i+1)) )); do psql -U my_user -d my_database -c "SELECT * FROM ws_log_smevlog where id=$i" >/dev/null || echo $i; done 829417 ERROR: unexpected chunk number ZZZ (expected 0) for toast value XXX in pg_toast_106070 146911
ืกืืฃ ืืื
ืืฆืื ื ืืช ืืฉืืจืืช ืืืขืืืชืืืช. ืื ืื ื ื ืื ืกืื ืืืกื ืื ืชืื ืื ืืจื psql ืืื ืกืื ืืืืืง ืืืชื:
my_database=# delete from ws_log_smevlog where id=829417;
DELETE 1
my_database=# delete from ws_log_smevlog where id=829449;
DELETE 1
my_database=# delete from ws_log_smevlog where id=146911;
DELETE 1
ืืืคืชืขืชื, ืืขืจืืื ื ืืืงื ืืื ืืขืืืช ืื ืืื ืืคืฉืจืืช ืืคืก_ืืคืื_ืคืืืืื.
ืืื ืืชืืืจืชื ืืืกื ืื ืชืื ืื, ืขืฉืืชื ืืืงืื ืืื (ืื ื ืืืฉื ืฉืื ืืื ืฆืืจื ืืขืฉืืช ืืืช), ืืืืกืืฃ ืืกืจืชื ืืืฆืืื ืืช ืืืืืื ืืืืฆืขืืช pg_dump. ืืืืืื ื ืืงืื ืืื ืฉืืืืืช! ืืืขืื ื ืคืชืจื ืืฆืืจื ืื ืื ืืืืคืฉืช. ืืฉืืื ืื ืืืขื ืืืื, ืืืจื ืื ืื ืืจืื ืืืฉืืื ืืช ืืฆืืื ื ืืืฆืื ืคืชืจืื!
ืชืืืืช ืืืกืงื ื
ืื ืืชืืจืจ ืื ืืกืืื ืืจืืฉืื ืฉืื ืืฉืืืืจ ืืกื ื ืชืื ืื ืืืืชื ืฉื Postgres. ืื ื ืืืืืจ ืืช ืืืืืื ืืื ืขืื ืืจืื ืืื.
ืืืืกืืฃ, ืืจืฆืื ื ืืืืจ ืชืืื ื-PostgresPro ืขื ืชืจืืื ืืชืืขืื ืืจืืกืืช ืืขืืืจ
ืืงืืจ: www.habr.com