Postgres áá±áá¬áá±á·á áºááᯠáá¯ááºáá±á¬ááºááá¯ááºá áœááºážá¡ááŒáá·áºááŸáá á±áááºá¡ááœáẠáá»áœááºá¯ááºáááááá¯á¶ážá¡á±á¬ááºááŒááºáá±á¬á¡ááœá±á·á¡ááŒá¯á¶ááᯠááá·áºá¡á¬áž áá»áŸáá±ááá¯áá«áááºá ááœááºáá²á·áá²á· áá áºááŸá áºááœá²áá±á¬ááºá Postgres DBMS áá²á· áááºážááŸá®ážáá²á·áááºá á¡áááºááá±á¬á· database management ááŸá¬ á¡ááœá±á·á¡ááŒá¯á¶áá¯á¶ážááááŸááá²á·áá°ážá
áá»áœááºá¯ááºááẠá¡áá¯ááºáá®áá¯áá¹ááá®ááŒá®ážáá
áºáá¯ááœáẠDevOps á¡ááºáá»ááºáá®áá¬áá
áºááá¯ááºážá¡ááŒá
Ạá¡áá¯ááºáá¯ááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááá¯áá¹ááá®ááẠáááºááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœáẠáá±á¬á·ááºáá²ááᯠáá®ááœááºááŒá®áž á
áœááºážáá±á¬ááºáááºá ááŒá¯ááŒááºááááºážááááºážááŸá¯ááŸáá·áº á¡áá¯á¶ážáá»ááŸá¯á¡ááœáẠáá»áœááºá¯ááºááœáẠáá¬áááºááŸááá«áááºá áá¬áá¬áá
áºáá¯áá±á«áºááœáẠá¡ááºááá®áá±ážááŸááºážáá
áºáá¯ááᯠá¡ááºááááºáá¯ááºááẠá
á¶áá¬áááºáá
áºáᯠáá±ážá¡ááºáá¬ážáááºá á¡ááá®áá±ážááŸááºážááᯠ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
á¡ááŸá¬áž "ááááºááá¯á·ááŒááºážááœáẠáááŸááºáááºáá±á¬ á
á¬áá»ááºááŸá¬" ááá¯ááºá
áá
áºá¡ááá·áºááŸá¬ ááŒá¿áá¬ááœá±ááᯠááŒá±á¬ááᬠá¡áááºážááá¯ážáááºá ááá¯áááºá¡áá®ážáá®ážááœáẠááŒá¯áá¯ááºááẠá¡ááŒá¶ááŒá¯áá²á·áááºá áá¯ááºá
á¯ááºá
ááºá¡ááŒáá·áº option ááŸáá·áºá¡áá° zero_damaged_pages á€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážáááºá á
ááºážááŒáá·áºáá¡á±á¬ááº...
ááŒááºáááºááá°ááẠááŒááºáááºáá±áá«áááºá
ááááá±ážáá»ááº! áááºááá±áá¬áá±á·á
áºááá¯ááŒááºáááºááá°áááºáááŒáá¯ážá
á¬ážáá® Postgres á¡áááºáá°ážáá°áááºáá±áá»á¬áá«á
á±á ááá·áºááœáẠvirtual machine áá
áºáá¯ááŸááá»áŸáẠáá±áá¬áá±á·á
áºááá¯áááºááŒá®áž áá»áŸááºáá
áºááŒááºááá¯ááºáá«á áá»áŸááºáá
áºááŒááºááá¯ááºááẠáááŒá
áºááá¯ááºáá«á áá±áá¬áá±á·á
áºááá¯áááºááŒá®áž Postgres áááºážááœáŸáẠ(wal ááá¯ááºáá»á¬ážá¡áá«á¡áááº) á á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáá¯á¶ááŒá¯á¶áá±á¬áá±áá¬ááœáẠáá°ážáá°áá«á áá»áœááºá¯ááºááá¯á·ááá¯ááºáááºážááœáẠá¡áááá¡áá»ááºááŸá¬ á¡áá¬áá»á¬ážááᯠááá¯ááá¯ážá
á±ááŒááºážááá¯ááºáá«á áááºáá«á
áá±áá¬áá±á·á áºááẠáá»áœááºá¯ááºá¡ááœáẠáá±áá°áá»á¡á¬ážááŒáá·áº á¡áá¯ááºáá¯ááºáá±á¬ááŒá±á¬áá·áºá áá»áœááºá¯ááºááẠáá»áœááºá¯ááºá¡á¬áž áá¯á¶ááŸááºáá±áá¬áá±á·á áºá¡ááŸáá¯ááºáá¯á¶á¡ááŒá Ạááá·áºáááºáá¬ážáá±á¬áºáááºáž áá»ááºá á®ážáá±áá±á¬áá±áá¬ááŒáá·áº ááá¬ážááᯠáááºáá¯ááºáá²á·ááẠ(ááœá±ážáá»ááºááŸá¯ -Tá --exclude-table=TABLE pg_dump ááœááº)á
áá¬áá¬ááẠáá¯ááºááá¯ááºážááá¯ááºáá¬á áá»áŸááºáá áºááŒááºááá¯ááºááẠáááŒá áºááá¯ááºáá«á á¡áááºááááºážááŒááºážááᯠáááºááŸá¬ážááŒá®ážááŒá®á áááºááœá¬ážááŒáá«á áá¯á·á
ááá¯ááºá áá áºá á áºáá±ážááŒááºážá
áá±áá¬áá±á·á áºááᯠááŒááºáááºááá°ááẠáááŒáá¯ážá á¬ážáá®á á¡áá¬á¡á¬ážáá¯á¶ážááẠááá¯ááºá áá áºááá¯ááºááá¯áẠááá¯ááºáá»á±á¬áá®ááœá±ááŒá áºááẠááá¯á¡ááºáá«áááºá á¡ááŸá¬ážáá«ááẠááŒááºáá±ážáá«á ááá¯ááºááẠáááºá ááá¯ááá¯ážááœá¬ážááá¯ááºáá«áááºá
áá«á·ááá á¹á ááœááºá áá±áá¬áá±á·á áºáá«áá±á¬ááá¯ááºá áá áºá¡á¬ážáááºáááºáá¬ážáááºá "/srv" á¡áá»áá¯ážá¡á á¬ážááŸá¬ ext4 ááŒá áºáááºá
áá±áá¬áá±á·á
áºááᯠáááºááá·áºááŒááºáž- systemctl áááºáá«á [á¡á®ážáá±ážááºááá¯áá¬ááœááºáá¬ážáááº] ááá¯ááºá
áá
áºá¡á¬áž áááºáá°ááŸá¡áá¯á¶ážááááºááŒá±á¬ááºáž á
á
áºáá±ážááŒá®áž command ááá¯á¡áá¯á¶ážááŒá¯á unmount áá¯ááºááá¯ááºáááºá sof:
lsof +D /srv
Redis áá±áá¬áá±á·á áºááá¯áááºáž á¡áá¯á¶ážááŒá¯áá±áá¬ááŒá±á¬áá·áº áááºááá·áºáá²á·ááá«áááºá "/srv". áá±á¬ááºáá áºáᯠáá»áœááºáá±á¬áº ááŒá¯ááºááá¯ááºáááºá / srv (umount)á
utility ááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºá áá áºá¡á¬áž á á áºáá±ážáá²á·áááºá e2fsck ááá¯ááº-f ááŒáá·áº (ááá¯ááºá áá áºááẠááá·áºááŸááºážáááºáᯠá¡ááŸááºá¡áá¬ážááŒá¯áá¬ážáá±á¬áºáááºáž á á áºáá±ážááŒááºážááᯠá¡áááºážá¡ááŒááºáá¯ááºáá«á):
áá±á¬ááºáá
áºáá¯ááá±á¬á· utility ááá¯áá¯á¶ážáááºá dumpe2fs (sudo dumpe2fs /dev/mapper/gu2âsys-srv | grep á
á
áºáááºá) á
á
áºáá±ážááŸá¯ á¡ááŸááºáááẠáá¯ááºáá±á¬ááºáá²á·ááŒá±á¬ááºáž áááºá
á
áºáá±ážááá¯ááºáááº-
e2fsck ext4 ááá¯ááºá
áá
áºá¡ááá·áºááœáẠááŒá¿áá¬áááœá±á·ááŸááááŒá±á¬ááºážááá¯áááºá ááá¯ááá¯áááºááŸá¬ áááºááẠáá±áá¬áá±á·á
áºááᯠááŒááºáááºááá°ááẠáááºáááºááŒáá¯ážá
á¬ážááá¯ááºááẠááá¯á·ááá¯áẠáááºážáá¶ááá¯á· ááŒááºááœá¬ážáááºá áá±áá¬áááºá¡ááŒáá·áº (áá¯ááºáá«áááºá áááºááẠááá¯ááºá
áá
áºá¡á¬áž ááŒááºáááºáááºáááºááŒá®áž áá±áá¬áá±á·á
áºááᯠá
áááºááẠááá¯á¡ááºáá«áááºá
ááá·áºááœáẠáá¯ááºááá¯ááºážááá¯ááºáá¬áá¬áá¬áá áºáá¯ááŸááá«áá disks áá»á¬ážáá¡ááŒá±á¡áá±ááá¯áá±áá»á¬á á áºáá±ážáá« (ááŸáááá·áº smartctl -a /dev/XXXááŒá¿áá¬áááºáá¬á·ááºáá²á¡ááá·áºááœááºááá¯ááºááŒá±á¬ááºážáá±áá»á¬á á±ááẠ) ááá¯á·ááá¯áẠRAID ááááºážáá»á¯ááºáááááá¬á áá»áœááºá¯ááºáááá á¹á ááœááºá RAID ááẠ"áá¬á·ááºáá²" ááŒá áºáá¬áááºá ááá¯á·ááŒá±á¬áá·áº RAID áá¡ááŒá±á¡áá±ááá¯á á áºáá±ážáááºáá±ááá¶á á®áá¶ááá·áºááœá²áá°ááá¯áá»áœááºá¯ááºáá±á¬ááºážááá¯áá²á·ááẠ(áá¬áá¬áááºáá»áœááºá¯ááºááŸáá·áºáá®ááá¯áá®áá¬áá¬áá±á«ááºážáá»á¬ážá áœá¬áá±ážáááº) á á¡ááŸá¬ážá¡ááœááºážáá»á¬áž áááŸáááŒá±á¬ááºážá ááá¯ááá¯áááºááŸá¬ áá»áœááºá¯ááºááá¯á·ááẠááŒááºáááºáá°áá±á¬ááºáá±ážááᯠáá±áá»á¬áá±á«áẠá áááºááá¯ááºááŒá®áᯠááá¯áááºá
ááŒáá¯ážá á¬ážááŸá¯ 1- zero_damaged_pages
áá»áœááºá¯ááºááá¯á·ááẠá á°áá«á¡áá¯á¶ážááŒá¯áá°á¡ááœáá·áºá¡áá±ážááŸáááá·áº á¡áá±á¬áá·áºáá áºáá¯ááŒáá·áº psql ááŸáá áºááá·áº áá±áá¬áá±á·á áºááá¯á· áá»áááºáááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠsuperuser ááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº ... ááœá±ážáá»ááºááŸá¯ zero_damaged_pages áá°áá¬áá»áŸáẠááŒá±á¬ááºážáá²ááá¯ááºáááºá áá«á·ááá á¹á ááœááºá áááºážááẠpostgres ááŒá áºáááºá
psql -h 127.0.0.1 -U postgres -s [áá±áá¬áá±á·á áº_á¡áááº]
ááœá±ážáá»ááºá áᬠzero_damaged_pages áááºááŸá¯ááŸá¯á¡ááŸá¬ážáá»á¬ážááᯠáá»á áºáá»á°ááŸá¯ááẠááá¯á¡ááºááẠ(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- ááŒááºáááºááœáŸááºážááááºáž
Google á០ááááá¯á¶áž á¡ááŒá¶áá¬ááºááẠá¡áá±á¬ááºá¡áá° áááŒá áºáá«á áááá áºá¡áááºážáááºááŸá¬ááœá±ááŒá®ážáá±á¬ááºá áá«áááºáá®ážáááºáá¯áááá¡ááŒá¶ááŒá¯áá»ááºááá¯ááœá±á·ááŸááá²á·áááºá ááŒááºááœáŸááºážáááºá áá»ááºá á®ážáá±áá±á¬á á¬ážááœá²á áá®á¡ááŒá¶áá¬ááºááᯠáá±áá¬áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážááŸá¬ ááœá±á·áá°ážáá±ááá·áº áá¯á¶ááŒááºááŸá¯áá±á¬á· ááá±á¬ááºáá²á·áá«áá°ážá ááŒááºááœáŸááºážááŒáá·áºáá¡á±á¬ááºá
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 clause ááá¯á¡áá¯á¶ážááŒá¯áááºá¡áá±ážááŒá®ážáá«áááºá ááá¯ááºáá«áá ááá·áºááŸááºážáááá±á¬ á¡áááºážááœá²áá»á¬ážááᯠááŒááºáá±ážáá«áááºá
áááºááŸá¬ážáááºááŸá¬á á¡áááºáá±á¬áºááŒáá«á¡áááá·áºááẠááŸá¬ážááœááºážáá±áááº- áááá áááŸááá«á á¡ááŸá¬á á¬ááááºááẠááŸá¬ážááœááºážááá¯ááºáááºá áá¯áááá¡áá±ááŸáá·áºá Postgres ááẠááááŠážá áœá¬ OFFSET á¡áááºážáá»á¬ážááᯠá áááºááºáááºááŒá®áž áá»á±á¬áºááœá¬ážáᬠááá¯ážáá¬áá²á·áááºá OFFSET áá¯ááºáá¯ááºá áœááºážá¡á¬ážá áá®áááºááá¯ááŒá®áž áá»áááºážáá¬áááºá
ááŒáá¯ážá á¬ážááŸá¯ 4- á á¬áá¬ážáá¯á¶á á¶ááŒáá·áº á¡ááŸáá¯ááºáá¯á¶ážááᯠáá°áá«á
ááá¯á¡áá« áááºááŒááºáá¯á¶ááá±á¬ á¡ááœá±ážáá áºáá¯ááẠáá»áœááºá¯ááºá áááºáá²ááœáẠáá±á«áºáá¬áááº- á á¬áá¬ážáá¯á¶á á¶ááŒáá·áº á¡ááŸáá¯ááºáá¯á¶ážááᯠáá¯ááºáá°ááŒá®áž áá±á¬ááºáá¯á¶ážááŸááºáááºážáááºáá¬ážáá±á¬ á á¬ááŒá±á¬ááºážááᯠááœá²ááŒááºážá áááºááŒá¬áá«á
áá«áá±ááá·áº á¡áááºáá¯á¶áž á á¬ážááœá²áá²á· ááœá²á·á ááºážáá¯á¶ááᯠáá±á·áá¬ááŒáá·áºáá¡á±á¬ááºá ws_log_smevlog:
áá«ááá¯á·ááá
á¹á
ááŸá¬ áá±á¬áºáá¶áá
áºáá¯ááŸááááºá "á¡áá¯ááº"á¡áááºážááá°ážááŒá¬ážáá±á¬á¡ááŸááºá¡áá¬áž (áá±á¬ááºáá¬) áá«ááŸááááºá á¡á
á®á¡á
á¥áºááẠá€áá²á·ááá¯á·ááŒá
áºáááº-
- áá»áœááºá¯ááºááá¯á·ááẠá á¬áá¬ážáá¯á¶á ᶠ( sql command áá»á¬ážáá¯á¶á á¶ááŒáá·áº ) á¡ááŸáá¯ááºáá¯á¶ážááᯠá áááºáá°ááẠá
- áá áºáá»áááºáááºážááœááºá á¡ááŸá¬ážáá áºáá¯ááŒá±á¬áá·áº á¡ááŸáá¯ááºáá¯á¶ááẠááŒááºáá±á¬ááºááœá¬ážáááá·áºáááºá ááá¯á·áá±á¬áº á á¬áá¬ážááá¯ááºááᯠáá áºááºáá±á«áºááœáẠááááºážáááºážáá¬ážáá²ááŒá áºáááºá
- áá»áœááºá¯ááºááá¯á·ááẠá á¬áá¬ážááá¯ááºáá¡áá¯á¶ážááá¯ááŒáá·áºáááºá ááá¯á·ááŒá±á¬áá·áº á¡á±á¬ááºááŒááºá áœá¬áááºááŸá¬ážááá¯ááºáá±á¬ áá±á¬ááºáá¯á¶ážá á¬ááŒá±á¬ááºážá identifier (id) ááᯠááŸá¬ááœá±á·ááá¯ááºáááº
á á¬áá¬ážáá¯á¶á á¶áá²á· á¡ááŸáá¯ááºáá¯á¶ážáá áºáá¯ááᯠá áááºáá²á·áááº
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) id ááá¯ááºážáá±á«áºááœáẠá¡ááŸáá¯ááºáá¯á¶ááŒá®áž ááŒááºáá±á¬ááºááœá¬ážáááºááᯠááœá±á·ááŸááá²á·áááºá 186 525. "áá«ááᯠááŒá¿áá¬á id 186 526 áá²á· ááá¯ááºážáá»ááºáá±áááºá ââáá»ááºáá
áºááááºá" - áá«á
ááºážá
á¬ážáááºá ááá¯á·áá±á¬áºá áá±áá¬áá±á·á
áºááá¯á·áá±ážááŒááºážáá»ááºáá
áºáá¯ááŒá¯áá¯ááºáááº-
«id=186529 ááŸááᬠws_log_smevlog á០* ááá¯ááœá±ážáá«á"áá®á
á¬ááŒá±á¬ááºážáá²á· á¡á¬ážáá¯á¶áž á¡áááºááŒá±ááœá¬ážáá²á·áááº... á¡ááœáŸááºážááááºáž 186 - 530 ááŸááá²á· á¡áááºážááœá±ááááºáž ááŒá¿áá¬áááŸááá² á¡áá¯ááºáá¯ááºáá«áááºá áá±á¬ááºááẠâáááºááŒááºáá±á¬ á¡ááŒá¶áá¬ááºâ áá¡á±á¬ááºááŒááºáá«á áá±á¬ááºááá¯ááºážááŸá¬ áá¬ááŒá±á¬áá·áº áá®ááá¯ááŒá
áºáá²á·ááá¬áá²ááá¯áá¬ááᯠáá»áœááºáá±á¬áºáá¬ážáááºáá«áááº- ááá¬ážáá
áºáá¯á០áá±áá¬áá»á¬ážááᯠáá»ááºááŒááºážááŸáá·áº ááŒá±á¬ááºážáá²ááá·áºá¡áá« áááºážááá¯á·ááᯠáá¯ááºááá¯ááºážááá¯ááºáá¬á¡á áá»ááºáááºááá¯ááºáá±á¬áºáááºáž "dead tuples" áᯠá¡ááŸááºá¡áá¬ážááŒá¯áá¬á ááá¯á·áá±á¬ááºááœááºá autovacuum ááŸáá·áº á€á
á¬ááŒá±á¬ááºážáá»á¬ážááᯠáá»ááºááá¯ááºáááºá¡ááŒá
Ạá¡ááŸááºá¡áá¬ážááŒá¯ááŒá®áž á€á
á¬ááŒá±á¬ááºážáá»á¬ážááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯ááœáá·áºááŒá¯áá«á áá¬ážáááºáááºá ááá¬ážááŸááá±áá¬ááẠááŒá±á¬ááºážáá²ááŒá®áž 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
áá áºá á¯á¶áá áºáá±á¬ááºá០áá¬ážááááºáá«á command ááẠá¡á±á¬ááºáá«á¡ááá¯ááºáž á¡áá¯ááºáá¯ááºáááº- áááºážááẠááá¬ážá¡áááºážááᯠá¡áááºážááá¯ááºá áááºááºáááºááŒá®áž stdout ááá¯á· áá±ážááá¯á·áááºá / dev / ááá¬ážááááºáá±á¬ááá¯á·áá±á¬áº SELECT á¡áááá·áºáá¡á±á¬ááºááŒááºáá«áá á¡ááŸá¬ážá á¬áá¬ážááᯠááá¯ááºááŸáááºááŒá®áž (stderr ááᯠááœááºááá¯ážááºááá¯á· ááá¯á·áááº) ááŸáá·áº á¡ááŸá¬ážáá«ááŸááá±á¬ á á¬ááŒá±á¬ááºážáá áºááŒá±á¬ááºážááᯠááá¯ááºááŸáááºááẠ(|| ááŸáá»á±ážáá°ážáááºáá«áááºá ááá¯ááá¯áááºááŸá¬ ááœá±ážáá»ááºááŸá¯ááœáẠááŒá¿áá¬ááŸááá±áááºáᯠááá¯ááá¯ááẠ(á¡áááá·áºáá±á¬áºá ááŒááºááá¯á·ááá·áºáá¯ááºá 0)))á
áá¶áá±á¬ááºážááá¯ááºáá¬á ááœááºážááŒááºááŸá¬ á¡ááœáŸááºážááááºážááœá± áááºáá®ážáá¬ážáááºá id:
ááá¯ááá¯áááºááŸá¬ ááá¯áá»ááºáá±á¬ id áá«áá±á¬ ááá¯ááºážáá
áºáá¯ááᯠááŸá¬ááœá±ááẠá¡áá»áááºáá»á¬ážá
áœá¬ ááá°ááá·áºáá«á áá®á¡áá¯áá®á¡á áá¯ááºááá·áºáááºá áá±á¬ááºážááŒá®á command ááᯠrun ááŒáá¡á±á¬áẠtmux á¡áááºáá¬áááºáá¡á±á¬ááºá
ááááºáááºážááŸá¬ áááºáá±á¬ááºááŒáá·áºááŸá¯áá° 90 ááá·áºááᯠááœá±á·ááŸááá²á·ááŒá®áž áá«áᬠ000% áá»á±á¬áºáá¬ááŸááá«áá±ážáááºá ááááºáááºážáááºáž (5%) ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áá±á¬ááºážááœááºáá±á¬ááááºááŒá áºáááºá áá«áá±ááá·áº ááẠ2 áá á±á¬áá·áºáá»ááºáá°áž...
ááŒáá¯ážá á¬ážááŸá¯ 6- SELECT, FROM, WHERE id >= ááŸáá·áº id
áá¯á¶ážá áœá²áá°ááœáẠáá±áá¬áá±á·á áºá¡ááœáẠá¡áá°ážáá±á¬ááºážááœááºáá±á¬ áá¬áá¬áá áºáá¯ááŸááááº- dual-processor Intel Xeon E5-2697 v2áá»áœááºá¯ááºááá¯á·ááááºáá±áá¬ááœáẠá á¬ááœá² áá áá¯ááŸááááºá áá¬áá¬áá±á«áºááŸá áááºááẠáá»ááºážáá»áŸááŒá áºááŒá®áž ááŒá¿áá¬áá áºá á¯á¶áá áºáá¬áááŸááá² á á¬ááœá² 48 ááá·áºááᯠáá±á«ááºážáá¯ááºáá¯ááºááá¯ááºáááºá áá¯á¶áá±á¬ááºáá±á¬ RAM áááºážááŸááá«áááº- 20 áá áºáá«ááá¯ááºááŸááááºá
ááá¯á·ááŒá±á¬áá·áº command ááᯠparallelized áá¯ááºááẠááá¯á¡ááºáááº-
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
tmux session áá áºáá¯ááœáẠwindows 16 ááá¯ááœáá·áºááŒá®áž command áá»á¬ážááᯠrun áá«á
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
ááá¯ááá¯áááºááŸá¬ á á¬ááŒá±á¬ááºážáá¯á¶ážááŒá±á¬ááºážááœáẠá¡ááŸá¬ážáá áºáá¯áá«ááŸááááºá áááááŸáá·áº áá¯áááááŒá¿áá¬ááŸááá±á¬ ááŸááºáááºážáá»á¬ážá ids áá»á¬ážááẠ829 ááŸáá·áº 000 ááŒá¬ážá áááá IDs ááẠ830 ááŸáá·áº 000 ááŒá¬ážááŒá áºáááºá ááá¯á·áá±á¬ááºááœááºá ááŒá¿áá¬ááŸááá±á¬ ááŸááºáááºážáá»á¬ážá id value á¡ááá¡áá»ááᯠááŸá¬ááá±á¬á·áááºá ááá¯ááá¯á·áá¯ááºáá±á¬ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠááŒá¿áá¬ááŸááá±á¬ ááŸááºáááºážáá»á¬ážááᯠá¡ááá·áº 146 ááŒáá·áº ááŒáá·áºááŸá¯ááŒá®áž id ááᯠááœá²ááŒá¬ážáááºááŸááºáá«-
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
áá»áœááºá¯ááºá á¡á¶á·á¡á¬ážááá·áºá áá¬ááŸá¬ ááœá±ážáá»ááºá áá¬áá»á¬áž ááá«áá² ááá¯ááºáá»á¬ážááᯠáá»ááºááá¯ááºááŒááºáž ááŒá áºáááºá zero_damaged_pages.
á¡á²áá®á¡áá«áá»áá±á¬á· database áá²á· áá»áááºááá¯ááºáᬠáá¯ááºá á¯ááºá áẠá¡ááŒáá·áº (áá«ááá¯áá¯ááºááá¯á·áááá¯á¡ááºáá°ážááá¯á·áááºáá«áááº) áá±á¬ááºáá¯á¶ážáá±á¬á·áá»áœááºáá±á¬áºá¡áá¯á¶ážááŒá¯ááŒá®áž backup ááá¯á¡á±á¬ááºááŒááºá áœá¬áááºááŸá¬ážááá¯ááºáá«á pg_dump. á¡ááŸáá¯ááºáá¯á¶ááŒá®ážááẠá¡ááŸá¬ážá¡ááœááºážáááŸá ááááºážááœá¬ážááẠá ááŒá¿áá¬ááᯠááá¯ááºáá²áá±á¬áááºážááŒáá·áº ááŒá±ááŸááºážáá²á·áááºá áá»á±á¬áºááœáŸááºááŸá¯áᬠááá·áºáááºáá»ááºááœá±ááᯠáááááá¯ááºáá²á áá»ááŸá¯á¶ážááŸá¯ááœá± á¡áá»á¬ážááŒá®ážááŒá áºááŒá®ážáá±á¬áẠá¡ááŒá±áá áºáá¯ááᯠááŸá¬ááœá±ááá¯ááºáá²á·áá«áááºá
á¡ááá¡ááŸááºááŒá¯ááŸá¯áá»á¬ážááŸáá·áº áááá¯á¶áž
á á áºááŸááºáá±á¬ Postgres áá±áá¬áá±á·á áºááᯠááŒááºáááºááá°ááŒááºážá ááááá¯á¶áž á¡ááœá±á·á¡ááŒá¯á¶ááŸá¬ á€áá²á·ááá¯á· ááŒá áºáá¬áááºá áá®á¡ááœá±á·á¡ááŒá¯á¶ááᯠá¡áá»áááºá¡ááŒá¬ááŒá®áž ááŸááºáááá±ááŸá¬áá«á
áá±á¬ááºáá¯á¶ážá¡áá±áá²á·á á
á¬ááœááºá
á¬áááºážááœá±ááᯠáá¯ááŸá¬ážáá¬áá¬áá²á· áá¬áá¬ááŒááºáá±ážáá²á·á¡ááœáẠPostgresPro ááᯠáá»á±ážáá°ážáááºááŒá±á¬ááºáž ááŒá±á¬áá»ááºáá«áááºá
source: www.habr.com