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

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

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

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

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

рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреА рддреИрдпрд╛рд░реА

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

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

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

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

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

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

рдбреЗрдЯрд╛рдмреЗрд╕ рд░реЛрдХрдирд╛: systemctl рдмрдВрдж рдХрд░реЛ [рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд] рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдПрд▓рд╕реЛрдлреЗ:
рдПрд▓рдПрд╕рдУрдПрдл +рдбреА /рдПрд╕рдЖрд░рд╡реА

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

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

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

рдЕрдЧрд▓рд╛, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ Dumpe2fs (sudo Dume2fs /dev/mapper/gu2тАФsys-srv | рдЧреНрд░реЗрдк рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ) рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪреЗрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

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

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

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

рдкреНрд░рдпрд╛рд╕ 1: рд╢реВрдиреНрдп_рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд_рдкреГрд╖реНрда

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

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

рд╡рд┐рдХрд▓реНрдк рд╢реВрдиреНрдп_рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд_рдкреЗрдЬ рдкрдврд╝рдиреЗ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ (рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕рдкреНрд░реЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ):

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

рд╣рдо рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдкреВрд░реНрдг рд╡реИрдХреНрдпреВрдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

VACUUM FULL VERBOSE

рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдмрд╛рдж рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ (рд░рд┐рд▓реИрдЯрди рдмреЗрд╕/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_рдЯреЛрд╕реНрдЯ - рдкреЛрдПрдЯрдЧреНрд░реЗрдЬрд╝ рдореЗрдВ "рд▓рдВрдмрд╛ рдбреЗрдЯрд╛" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдпрджрд┐ рдпрд╣ рдПрдХ рдкреГрд╖реНрда рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 8kb)ред

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

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

reindex table ws_log_smevlog

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

рдЕрдиреБрдХреНрд░рдордгрдГ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реБрдЖ.

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА, рд╡реИрдХреНрдпреВрдо рдкреВрд░реНрдг рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ред рдЪреВрдБрдХрд┐ рдореИрдВ рдЕрд╕рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдЖрджреА рд╣реЛ рдЪреБрдХрд╛ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рд▓рд╛рд╣ рдвреВрдБрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рд╕рд╛рдордиреЗ рдЖрдИ рд▓реЗрдЦ.

рдкреНрд░рдпрд╛рд╕ 3: рдЪрдпрди рдХрд░реЗрдВ, рд╕реАрдорд┐рдд рдХрд░реЗрдВ, рдСрдлрд╝рд╕реЗрдЯ рдХрд░реЗрдВ

рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓реЗрдЦ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрдВрдХреНрддрд┐ рджрд░ рдкрдВрдХреНрддрд┐ рджреЗрдЦрдиреЗ рдФрд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рдереА:

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 рджрд┐рди рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛. рдПрдХ рдФрд░ рдкреВрд░реНрдг рд╡рд┐рдлрд▓рддрд╛.

рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╣рд╛рд░ рдирд╣реАрдВ рдорд╛рдиреА. рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рд╕реНрдХреИрдирд┐рдВрдЧ рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рдХреНрдпреЛрдВ рд▓рдЧрд╛ред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ (рдлрд┐рд░ рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕рдкреНрд░реЛ рдкрд░) рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛:

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

LIMIT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, ORDER BY рдХреНрд▓реЙрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рддрд╛рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдБред рдЕрдиреНрдпрдерд╛, рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЙрдкрд╕рдореВрд╣ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЙрдкрд░реЛрдХреНрдд рдЖрджреЗрд╢ рдЧрд▓рдд рдерд╛: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдИ рдирд╣реАрдВ рдерд╛ рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢, рдкрд░рд┐рдгрд╛рдо рдЧрд╝рд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ OFFSET рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рдирд╛ рдФрд░ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛, рдФрд░ рдмрдврд╝рдиреЗ рдХреЗ рд╕рд╛рде рдСрдлрд╕реЗрдЯ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рдФрд░ рднреА рдЧрд┐рд░рд╛рд╡рдЯ рдЖрдПрдЧреАред

рдкреНрд░рдпрд╛рд╕ 4: рдЯреЗрдХреНрд╕реНрдЯ рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рдбрдВрдк рд▓реЗрдВ

рддрдм рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛: рдЯреЗрдХреНрд╕реНрдЯ рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рдбрдВрдк рд▓реЗрдВ рдФрд░ рдЕрдВрддрд┐рдо рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рдкрдВрдХреНрддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдЖрдЗрдП рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред ws_log_smevlog:

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

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

  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 рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдпрд╣ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ!" - рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ред рд▓реЗрдХрд┐рди, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛:
┬лws_log_smevlog рд╕реЗ * рдЪреБрдиреЗрдВ рдЬрд╣рд╛рдВ id=186529"рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛... 186 - 530 рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреА рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рдо рдХрд░рддреА рдереАрдВред рдПрдХ рдФрд░ "рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдЪрд╛рд░" рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред рдмрд╛рдж рдореЗрдВ рдореБрдЭреЗ рд╕рдордЭ рдЖрдпрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реБрдЖ: рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рд╣рдЯрд╛рддреЗ рдФрд░ рдмрджрд▓рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ "рдореГрдд рдЯреБрдкрд▓реНрд╕" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрддрд╛ рд╣реИ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдФрд░ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдП рдЧрдП рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдпрд╣ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

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

рдЕрд╕рдлрд▓рддрд╛рдПрдВ рд╣рдореЗрдВ рдордЬрдмреВрдд рдмрдирд╛рддреА рд╣реИрдВред рдЖрдкрдХреЛ рдХрднреА рд╣рд╛рд░ рдирд╣реАрдВ рдорд╛рдирдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЛ рдЕрдВрдд рддрдХ рдЬрд╛рдиреЗ рдФрд░ рдЦреБрдж рдкрд░ рдФрд░ рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдмрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рджреЗрдЦреЗрдВред рдореЗрд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рд╣реИ рдЬреЛ рдЕрджреНрд╡рд┐рддреАрдп (рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА) рд╣реИред рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 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 / рдмрд╛рддрд┐рд▓, рд▓реЗрдХрд┐рди рдпрджрд┐ SELECT рдХрдорд╛рдВрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рдЯреЗрдХреНрд╕реНрдЯ рдореБрджреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ (stderr рдХрдВрд╕реЛрд▓ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рддреНрд░реБрдЯрд┐ рд╡рд╛рд▓реА рдПрдХ рдкрдВрдХреНрддрд┐ рдореБрджреНрд░рд┐рдд рд╣реЛрддреА рд╣реИ (|| рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЪрдпрди рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ (рдХрдорд╛рдВрдб рдХрд╛ рд░рд┐рдЯрд░реНрди рдХреЛрдб) 0 рдирд╣реАрдВ рд╣реИ)).

рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдлрд╝реАрд▓реНрдб рдкрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдП рдЧрдП рдереЗ id:

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

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

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

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

рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рд░реНрд╡рд░ рдерд╛: рдбреБрдЕрд▓-рдкреНрд░реЛрд╕реЗрд╕рд░ рдЗрдВрдЯреЗрд▓ 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

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

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд┐рдирд╛ рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣рдЯрд╛ рджреА рдЧрдИрдВ рд╢реВрдиреНрдп_рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд_рдкреЗрдЬ.

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

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

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рдХрд▓рд╛ред рдпрд╣ рдЕрдиреБрднрд╡ рдореБрдЭреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдпрд╛рдж рд░рд╣реЗрдЧрд╛.

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