рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд░рд┐рдХрднрд░ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ (relatton base/4123007 рдХреЛ рдмреНрд▓рдХ 16490 рдорд╛ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)

рдо рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓рд╛рдИ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдорд╛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рд╕рдлрд▓ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред рдореИрд▓реЗ рдЖрдзрд╛ рд╡рд░реНрд╖ рдкрд╣рд┐рд▓реЗ Postgres DBMS рд╕рдБрдЧ рдкрд░рд┐рдЪрд┐рдд рднрдПрдБ; рддреНрдпреЛ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ рдорд╕рдБрдЧ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢рд╛рд╕рдирдорд╛ рдХреБрдиреИ рдЕрдиреБрднрд╡ рдерд┐рдПрдиред

рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд░рд┐рдХрднрд░ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ (relatton base/4123007 рдХреЛ рдмреНрд▓рдХ 16490 рдорд╛ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)

рдо рдПрдЙрдЯрд╛ рдареВрд▓реЛ IT рдХрдореНрдкрдиреАрдорд╛ рдЕрд░реНрдз-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

рддреНрд░реБрдЯрд┐ "рдмреНрд▓рдХрдорд╛ рдЕрд╡реИрдз рдкреГрд╖реНрда" рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рд╕реНрддрд░рдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдмреЛрд▓реНрдЫ, рдЬреБрди рдзреЗрд░реИ рдЦрд░рд╛рдм рдЫред рд╡рд┐рднрд┐рдиреНрди рдлреЛрд░рдорд╣рд░реВрдорд╛ рдпреЛ рдЧрд░реНрди рд╕реБрдЭрд╛рд╡ рджрд┐рдЗрдПрдХреЛ рдерд┐рдпреЛ рдкреВрд░реНрдг рднреНрдпрд╛рдХреБрдо рд╡рд┐рдХрд▓реНрдк рд╕рдВрдЧ zero_damaged_pages рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиред рдЦреИрд░, рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ ...

рд░рд┐рдХрднрд░реАрдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░реА рдЧрд░реНрджреИ

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

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

рд╕рд░реНрднрд░ рднреМрддрд┐рдХ рдерд┐рдпреЛ, рд╕реНрдиреНрдпрд╛рдкрд╕рдЯ рд▓рд┐рди рдЕрд╕рдореНрднрд╡ рдерд┐рдпреЛред рдмреНрдпрд╛рдХрдЕрдк рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ, рдЕрдЧрд╛рдбрд┐ рдмрдвреМрдВред

рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдЬрд╛рдБрдЪ

рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рдареАрдХ рдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд░ рдЧрд▓реНрддреАрд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реБрдзрд╛рд░реНрдиреБрд╣реЛрд╕реН, рдХрд┐рдирднрдиреЗ рдЕрдиреНрдпрдерд╛ рддрдкрд╛рдИрд▓реЗ рдЪреАрдЬрд╣рд░реВ рдЦрд░рд╛рдм рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдореЗрд░реЛ рдХреЗрд╕рдорд╛, рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд╕рд╛рде рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдорд╛рдЙрдиреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ "/srv" рд░ рдкреНрд░рдХрд╛рд░ ext4 рдерд┐рдпреЛред

рдбрд╛рдЯрд╛рдмреЗрд╕ рд░реЛрдХреНрджреИ: systemctl рд░реЛрдХреНрдиреБрд╣реЛрд╕реН [рдИрдореЗрд▓ рд╕реБрд░рдХреНрд╖рд┐рдд] рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдХрд╕реИрджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧрдорд╛ рдЫреИрди рд░ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдирдорд╛рдЙрдиреНрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ lsof:
lsof +D /srv

рдореИрд▓реЗ рд░реЗрдбрд┐рд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкрдирд┐ рд░реЛрдХреНрдиреБ рдкрд░реНрдпреЛ, рдХрд┐рдирдХрд┐ рдпреЛ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдерд┐рдпреЛ "/srv"ред рдЕрд░реНрдХреЛ рдореИрд▓реЗ рдЕрдирдорд╛рдЙрдиреНрдЯ рдЧрд░реЗрдВ / srv (рдЙрдорд╛рдЙрдиреНрдЯ)ред

рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЬрд╛рдБрдЪ рдЧрд░рд┐рдпреЛ e2fsck рд╕реНрд╡рд┐рдЪрдХреЛ рд╕рд╛рде -f (рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рд╕рдлрд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рднрдП рдкрдирд┐ рдмрд▓ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН):

рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд░рд┐рдХрднрд░ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ (relatton base/4123007 рдХреЛ рдмреНрд▓рдХ 16490 рдорд╛ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)

рдЕрд░реНрдХреЛ, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ dumpe2fs (sudo dumpe2fs /dev/mapper/gu2тАФsys-srv | grep рдЬрд╛рдБрдЪ рдЧрд░рд┐рдпреЛ) рддрдкрд╛рдИрдВрд▓реЗ рдЬрд╛рдБрдЪ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рднрдиреЗрд░ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд░рд┐рдХрднрд░ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ (relatton base/4123007 рдХреЛ рдмреНрд▓рдХ 16490 рдорд╛ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)

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

рдпрджрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рднреМрддрд┐рдХ рд╕рд░реНрднрд░ рдЫ рднрдиреЗ, рдбрд┐рд╕реНрдХрд╣рд░реВрдХреЛ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреБрд╣реЛрд╕реН (рдорд╛рд░реНрдлрдд smartctl -a /dev/XXX) рд╡рд╛ RAID рдирд┐рдпрдиреНрддреНрд░рдХ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрддрд░рдорд╛ рдЫреИрдиред рдореЗрд░реЛ рдорд╛рдорд▓рд╛рдорд╛, RAID "рд╣рд╛рд░реНрдбрд╡реЗрдпрд░" рднрдпреЛ, рддреНрдпрд╕реИрд▓реЗ рдореИрд▓реЗ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рд╢рд╛рд╕рдХрд▓рд╛рдИ RAID рдХреЛ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕реЛрдзреЗрдВ (рд╕рд░реНрднрд░ рдордмрд╛рдЯ рдзреЗрд░реИ рд╕рдп рдХрд┐рд▓реЛрдорд┐рдЯрд░ рдЯрд╛рдврд╛ рдерд┐рдпреЛ)ред рдЙрдирд▓реЗ рднрдиреЗ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдерд┐рдПрдирдиреН, рдЬрд╕рдХреЛ рдорддрд▓рдм рд╣рд╛рдореА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

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

рд╣рд╛рдореА psql рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдЫреМрдВ рдЬрд╕рдорд╛ рд╕реБрдкрд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХрд╛рд░рд╣рд░реВ рдЫрдиреНред рд╣рд╛рдореАрд▓рд╛рдИ рд╕реБрдкрд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ, рдХрд┐рдирдХрд┐... рд╡рд┐рдХрд▓реНрдк zero_damaged_pages рдЙрд╣рд╛рдБрд▓реЗ рдорд╛рддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдореЗрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛ рдпреЛ postgres рд╣реЛ:

psql -h 127.0.0.1 -U postgres -s [database_name]

рд╡рд┐рдХрд▓реНрдк zero_damaged_pages рдкрдвреНрдиреЗ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (postgrespro рд╡реЗрдмрд╕рд╛рдЗрдЯрдмрд╛рдЯ):

рдЬрдм PostgreSQL рд▓реЗ рднреНрд░рд╖реНрдЯ рдкреГрд╖реНрда рд╣реЗрдбрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдБрдЫ, рдпрд╕рд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрдЫ рд░ рд╣рд╛рд▓рдХреЛ рд▓реЗрдирджреЗрди рд░рджреНрдж рдЧрд░реНрджрдЫред рдпрджрд┐ zero_damaged_pages рд╕рдХреНрд╖рдо рдЫ рднрдиреЗ, рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдЧрд░реНрджрдЫ, рдореЗрдореЛрд░реАрдорд╛ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдкреГрд╖реНрдард▓рд╛рдИ рд╢реВрдиреНрдп рдЧрд░реНрдЫ, рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫред рдпреЛ рд╡реНрдпрд╡рд╣рд╛рд░рд▓реЗ рдбрд╛рдЯрд╛ рдирд╖реНрдЯ рдЧрд░реНрдЫ, рдЕрд░реНрдерд╛рддреН рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдкреГрд╖реНрдардорд╛ рд╕рдмреИ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВред

