ืืื ืืืึธืื ืืื ืฆื ืืืืื ืืื ืืืจ ืืืื ืขืจืฉืืขืจ ืืขืจืึธืื ืืขืจืคืึทืจืื ื ืคืื ืจืืกืืึธืจืื ื ืึท ืคึผืึธืกืืืจืขืก ืืึทืืึทืืืืก ืฆื ืคืื ืคืึทื ืืงืฉืึทื ืึทืืืื. ืืื ืืึธื ืืื ืืึทืงืขื ื ืืื ืื Postgres DBMS ืืื ืึท ืืึทืื ืืึธืจ ืฆืืจืืง; ืคืจืืขืจ ืืึธื ืืื ืงืืื ืืขืจืคืึทืจืื ื ืืื ืืืืืึทืืืืก ืึทืืืื ืืกืืจืึทืฆืืข.
ืืื ืึทืจืืขื ืืื ืึท ืืึทืื-ืืขืืืึธืคึผืก ืื ืืฉืขื ืืจ ืืื ืึท ืืจืืืก ืขืก ืคืืจืืข. ืืื ืืืขืจ ืคืืจืืข ืืขืืืขืืึธืคึผืก ืืืืืืืืืจื ืคึฟืึทืจ ืืืื-ืืึทืกืข ืืึทืืื ืื ืืก, ืืื ืืื ืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืคืึธืจืฉืืขืืื ื, ืืืฉืึทืื ืืื ืืืคึผืืืืืึทื ื. ืืื ืืื ืืขืืืขื ืืขืืขืื ืึท ื ืึธืจืืึทื ืึทืจืืขื: ืฆื ืืขืจืืืึทื ืืืงื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืืืฃ ืืืื ืกืขืจืืืขืจ. ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืขืฉืจืืื ืืื Django, ืืขืฉืึทืก ืื ืืขืจืืืึทื ืืืงื ืืืืืจืืืฉืึทื ื ืืขื ืขื ืืืจืืืขืงืึธืื (ืืฉืึทื ืืขืก ืืื ืื ืืึทืืึทืืืืก ืกืืจืืงืืืจ), ืืื ืืืืืขืจ ืืขื ืคึผืจืึธืฆืขืก ืืืจ ื ืขืืขื ืึท ืคืื ืืึทืืึทืืืืก ืืึทืืคึผ ืืืจื ืื ื ืึธืจืืึทื pg_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 ืืืขืืืืืึทืืขืจ (ืึทืจืืึทื ืืขืจืขืื ื ืืืึทื ืืขืงืขืก) ืฆื ืึท ืืืืขืจ ืึธืจื. ืื ืืืืคึผื ืืึทื ืืื ืืื ืืืขืจ ืืขืฉืขืคื ืืื ื ืืฉื ืฆื ืืึทืื ืื ืืืื ืขืจืืขืจ. ืืืืขื ืขื
ืืื ื ืื ืืึทืืึทืืืืก ืืืื ืืขืืจืืขื ืคึฟืึทืจ ืืืจ, ืืื ืืืืืืขื ืืื ืฆื ืึท ืจืขืืืืขืจ ืืึทืืึทืืืืก ืืึทืืคึผ, ืึธืืขืจ ืืงืกืงืืืืื ืื ืืืฉ ืืื ืืึทืืืืืฉื ืืึทืื (ืึธืคึผืฆืืข -ื, --ืขืงืกืงืืืืข-ืืึทืืืข = ืืืฉ ืืื pg_dump).
ืืขืจ ืกืขืจืืืขืจ ืืื ืืขืืืขื ืคืืืืฉ, ืขืก ืืื ืืขืืืขื ืืืืืขืืืขื ืฆื ื ืขืืขื ืึท ืืึธืืขื ืืืืื. ืื ืืึทืงืึทืคึผ ืืื ืึทืืืขืงืืขื ืืืขื, ืืึธืื ืก ืืึทื ืืืืฃ.
ืืขืงืข ืกืืกืืขื ืืฉืขืง
ืืืืืขืจ ืืืจ ืคึผืจืืืืจื ืฆื ืืืงืขืจื ืื ืืึทืืึทืืืืก, ืืืจ ืืึทืจืคึฟื ืฆื ืืึทืื ืืืืขืจ ืึทื ืึทืืฅ ืืื ืืื ืกืืจ ืืื ืื ืืขืงืข ืกืืกืืขื ืืื. ืืื ืืื ืคืึทื ืคืื ืืืกืืืืงืก, ืคืึทืจืจืืืื ืืื, ืืืืึทื ืึทื ืืขืจืฉ ืืืจ ืงืขื ืขื ื ืึธืจ ืืึทืื ืื ืืืื ืขืจืืขืจ.
ืืื ืืืื ืคืึทื, ืื ืืขืงืข ืกืืกืืขื ืืื ืื ืืึทืืึทืืืืก ืืื ืืึธืื ืืขื ืืื "/srv" ืืื ืืขืจ ืืืคึผ ืืื ืืขืืืขื ืขืงืกื4.
ืกืืึธืคึผืคึผืื ื ืื ืืึทืืึทืืึทืกืข: ืกืืกืืขืืงืื ืืึทืืื [ืืืืขืื ืืืฉืืฆื] ืืื ืงืึธื ืืจืึธืืืจื ืึทื ืื ืืขืงืข ืกืืกืืขื ืืื ื ืืฉื ืืื ื ืืฆื ืืืจื ืืืขืจ ืขืก ืื ืืื ืงืขื ืขื ืืืื ืึทื ืืึธืื ืืขื ืืื ืืขื ืืึทืคึฟืขื ืืกืึธืฃ:
lsof +D /srv
ืืื ืืืื ืืื ืฆื ืืึทืืื ืื ืจืขืืืก ืืึทืืึทืืืืก, ืืืืึทื ืขืก ืืื ืืืื ื ืืฆื "/srv". ืืืืึทืืขืจ ืืื ืึทื ืืึธืื ืืขื / srv (ืืืืืืื ื).
ืืขืจ ืืขืงืข ืกืืกืืขื ืืื ืึธืคึผืืขืฉืืขืื ืืื ืื ื ืืฆื e2fsck ืืื ืื ืืึทืฉืืืืขื -f (ืงืจืึทืคื ืงืึธื ืืจืึธืืืจืื ื ืืคืืื ืืืื ืคืืืขืกืืกืืขื ืืื ืื ืืขืฆืืืื ื ืจืืื):
ืืืืึทืืขืจ, ื ืืฆื ืื ื ืืฆื dumpe2fs (sudo dumpe2fs /dev/mapper/gu2โsys-srv | grep ืึธืคึผืืขืฉืืขืื) ืืืจ ืงืขื ืขื ืืึทืฉืืขืืืงื ืึทื ืื ืืฉืขืง ืืื ืึทืงืฉืื ืืืจืืืขืงืึธืื:
e2fsck ืืืื ืึทื ืงืืื ืคืจืืืืขืืขื ืืขื ืขื ืืขืคึฟืื ืขื ืืืืฃ ืื ืขืงืกื4 ืืขืงืข ืกืืกืืขื ืืืจืื, ืืืึธืก ืืืื ืึทื ืืืจ ืงืขื ืขื ืคืึธืจืืขืฆื ืืจืืื ื ืฆื ืืืงืขืจื ืื ืืึทืืึทืืืืก, ืึธืืขืจ ืืื ืฆืืจืืงืงืืืขื ืฆื ืืืึทืงืืื ืคืื (ืคืื ืงืืจืก, ืืืจ ืืึทืจืคึฟื ืฆื ืึธื ืงืืึทืคึผื ืื ืืขืงืข ืกืืกืืขื ืฆืืจืืง ืืื ืึธื ืืืืื ืื ืืึทืืึทืืืืก).
ืืืื ืืืจ ืืึธืื ืึท ืืฉืืืืช ืกืขืจืืืขืจ, ืืืื ืืืืขืจ ืฆื ืงืึธื ืืจืึธืืืจื ืื ืกืืึทืืืก ืคืื ืื ืืืกืงืก (ืืืจื smartctl -a /dev/XXX) ืึธืืขืจ RAID ืงืึธื ืืจืึธืืืขืจ ืฆื ืืึทืื ืืืืขืจ ืึทื ืื ืคึผืจืึธืืืขื ืืื ื ืืฉื ืืืืฃ ืื ืืึทืื ืืืึทืจื ืืืจืื. ืืื ืืืื ืคืึทื, ืื RAID ืืื ืืขืืืขื "ืืึทืจืืืืึทืจืข", ืึทืืื ืืื ืืขืืขืื ืื ืืืืข ืึทืืืื ืืกืืจืึทืืึธืจ ืฆื ืงืึธื ืืจืึธืืืจื ืื ืกืืึทืืืก ืคืื ืื RAID (ืืขืจ ืกืขืจืืืขืจ ืืื ืืขืืืขื ืขืืืขืืข ืืื ืืขืจื ืงืืืึธืืขืืขืจืก ืึทืืืขืง ืคืื ืืืจ). ืขืจ ืืื ืืขืืืื ืึทื ืขืก ืืขื ืขื ืงืืื ืขืจืจืึธืจืก, ืืืึธืก ืืืื ืึทื ืืืจ ืงืขื ืขื ืืืฉืืืื ืึธื ืืืืื ืจืขืกืืขืจืืืฉืึทื.
ืคึผืจืืืื 1: zero_damaged_pages
ืืืจ ืคืึทืจืืื ืื ืฆื ืื ืืึทืืึทืืืืก ืืืจื psql ืืื ืึท ืืฉืืื ืืืึธืก ืืื ืกืืคึผืขืจืืกืขืจ ืจืขืื. ืืืจ ืืึทืจืคึฟื ืึท ืกืืคึผืขืจ ืืึทื ืืฆืขืจ, ืืืืึทื ... ืึธืคึผืฆืืข ืืขืจืึธ_ืืึทืืึทืืืฉื_ืคึผืึทืืขืก ื ืึธืจ ืขืจ ืงืขื ืืืืฉื. ืืื ืืืื ืคืึทื ืขืก ืืื ืคึผืึธืกืืืจืขืก:
psql -h 127.0.0.1 -U postgres -s [ืืึทืืึทืืืืก_ื ืึทืืข]
ืึธืคึผืฆืืข ืืขืจืึธ_ืืึทืืึทืืืฉื_ืคึผืึทืืขืก ืืืจืฃ ืฆื ืืืื ืึธืจืืจื ืืืืขื ืขื ืขืจืจืึธืจืก (ืคึฟืื ืื ืคึผืึธืกืืืจืขืกืคึผืจืึธ ืืืขืืืืืื):
ืืืขื 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
ืืื ืืืื ืคืึทื, ืื ืืืฉ ืึผืืื ืงืกื ืืืงืก ืงืกื ืืืงืก ืงืกื ืืืงืก ืฉืืจืืช! ืืข ื ืื ื ืืขืืืจืค ื ืื ื ืืื
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, ืขืก ืืื ืืืืืืืง ืฆื ื ืืฆื ืึท ORDER BY ืคึผืื ืงื ืึทืืื ืึทื ืื ืจืขืืืืืึทื ืจืึธืื ืืขื ืขื ืืืืืขืงืขืจื ืืื ืึท ืกืคึผืขืฆืืคืืฉ ืกืืจ. ืึทื ืืขืจืฉ, ืึทื ืคึผืจืืืืงืืึทืืึทื ืกืึทืืกืขืฅ ืคืื ืจืึธืื ืืืขื ืืืื ืืืืืขืงืขืจื.
ืืึธื, ืื ืืืืื ืืึทืคึฟืขื ืืื ืืขืืืขื ืคืึทืืฉ: ืขืจืฉืืขืจ, ืขืก ืืื ืืขืืืขื ื ืื ืกืืจ ืืืจื, ืืขืจ ืจืขืืืืืึทื ืงืขื ืืืื ืืขืืช. ืฆืืืืืื ืก, Postgres ืขืจืฉืืขืจ ืืื ืฆื ืืืขืจืงืืงื ืืื ืืึธืคึผืงืขื OFFSET ืจืึธืื, ืืื ืืื ืื ืงืจืืกืื ื ืคืึธืืึธ ืคึผืจืึธืืืึทืงืืืืืึทืื ืืืึธืื ืึทืจืึธืคึผืืืื ืืคืืื ืืืืึทืืขืจ.
ืคึผืจืืืื 4: ื ืขืืขื ืึท ืืึทืืคึผ ืืื ืืขืงืกื ืคืึธืจืขื
ืืขืจื ืึธื ืึท ืคึผืึธื ืขื ืืจืืืืึทื ื ืืขืืึทื ืง ืืขืงืืืขื ืฆื ืืืื ืืืื ืื ื: ื ืขืืขื ืึท ืืึทืืคึผ ืืื ืืขืงืกื ืคืึธืจืขื ืืื ืึทื ืึทืืืื ืื ืืขืฆืืข ืจืขืงืึธืจืืขื ืฉืืจื.
ืืืขืจ ืขืจืฉืืขืจ, ืืึธืื ืก ื ืขืืขื ืึท ืงืืง ืืื ืื ืกืืจืืงืืืจ ืคืื ืื ืืืฉ. ws_log_smevlog:
ืืื ืืื ืืืขืจ ืคืึทื ืืืจ ืืึธืื ืึท ืืืึทื "ืื", ืืืึธืก ืึผืืื ืื ืืื ืฆืืง ืืืขื ืืืคืืขืจ (ืืึธืืืึทื ืง) ืคืื ืื ืจืืืขืจื. ืืขืจ ืคืืื ืืื ืืขืืืขื ืืืื:
- ืืืจ ืึธื ืืืืื ืฆื ื ืขืืขื ืึท ืืึทืืคึผ ืืื ืืขืงืกื ืคืึธืจืขื (ืืื ืื ืคืึธืจืขื ืคืื sql ืงืึทืืึทื ืื)
- ืืื ืึท ืืืืขืจ ืคืื ื ืืื ืฆืืื, ืื ืืึทืืคึผ ืืืึธืื ืืืื ืื ืืขืจืึทืคึผืืื ืจืขืื ืฆื ืึท ืืขืืช, ืึธืืขืจ ืื ืืขืงืกื ืืขืงืข ืืืึธืื ื ืึธื ืืืื ืืขืจืืืขืืืขื ืืืืฃ ืืืกืง
- ืืืจ ืงืืงื ืืื ืื ืกืืฃ ืคืื ืื ืืขืงืกื ืืขืงืข, ืืขืจืืื ืืืจ ืืขืคึฟืื ืขื ืื ืืืขื ืืืคืืขืจ (ืฉืืึทื) ืคืื ืื ืืขืฆืืข ืฉืืจื ืืืึธืก ืืื ืึทืืืขืงืืขื ืืืขื ืืฆืืื
ืืื ืืึธื ืึธื ืืขืืืืื ื ืขืืขื ืึท ืืึทืืคึผ ืืื ืืขืงืกื ืคืึธืจืขื:
pg_dump -U my_user -d my_database -F p -t ws_log_smevlog -f ./my_dump.dump
ืื ืืึทืืคึผ, ืืื ืืขืจืืืึทืจื, ืืื ืื ืืขืจืึทืคึผืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืืขืืช:
pg_dump: Error message from server: ERROR: invalid page in block 4123007 of relatton base/16490/21396989
ืืืืืืขืจ ืืืจื ืขืง ืืื ืืขืงืืงื ืืื ืื ืกืืฃ ืคืื ืื ืืึทืืคึผ (ืขืง -5 ./my_dump.dump) ืืืกืงืึทืืืขืจื ืึทื ืื ืืึทืืคึผ ืืื ืื ืืขืจืึทืคึผืืื ืืืืฃ ืื ืฉืืจื ืืื ืฉืืึทื 186 525. "ืืืื ืืขืจ ืคึผืจืึธืืืขื ืืื ืืื ืื ืฉืืจื ืืื ืฉืืึทื 186 526, ืขืก ืืื ืฆืขืืจืืื ืืื ืืึทืจืฃ ืืืื ืืืืกืืขืืขืงื!" - ืืื ืืื ืืขืืจืืื. ืึธืืขืจ, ืืึทืื ืึท ืึธื ืคึฟืจืขื ืฆื ืื ืืึทืืึทืืืืก:
ยซืืืืกืงืืืึทืื * ืคึฟืื ws_log_smevlog ืืื id = 186529"ืขืก ืืึธื ืืื ืึทืจืืืกืืขืืืืื ืึทื ืึทืืฅ ืืื ืืื ืืื ืืขืจ ืืื ืืข... ืจืืืขื ืืื ืืื ืืขืงืก 186 โ 530 ืืึธืื ืืืื ืืขืึทืจืืขื ืึธื ืคึผืจืึธืืืขืืขื. ืื ืื ืืขืจ "ืืจืืืืึทื ื ืืขืืึทื ืง" ื ืื ืึทื ืืขืจืฉ. ืฉืคืขืืขืจ ืืื ืืื ืคืืจืฉืืื ืขื ืคืืจืืืืก ืืืก ืืื ืคืืกืืจื: ืืืขื ืืขื ืืืืกืืขืงื ืืื ืืืืฉื ืื ืืืื ืคืื ื ืืืฉ ืืืขืจื ืืื ื ืืฉื ืืืืกืืขืืขืงื ืคืืืืฉ, ื ืืจ ืื ืืขืฆืืืื ื ืืืก "ืืืื ืืืคื" ืึทืืืึธืืืึทืงืืื ืืื ืืืฆืืืื ื ืื ืฉืืจืืช ืืืก ืืืืกืืขืืขืงื ืืื ืืืื ืื ืฉืืจืืช ื ืืืืืื ื ืืฆื. ืฆื ืคึฟืึทืจืฉืืืื, ืืืื ืื ืืึทืื ืืื ืื ืืืฉ ืขื ืืขืจืื ืืขื ืืื ืึทืืืึธืืืึทืงืืื ืืื ืขื ืืืืึทืื, ืขืก ืืื ื ืืฉื ืกืืึธืจื ืกืึทืงืืืขื ืืฉืึทืื.
ืคึผืจืืืื 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
ืืืื ืืืขืจ ืขืก ืื ืงืขื ื ืืฉื ืคึฟืึทืจืฉืืืื, ืืขืจ ืืึทืคึฟืขื ืึทืจืืขื ืืื ืืืื: ืขืก ืกืงืึทื ื ืื ืืืฉ ืจืืืขืจื ืืืจื ืจืืืขืจื ืืื ืกืขื ืื ืกืืืึธืื ืฆื / ืืขืื / ื ืึทื, ืึธืืขืจ ืืืื ืื SELECT ืืึทืคึฟืขื ืคืืืื, ืืขืจ ืืขืืช ืืขืงืกื ืืื ืืขืืจืืงื (ืกืืืขืจืจ ืืื ืืขืฉืืงื ืฆื ืื ืงืึทื ืกืึธืื) ืืื ืึท ืฉืืจื ืืื ืืขื ืืขืืช ืืื ืืขืืจืืงื (ืืึทื ืง ืฆื ||, ืืืึธืก ืืืื ืึทื ืื ืืืืกืงืืืึทืื ืืื ืคึผืจืึธืืืขืืก (ืืขืจ ืฆืืจืืงืงืขืจ ืงืึธื ืคืื ืื ืืึทืคึฟืขื) ืืื ื ืืฉื 0)).
ืืื ืืื ืืขืืืขื ืืึทืืืืืง, ืืื ืืื ืื ืืขืงืกืื ืืืฉืืคื ืืืืฃ ืืขื ืคืขืื id:
ืืขื ืืืื ืึทื ืืขืคึฟืื ืขื ืึท ืฉืืจื ืืื ืื ืืขืืขืื ืฉืืึทื ืืึธื ื ืืฉื ื ืขืืขื ืคืื ืฆืืื. ืืื ืืขืึธืจืืข ืขืก ืืึธื ืึทืจืืขืื. ื ื, ืืึธืื ืืื ืื ืืืืคื ืื ืืึทืคึฟืขื ืืื ืืืืงืก ืืื ืืึธืืืจ ืืฒื ืฉืืึธืคึฟื.
ืืื ืืขืจ ืืึธืจืื ืืื ืืขืคึฟืื ืขื ืึทื ืืืขืื 90 ืืืื ืกื ืืึธืื ืฉืืื ืืืืื, ืืืึธืก ืืื ื ืึธืจ ืืืืขืจ 000%. ืึท ืืืกืืขืฆืืืื ื ืจืขืืืืืึทื ืืืขื ืงืึทืืคึผืขืจื ืืื ืื ืคืจืืขืจืืืงืข ืืืคึฟื (5%)! ืืืขืจ ืืื ืืื ื ืืฉื ืืืขืื ืฆื ืืืึทืจืื 2 ืืขื ...
ืคึผืจืืืื 6: SELECT, FROM, WHERE id>= ืืื id
ืืขืจ ืงืื ื ืืื ืึท ืืืกืืขืฆืืืื ื ืกืขืจืืืขืจ ืืขืืึทืงืืืืึทื ืฆื ืื ืืึทืืึทืืืืก: ืฆืืืืืขื ืืืง ืคึผืจืึทืกืขืกืขืจ Intel Xeon E5-2697 v2, ืขืก ืืขื ืขื ืืขืืืขื ืืื ืคืืืข ืืื 48 ืคึฟืขืืขื ืืื ืืื ืืืขืจ ืึธืจื! ืื ืืึทืกืข ืืืืฃ ืื ืกืขืจืืืขืจ ืืื ืืขืืืขื ืืืจืืฉื ืืืืขื; ืืืจ ืงืขื ืืจืืคืงืืคืืข ืืืขืื 20 ืคึฟืขืืขื ืึธื ืงืืื ืคืจืืืืขืืขื. ืขืก ืืื ืืืื ืืขื ืื ืืึทืจืึทื: ืืื ืคืื ืืื 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. ืืืืืืขืจ ืืืื ืืืจ ืคืฉืื ืืขืืืื ืืขืคืื ืขื ืื ืืขื ืืืข ID ืืืขืจื ืคืื ืื ืคืจืืืืขื ืจืขืงืืจืืก. ืฆื ืืึธื ืืึธืก, ืืืจ ืงืืงื ืืืจื ืืื ืืืขืจ ืงืืื ืืื ืคึผืจืึธืืืขืืึทืืืง ืจืขืงืึธืจืืก ืืื ืึท ืฉืจืื ืคืื 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