рдХрд┐рд╕реА рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рдПрдХ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ (рд░рд┐рд▓реЗрдЯрди рдмреЗрд╕ / 16490 рдХреЗ рдмреНрд▓реЙрдХ 4123007 рдореЗрдВ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)

рдореИрдВ Postgres рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рд╕рдлрд▓ рдЕрдиреБрднрд╡ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдбреЗрдврд╝ рд╕рд╛рд▓ рдкрд╣рд▓реЗ Postgres DBMS рд╕реЗ рдорд┐рд▓рд╛, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢рд╛рд╕рди рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдерд╛ред



рдореИрдВ рдПрдХ рдмрдбрд╝реА рдЖрдИрдЯреА рдХрдВрдкрдиреА рдореЗрдВ рд╕реЗрдореА-рдбреЗрд╡реЙрдкреНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдЕрддреНрдпрдзрд┐рдХ рднрд░реА рд╣реБрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рджрд░реНрд╢рди, рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реВрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ: рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ Django рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдиреНрдирдпрди рдХреЗ рджреМрд░рд╛рди, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП), рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдХреЗрд╡рд▓ рдорд╛рдирдХ pg_dump рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реНрдг рдбреЗрдЯрд╛рдмреЗрд╕ рдбрдВрдк рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред

рдбрдВрдк рд╣рдЯрд╛рддреЗ рд╕рдордп рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рддреНрд░реБрдЯрд┐ рд╣реБрдИ (рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╕рдВрд╕реНрдХрд░рдг 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 

рддреНрд░реБрдЯрд┐ "рдмреНрд▓реЙрдХ рдореЗрдВ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда" рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдордВрдЪреЛрдВ рдкрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд░реЛ_рдбреИрдореЗрдЬ_рдкрдЬ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдЦреИрд░, popprobeum ...

рд╡рд╕реВрд▓реА рдХреА рддреИрдпрд╛рд░реА


рдЪреЗрддрд╛рд╡рдиреА! рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдкрд╣рд▓реЗ рдмреИрдХрдЕрдк рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░реЛрдХреЗрдВ рдФрд░ рд╕реНрдиреИрдкрд╢реЙрдЯ рд▓реЗрдВред рдпрджрд┐ рд╕реНрдиреИрдкрд╢реЙрдЯ рд▓реЗрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░реЛрдХреЗрдВ рдФрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА (рд╡рд╛рд▓ рдлрд╛рдЗрд▓реЛрдВ рд╕рд╣рд┐рдд) рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд╛рди рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдореБрдЦреНрдп рдЪреАрдЬ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрддрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рдЗрд╕реЗ рдкрдврд╝реЗрдВред

рдЪреВрдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЗ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдбрдВрдк рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдбреЗрдЯрд╛ (рд╡рд┐рдХрд▓реНрдк -T, --exclude-table = pg_dump рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛) рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ред

рд╕рд░реНрд╡рд░ рднреМрддрд┐рдХ рдерд╛, рд╕реНрдиреИрдкрд╢реЙрдЯ рд▓реЗрдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ред рдмреИрдХрдЕрдк рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЬрд╛рдВрдЪ


рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╣реА рд╣реИред рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдмрджрддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо "/ srv" рдореЗрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдкреНрд░рдХрд╛рд░ ext4 рдерд╛ред

рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ: systemctl stop postgresql@9.5-main.service рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ lsof рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
lsof + D / srv

рдореБрдЭреЗ рдЕрднреА рднреА рд░реЗрдбрд┐рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░реЛрдХрдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ "/ srv" рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрдирдорд╛рдЙрдВрдЯ / srv (umount) рдХрд┐рдпрд╛ред

рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд╛рдБрдЪ рдИ-рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде e2fsck рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЧрдИ рдереА ( рдлреЛрд░реНрд╕ рдХреА рдЬрд╛рдБрдЪ рднрд▓реЗ рд╣реА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рдл рд╣реЛ ):



рдЗрд╕рдХреЗ рдмрд╛рдж, dipe2fs рдпреВрдЯрд┐рд▓рд┐рдЯреА ( sudo dipe2fs / dev / mapper / gu2 - sys-srvред Grep check ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪреЗрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



e2fsck рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ ext4 рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдкрд╛рдИ рдЧрдИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХреЗрд╡рд▓ рдирд┐рд░реНрд╡рд╛рдд рдкреВрд░реНрдг рдкрд░ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВ (рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд╛рдкрд╕ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рднреМрддрд┐рдХ рд╣реИ, рддреЛ рдбрд┐рд╕реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ ( рд╕реНрдорд╛рд░реНрдЯрдХреНрдЯреНрд▓-рдП / рджреЗрд╡ / рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдпрд╛ RAID рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, RAID "рд▓реЛрд╣рд╛" рдирд┐рдХрд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдп рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЗ RAID рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ (рд╕рд░реНрд╡рд░ рдореБрдЭрд╕реЗ рдХрдИ рд╕реМ рдХрд┐рд▓реЛрдореАрдЯрд░ рдерд╛)ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдереА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣рд╛рд▓реА рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рдпрд╛рд╕ 1: zero_damaged_pages


рд╣рдо рд╕реБрдкрд░рдХреНрдпреВрд▓рд░ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде psql рдЦрд╛рддреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рд╕реБрдкрд░рд╕реБрд╕рд░ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рд╡рд╣ рдЬреАрд░реЛ_рдбреИрдореЗрдЬреНрдб_рдкреИрдкреНрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╣реИ:

psql -h 127.0.0.1 -U рдкреЛрд╕реНрдЯ-рдПрд╕ [рдбреЗрдЯрд╛рдмреЗрд╕_рдирд╛рдо]

рд╢реВрдиреНрдп рддреНрд░реБрдЯрд┐ (рдкреЛрд╕реНрдЯрдЧреНрд░реЙрд╕реНрдкреНрд░реЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ) рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд░реЛ_рдбреИрдореЗрдЬрдбреИрдк рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдЬрдм рдПрдХ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдкреГрд╖реНрда рд╢реАрд░реНрд╖рдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Postgres Pro рдЖрдорддреМрд░ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рд╢реВрдиреНрдп_рдЖрдорджрд┐рдд_рдкреГрд╖реНрда рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдкреГрд╖реНрда рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдбреЗрдЯрд╛ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдкреГрд╖реНрда рдХреА рд╕рднреА рд▓рд╛рдЗрдиреЗрдВред
рд╡рд┐рдХрд▓реНрдк рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдФрд░ рдкреВрд░реНрдг рд╡реИрдХреНрдпреВрдо рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 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 

pg_toast - Postgres рдореЗрдВ "рд▓рдВрдмреЗ рдбреЗрдЯрд╛" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░, рдпрджрд┐ рд╡реЗ рдПрдХ рд╣реА рдкреГрд╖реНрда (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 8kb) рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдкреНрд░рдпрд╛рд╕ 2: reindex


рдкрд╣рд▓реЗ Google рдЯрд┐рдк рдиреЗ рдорджрдж рдирд╣реАрдВ рдХреАред рдЦреЛрдЬ рдХреЗ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рджреВрд╕рд░реА рдЯрд┐рдк рдорд┐рд▓реА - рдПрдХ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдЯреЗрдмрд▓ рдХреЛ рд░реЗрдирдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдЗрд╕ рд╕рд▓рд╛рд╣ рд╕реЗ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдмрдврд╝рд╛ред рд░реЗрдирдбреЗрдХреНрд╕ рдХрд░реЗрдВ:

 reindex table ws_log_smevlog 



reindex рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА, VACUUM FULL рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рдЖрдЧреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рд▓рд╛рд╣ рд▓реЗрдиреА рд╢реБрд░реВ рдХрд░ рджреА рдФрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛ред

рдкреНрд░рдпрд╛рд╕ 3: рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рд╕реАрдорд╛, 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 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдереАрдВ! рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ, рдбреЗрдЯрд╛ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рд╢рдирд┐рд╡рд╛рд░ рдХрд╛ рджрд┐рди рдерд╛, рдореИрдВрдиреЗ рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ tmux рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдФрд░ рд╕реЛ рдЧрдпрд╛:

 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 

рд╕реБрдмрд╣ рддрдХ, рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдЪрд▓ рд░рд╣реА рдереАрдВред рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ 2 рдШрдВрдЯреЗ рдореЗрдВ рдХреЗрд╡рд▓ 2% рдбреЗрдЯрд╛ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛! рдореИрдВ 50 рджрд┐рди рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдПрдХ рдФрд░ рдкреВрд░реНрдг рд╡рд┐рдлрд▓рддрд╛ред

рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╣рд╛рд░ рдирд╣реАрдВ рдорд╛рдиреАред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рд╕реНрдХреИрди рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рдХреНрдпреЛрдВ рд▓рдЧрд╛ред рдкреНрд░рд▓реЗрдЦрди рд╕реЗ (рдлрд┐рд░ рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЙрд╕реНрдкреНрд░реЛ рдкрд░) рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛:
OFFSET рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ OFFSET рдФрд░ LIMIT рджреЛрдиреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдкрд╣рд▓реЗ OFFSET рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ LIMIT рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЧрд┐рдирддреА рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

рд▓рд┐рдорд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, ORDER BY рдХреНрд▓реЙрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рддрд╛рдХрд┐ рдкрд░рд┐рдгрд╛рдо рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЕрдиреНрдпрдерд╛, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдмрд╕реЗрдЯ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдВрдЧреЗред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЙрдкрд░реЛрдХреНрдд рдЖрджреЗрд╢ рдЧрд▓рдд рдерд╛: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреЛрдИ рдЖрджреЗрд╢ рдирд╣реАрдВ рдерд╛, рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ, Postgres рдХреЛ рдкрд╣рд▓реЗ OFFSET рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕реНрдХреИрди рдФрд░ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛, рдФрд░ OFFSET рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде , рдкреНрд░рджрд░реНрд╢рди рдФрд░ рднреА рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рдерд╛ред

рдкреНрд░рдпрд╛рд╕ 4: рдкрд╛рда рд░реВрдк рдореЗрдВ рдбрдВрдк рдХреЛ рд╣рдЯрд╛ рджреЗрдВ


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдЪрд╛рд░ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдпрд╛: рдкрд╛рда рд░реВрдк рдореЗрдВ рдбрдВрдк рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЕрдВрддрд┐рдо рджрд░реНрдЬ рдХреА рдЧрдИ рд░реЗрдЦрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдЖрдЗрдП ws_log_smevlog рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЗрдЦреЗрдВ :



рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреЙрд▓рдо "рдЖрдИрдбреА" рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдХрд╛рдЙрдВрдЯрд░) рдерд╛ред рдпреЛрдЬрдирд╛ рдпрд╣ рдереА:

  1. рд╣рдо рдкрд╛рда рд░реВрдк рдореЗрдВ рдбрдВрдк рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рд╡рд░реНрдЧ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ)
  2. рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдореЗрдВ, рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдбрдВрдк рдмрд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдЕрднреА рднреА рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬреА рдЬрд╛рдПрдЧреА
  3. рд╣рдо рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдЖрдИрдбреА) рдорд┐рд▓ рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЧреЛрд▓реА рдорд╛рд░ рджреА рдЧрдИ рдереА

рдореИрдВрдиреЗ рдкрд╛рда рд░реВрдк рдореЗрдВ рдбрдВрдк рдХреЛ рд╣рдЯрд╛рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛:

 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 - 186 540 рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЛрдВ рдиреЗ рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдПрдХ рдФрд░ "рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдЪрд╛рд░" рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рдмрд╛рдж рдореЗрдВ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реБрдЖ: рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ / рдмрджрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдЙрдиреНрд╣реЗрдВ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди "рдореГрдд рдЯреБрдкрд▓реНрд╕ " рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдЖрддрд╛ рд╣реИ рдФрд░ рдЗрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдП рдЧрдП рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдЪрд╛рд▓реВ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рдпрд╛рд╕ 5: рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рд╕реЗ, рдХрд╣рд╛рдБ рдЖрдИрдбреА =


рд╡рд┐рдлрд▓рддрд╛рдПрдВ рд╣рдореЗрдВ рдордЬрдмреВрдд рдмрдирд╛рддреА рд╣реИрдВред рдЖрдкрдХреЛ рдХрднреА рд╣рд╛рд░ рдирд╣реАрдВ рдорд╛рдирдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЛ рдЕрдВрдд рддрдХ рдЬрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдкрд░ рдФрд░ рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛: рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рджреЗрдЦреЗрдВред рдореЗрд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рд╣реИ рдЬреЛ рдЕрджреНрд╡рд┐рддреАрдп (рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА) рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 1,628,991 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ рдФрд░ рдЖрдИрдбреА рдХреНрд░рдо рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдмрд╕ рдПрдХ рд╕рдордп рдореЗрдВ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 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 рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдПрдХ рд▓рд╛рдЗрди рдЬрд┐рд╕рдореЗрдВ рдПрд░рд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИ (рдзрдиреНрдпрд╡рд╛рдж, рдЬреЛ) рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪреБрдирд┐рдВрджрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ (рдХрдорд╛рдВрдб рд░рд┐рдЯрд░реНрди рдХреЛрдб 0 рдирд╣реАрдВ рд╣реИ)ред

рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛, рдореБрдЭреЗ рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рдкрд░ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЦреИрд░, tmux рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ рдФрд░ рд╕реЛ рдЬрд╛рдПрдБред

рд╕реБрдмрд╣ рддрдХ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд▓рдЧрднрдЧ 90,000 рд░рд┐рдХреЙрд░реНрдб рджреЗрдЦреЗ рдЧрдП, рдЬреЛ рдЕрднреА 5% рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдкрд┐рдЫрд▓реА рд╡рд┐рдзрд┐ (2%) рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдкрд░ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо! рд▓реЗрдХрд┐рди рдореИрдВ 20 рджрд┐рди рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ ...

рдкреНрд░рдпрд╛рд╕ 6: рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рд╕реЗ, рдХрд╣рд╛рдБ рдЖрдИрдбреА = = рдФрд░ рдЖрдИрдбреА <


рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рддрд╣рдд рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рд░реНрд╡рд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рд╣рдорд╛рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рджреЛрд╣рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЗрдВрдЯреЗрд▓ рдПрдХреНрд╕реЛрди 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 рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рддреЛрдбрд╝ рджреЗрдВ рдФрд░ рдлреЙрд░реНрдо рдХреЗ 16 рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдЪрд▓рд╛рдПрдВ:

 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,991 рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рдЙрдЪрд┐рдд рдирд╣реАрдВ рдерд╛, рд╕рд╣рдордд рд╣реВрдБред рдЗрд╕рд▓рд┐рдП, рдЪрд▓реЛ рдПрдХ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдХрдиреЗрдХреНрд╢рди рдореЗрдВ 1000 рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдирд┐рдХрд╛рд▓реЗрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЯреАрдо рдЗрд╕ рдореЗрдВ рдмрджрд▓ рдЧрдИ:

 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 рд╕рддреНрд░ рдореЗрдВ 16 рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
 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,000 рдФрд░ 147,000 рдХреЗ рдмреАрдЪ рдереАред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд╕рд┐рд░реНрдл рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рд╕рд╣реА рдЖрдИрдбреА рдорд╛рди рдЦреЛрдЬрдирд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░рдг 1 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рд╕реАрдорд╛ рджреЗрдЦреЗрдВ рдФрд░ рдЖрдИрдбреА рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ:
 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 

рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд┐рдирд╛ рдЬреАрд░реЛ_рдбреИрдореЗрдЬреНрдб_рдкреИрдкреНрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗред

рдлрд┐рд░ рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛, VACUUM FULL рдмрдирд╛рдпрд╛ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛), рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ pg_dump рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреИрдХрдЕрдк рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдбрдВрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдЕрднрд┐рдирдп рдХрд┐рдпрд╛! рдЗрд╕ рддрд░рд╣ рдХреА рдмреЗрд╡рдХреВрдлреА рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред рдЖрдирдВрдж рдХреА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рдереА, рдЗрддрдиреА рдЕрд╕рдлрд▓рддрд╛рдУрдВ рдХреЗ рдмрд╛рдж рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ!

рдЖрднрд╛рд░ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ Postgres рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рд╣реИред рдореИрдВ рдЗрд╕ рдЕрдиреБрднрд╡ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдпрд╛рдж рд░рдЦреВрдВрдЧрд╛ред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП PostgresPro рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдлреНрдд рдСрдирд▓рд╛рдЗрди рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рджреМрд░рд╛рди рдмрд╣реБрдд рдорджрдж рдХреАред

Source: https://habr.com/ru/post/hi477248/


All Articles