рд╣рд╛рдореА рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рдЧрд░реНрдЫреМрдВ рд░ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╡реИрдХреНрдпреВрдо рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдЫреМрдВ:

VACUUM FULL VERBOSE

рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд░рд┐рдХрднрд░ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ (relatton base/4123007 рдХреЛ рдмреНрд▓рдХ 16490 рдорд╛ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)
рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рджреБрд░реНрднрд╛рдЧреНрдпред

рд╣рд╛рдореАрд▓реЗ рдпрд╕реНрддреИ рддреНрд░реБрдЯрд┐рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреМрдВ:

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 - Poetgres рдорд╛ "рд▓рд╛рдореЛ рдбрд╛рдЯрд╛" рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рд╕рдВрдпрдиреНрддреНрд░ рдпрджрд┐ рдпреЛ рдПрдХ рдкреГрд╖реНрдардорд╛ рдлрд┐рдЯ рдЫреИрди (рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ 8kb)ред

рдкреНрд░рдпрд╛рд╕ реи: рдкреБрди: рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛

Google рдХреЛ рдкрд╣рд┐рд▓реЛ рд╕рд▓реНрд▓рд╛рд╣рд▓реЗ рдорджреНрджрдд рдЧрд░реЗрдиред рдХреЗрд╣рд┐ рдорд┐рдиреЗрдЯрдХреЛ рдЦреЛрдЬреА рдкрдЫрд┐, рдореИрд▓реЗ рджреЛрд╕реНрд░реЛ рдЯрд┐рдк рдлреЗрд▓рд╛ рдкрд╛рд░реЗ - рдмрдирд╛рдЙрди reindex рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рддрд╛рд▓рд┐рдХрд╛ред рдореИрд▓реЗ рдзреЗрд░реИ рдард╛рдЙрдБрдорд╛ рдпреЛ рд╕рд▓реНрд▓рд╛рд╣ рджреЗрдЦреЗ, рддрд░ рдпрд╕рд▓реЗ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕рд▓рд╛рдИ рдкреНрд░реЗрд░рд┐рдд рдЧрд░реЗрдиред рдкреБрди: рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЧрд░реМрдВ:

reindex table ws_log_smevlog

рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд░рд┐рдХрднрд░ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ (relatton base/4123007 рдХреЛ рдмреНрд▓рдХ 16490 рдорд╛ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)

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

рддрд░, рдпрд╕рд▓реЗ рд╕рд╣рдпреЛрдЧ рдЧрд░реЗрди, рднреНрдпрд╛рдХреБрдо рдлреБрд▓ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рд╕рдВрдЧ рджреБрд░реНрдШрдЯрдирд╛ рднрдпреЛред рдо рдЕрд╕рдлрд▓рддрд╛рдХреЛ рдмрд╛рдиреА рднрдПрдХреЛрд▓реЗ, рдореИрд▓реЗ рдЗрдиреНрдЯрд░рдиреЗрдЯрдорд╛ рд╕рд▓реНрд▓рд╛рд╣рдХреЛ рд▓рд╛рдЧрд┐ рдердк рд╣реЗрд░реНрди рдерд╛рд▓реЗрдБ рд░ рдПрдХ рд░реЛрдЪрдХ рдХреБрд░рд╛ рднреЗрдЯреЗрдВ рд▓реЗрдЦ.

рдкреНрд░рдпрд╛рд╕ рей: рдЪрдпрди, рд╕реАрдорд╛, рдЕрдлрд╕реЗрдЯ

рдорд╛рдерд┐рдХреЛ рд▓реЗрдЦрд▓реЗ рдкрдЩреНрдХреНрддрд┐рджреНрд╡рд╛рд░рд╛ рддрд╛рд▓рд┐рдХрд╛ рдкрдЩреНрдХреНрддрд┐ рд╣реЗрд░реНрди рд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдбреЗрдЯрд╛ рд╣рдЯрд╛рдЙрди рд╕реБрдЭрд╛рд╡ рджрд┐рдпреЛред рдкрд╣рд┐рд▓реЗ рд╣рд╛рдореАрд▓реЗ рд╕рдмреИ рд▓рд╛рдЗрдирд╣рд░реВ рд╣реЗрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

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

рдмрд┐рд╣рд╛рдирд╕рдореНрдо рдореИрд▓реЗ рдЪреАрдЬрд╣рд░реВ рдХрд╕рд░реА рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред рдореЗрд░реЛ рдЕрдЪрдореНрдордХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ 20 рдШрдгреНрдЯрд╛ рдкрдЫрд┐, рдбрд╛рдЯрд╛рдХреЛ 2% рдорд╛рддреНрд░ рд╕реНрдХреНрдпрд╛рди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ! рдо 50 рджрд┐рди рдкрд░реНрдЦрди рдЪрд╛рд╣рдиреНрдиред рдЕрд░реНрдХреЛ рдкреВрд░реНрдг рдЕрд╕рдлрд▓рддрд╛ред

рддрд░ рдореИрд▓реЗ рд╣рд╛рд░ рдорд╛рдирд┐рди ред рдорд▓рд╛рдИ рдХрд┐рди рд╕реНрдХреНрдпрд╛рдирд┐рдЩрд▓реЗ рдпрддрд┐ рд▓рд╛рдореЛ рд╕рдордп рд▓рд╛рдЧреНрдпреЛ рднрдиреЗрд░ рд╕реЛрдЪреЗрдВред рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ (рдлреЗрд░рд┐ postgrespro рдорд╛) рдореИрд▓реЗ рдлреЗрд▓рд╛ рдкрд╛рд░реЗ:

OFFSET рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдЫреЛрдбреНрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫред
рдпрджрд┐ OFFSET рд░ LIMIT рджреБрд╡реИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдкрд╣рд┐рд▓реЗ OFFSET рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдЫреЛрдбреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ LIMIT рдЕрд╡рд░реЛрдзрдХрд╛ рд▓рд╛рдЧрд┐ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдЧрдгрдирд╛ рдЧрд░реНрди рдерд╛рд▓реНрдЫред

LIMIT рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛, ORDER BY рдЦрдгреНрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдкрдирд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рддрд╛рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдордорд╛ рдлрд░реНрдХрд╛рдЗрдиреНрдЫред рдЕрдиреНрдпрдерд╛, рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЙрдкрд╕реЗрдЯрд╣рд░реВ рдлрд░реНрдХрд╛рдЗрдиреЗрдЫред

рдЬрд╛рд╣рд┐рд░ рдЫ, рдорд╛рдерд┐рдХреЛ рдЖрджреЗрд╢ рдЧрд▓рдд рдерд┐рдпреЛ: рдкрд╣рд┐рд▓реЗ, рддреНрдпрд╣рд╛рдБ рдерд┐рдПрди рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдо, рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд рд╣реБрди рд╕рдХреНрдЫред рджреЛрд╕реНрд░реЛ, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛ рд░ рдЕрдлрд╕реЗрдЯ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдЫреЛрдбреНрдиреБрдкрд░реНтАНрдпреЛ, рд░ рдмрдвреНрджреИ рдЬрд╛рдБрджрд╛ OFFSET рдЙрддреНрдкрд╛рджрдХрддрд╛ рдЕрдЭреИ рдШрдЯреНрдиреЗрдЫред

рдкреНрд░рдпрд╛рд╕ рек: рдкрд╛рда рдлрд╛рд░рдордорд╛ рдбрдореНрдк рд▓рд┐рдиреБрд╣реЛрд╕реН

рддреНрдпрд╕рдкрдЫрд┐ рдореЗрд░реЛ рджрд┐рдорд╛рдЧрдорд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдЪрд╛рд░ рдЖрдпреЛ: рдкрд╛рда рдлрд╛рд░рдордорд╛ рдбрдореНрдк рд▓рд┐рдиреБрд╣реЛрд╕реН рд░ рдЕрдиреНрддрд┐рдо рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдПрдХреЛ рд▓рд╛рдЗрдирдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рддрд░ рдкрд╣рд┐рд▓реЗ, рддрд╛рд▓рд┐рдХрд╛рдХреЛ рд╕рдВрд░рдЪрдирд╛рд▓рд╛рдИ рд╣реЗрд░реМрдВред ws_log_smevlog:

рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд░рд┐рдХрднрд░ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ (relatton base/4123007 рдХреЛ рдмреНрд▓рдХ 16490 рдорд╛ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)

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

  1. рд╣рд╛рдореА рдкрд╛рда рдлрд╛рд░рдордорд╛ рдбрдореНрдк рд▓рд┐рди рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ (sql рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛)
  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

рдердк рдорд╛рд░реНрдлрдд tail рдореИрд▓реЗ рдбрдореНрдкрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд╣реЗрд░реЗ (рдкреБрдЪреНрдЫрд░ -5 ./my_dump.dump) рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреЛ рдХрд┐ рдбрдореНрдк id рдХреЛ рд╕рд╛рде рд▓рд╛рдЗрди рдорд╛ рдЕрд╡рд░реЛрдз рднрдПрдХреЛ рдерд┐рдпреЛ 186 525ред "рддреНрдпрд╕реЛрднрдП рд╕рдорд╕реНрдпрд╛ рдЖрдИрдбреА 186 526 рдХреЛ рд╕рд╛рде рд▓рд╛рдЗрдирдорд╛ рдЫ, рдпреЛ рднрд╛рдБрдЪрд┐рдПрдХреЛ рдЫ, рд░ рдореЗрдЯрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ!" - рдореИрд▓реЗ рд╕реЛрдЪреЗрдВред рддрд░, рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдкреНрд░рд╢реНрди рдЧрд░реНрджреИ:
┬лws_log_smevlog рдмрд╛рдЯ * рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ id=186529"рдпреЛ рдкрдЩреНрдХреНрддрд┐ рднрдпреЛ рдХрд┐ рдпреЛ рд░реЗрдЦрд╛ рд╕рдВрдЧ рд╕рдмреИ рдареАрдХ рдерд┐рдпреЛ ... рд╕реВрдЪрдХрд╛рдВрдХ 186 - 530 рд╕рдВрдЧ рдкрдЩреНрдХреНрддрд┐рд╣рд░реБ рдкрдирд┐ рд╕рдорд╕реНрдпрд╛ рдмрд┐рдирд╛ рдХрд╛рдо рдЧрд░реНрдпреЛред рдЕрд░реНрдХреЛ "рдЙрдЬреНрдЬреНрд╡рд▓ рд╡рд┐рдЪрд╛рд░" рдЕрд╕рдлрд▓ рднрдпреЛред рдкрдЫрд┐ рдореИрд▓реЗ рдмреБрдЭреЗрдВ рдХрд┐рди рдпреЛ рднрдпреЛ: рддрд╛рд▓рд┐рдХрд╛рдмрд╛рдЯ рдбрд╛рдЯрд╛ рдореЗрдЯрд╛рдЙрдБрджрд╛ рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрд╛, рддрд┐рдиреАрд╣рд░реВ рднреМрддрд┐рдХ рд░реВрдкрдорд╛ рдореЗрдЯрд┐рдПрдХрд╛ рдЫреИрдирдиреН, рддрд░ "рдбреЗрдб рдЯрдкрд▓реНрд╕" рдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдЖрдЙрдБрдЫред autovacuum рд░ рдпреА рд░реЗрдЦрд╛рд╣рд░реВрд▓рд╛рдИ рдореЗрдЯрд╛рдЗрдПрдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдБрджрдЫ рд░ рдпреА рд░реЗрдЦрд╛рд╣рд░реВрд▓рд╛рдИ рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдбрд╛рдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ рд░ autovacuum рд╕рдХреНрд╖рдо рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдХреНрд░рдорд┐рдХ рд░реВрдкрдорд╛ рднрдгреНрдбрд╛рд░рдг рд╣реБрдБрджреИрдиред

рдкреНрд░рдпрд╛рд╕ рел: SELECT, FROM, HERE 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 рдХрдиреНрд╕реЛрд▓рдорд╛ рдкрдард╛рдЗрдиреНрдЫ) рд░ рддреНрд░реБрдЯрд┐ рд╕рдорд╛рд╡реЗрд╢ рднрдПрдХреЛ рд▓рд╛рдЗрди рдЫрд╛рдкрд┐рдПрдХреЛ рдЫ (рдзрдиреНрдпрд╡рд╛рдж ||, рдЬрд╕рдХреЛ рдорддрд▓рдм рдЪрдпрдирдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдерд┐рдП (рдЖрджреЗрд╢рдХреЛ рдлрд┐рд░реНрддрд╛ рдХреЛрдбред реж рд╣реЛрдЗрди))ред

рдо рднрд╛рдЧреНрдпрдорд╛рдиреА рдерд┐рдПрдБ, рдореИрд▓реЗ рдлрд┐рд▓реНрдбрдорд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ рдерд┐рдПрдБ id:

рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдмреЗрд╕ рд░рд┐рдХрднрд░ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ (relatton base/4123007 рдХреЛ рдмреНрд▓рдХ 16490 рдорд╛ рдЕрдорд╛рдиреНрдп рдкреГрд╖реНрда)

рдпрд╕рдХреЛ рдорддрд▓рдм рдЗрдЪреНрдЫрд┐рдд рдЖрдИрдбреАрдХреЛ рд╕рд╛рде рд▓рд╛рдЗрди рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдзреЗрд░реИ рд╕рдордп рд▓рд┐рдиреБ рд╣реБрдБрджреИрдиред рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреБрдкрд░реНрдЫред рдареАрдХ рдЫ, рдХрдорд╛рдгреНрдб рднрд┐рддреНрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН tmux рд░ рдУрдЫреНрдпрд╛рдирдорд╛ рдЬрд╛рдФрдВред

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

рдкреНрд░рдпрд╛рд╕ 6: SELECT, FROM, HERE id >= рд░ 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

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 рдХреЛ рдЪрд░рдгрдХреЛ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд░реЗрдХрд░реНрдбрд╣рд░реВрдХреЛ рд╕рд╛рде рд╣рд╛рдореНрд░реЛ рджрд╛рдпрд░рд╛ рд╣реЗрд░реНрдЫреМрдВ рд░ рдЖрдИрдбреА рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрдЫреМрдВ:

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.

рддреНрдпрд╕рдкрдЫрд┐ рдореИрд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдЬрдбрд╛рди рдЧрд░реЗрдВ, рдЧрд░реЗрдВ рднреНрдпрд╛рдХреБрдо рдлреБрд▓ (рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рдпреЛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдПрди), рд░ рдЕрдиреНрддрдорд╛ рдореИрд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмреНрдпрд╛рдХрдЕрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рдЯрд╛рдПрдБ pg_dumpред рдбрдореНрдк рдХреБрдиреИ рддреНрд░реБрдЯрд┐ рдмрд┐рдирд╛ рд▓рд┐рдЗрдПрдХреЛ рдерд┐рдпреЛ! рдпрд╕реНрддреЛ рдореВрд░реНрдЦ рддрд░рд┐рдХрд╛рд▓реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рднрдпреЛред рдЦреБрд╢реАрдХреЛ рдХреБрдиреИ рд╕реАрдорд╛ рдерд┐рдПрди, рдзреЗрд░реИ рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рд╣рд╛рдореАрд▓реЗ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреНрди рд╕рдлрд▓ рднрдпреМрдВ!

рд╕реНрд╡реАрдХреГрддрд┐ рд░ рдирд┐рд╖реНрдХрд░реНрд╖

рдпреЛ рдХрд╕рд░реА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ Postgres рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрднрд╡ рдмрд╛рд╣рд┐рд░ рднрдпреЛред рдпреЛ рдЕрдиреБрднрд╡ рдо рд▓рд╛рдореЛ рд╕рдордп рд╕рдореНрдо рд╕рдореНрдЭрдиреЗрдЫреБред

рд░ рдЕрдиреНрддрдорд╛, рдо рдкреЛрд╖реНрдЯрдЧреНрд░реЗрд╕рдкреНрд░реЛрд▓рд╛рдИ рд░реВрд╕реА рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдЧрдЬрд╛рдд рдЕрдиреБрд╡рд╛рдж рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж рднрдиреНрди рдЪрд╛рд╣рдиреНрдЫреБ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдирд┐: рд╢реБрд▓реНрдХ рдЕрдирд▓рд╛рдЗрди рдкрд╛рдареНрдпрдХреНрд░рдорд╣рд░реВ, рдЬрд╕рд▓реЗ рд╕рдорд╕реНрдпрд╛рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрджрд╛ рдзреЗрд░реИ рдорджреНрджрдд рдЧрд░реНрдпреЛред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди