Π–ΡƒΡ€Π½Π°Π»Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Microsoft SQL Server ΠΈ PostgreSQL Π² систСмах 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ€Π°Π·Ρ€Π°ΡΡ‚Π°ΡŽΡ‚ΡΡ Π΄ΠΎ гигантских Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², занимая сотни Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ дискового пространства. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ создаёт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΈ сущСствСнно замСдляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±Π°Π·Ρ‹ β€” особСнно Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… с высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. Администраторы 1Π‘ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ошибками Ρ‚ΠΈΠΏΠ° "НСдостаточно мСста Π½Π° дискС для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ" ΠΈΠ»ΠΈ "Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΆΡƒΡ€Π½Π°Π» ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ критичСскиС процСссы: ΠΎΠ±ΠΌΠ΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ практичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ очистки Π»ΠΎΠ³ΠΎΠ² SQL для Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π£Π‘Π”, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ MS SQL Server (2012–2022), PostgreSQL (9.6–15) ΠΈ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3. ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€ΡƒΡ‡Π½Ρ‹Π΅ способы Ρ‡Π΅Ρ€Π΅Π· SQL Management Studio ΠΈΠ»ΠΈ pgAdmin, Π½ΠΎ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сцСнарии с использованиСм T-SQL, PowerShell ΠΈ встроСнных инструмСнтов ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ бСзопасности β€” ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ ΠΏΡ€ΠΈ очисткС.

Если Π²Ρ‹ администрируСтС кластСр сСрвСров 1Π‘ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1Π‘:Fresh), Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ. Для Ρ‚Π°ΠΊΠΈΡ… случаСв ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΠΌ ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ связи ΠΌΠ΅ΠΆΠ΄Ρƒ 1Π‘ ΠΈ Π‘Π£Π‘Π” послС Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ очистки Π»ΠΎΠ³ΠΎΠ².

πŸ“Š ΠšΠ°ΠΊΡƒΡŽ Π‘Π£Π‘Π” Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ с 1Π‘?
Microsoft SQL Server
PostgreSQL
ОбС ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
Π”Ρ€ΡƒΠ³ΡƒΡŽ

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π»ΠΎΠ³ SQL Π² 1Π‘ разрастаСтся ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ

Π–ΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (transaction log) Π² Π‘Π£Π‘Π” фиксируСт всС измСнСния Π΄Π°Π½Π½Ρ‹Ρ…: ΠΎΡ‚ добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² 1Π‘ Π΄ΠΎ массового провСдСния Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (.mdf/.ndf Π² MS SQL ΠΈΠ»ΠΈ data-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² PostgreSQL), Π»ΠΎΠ³ Π½Π΅ сТимаСтся автоматичСски ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ расти Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ всё доступноС пространство. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ разрастания:

πŸ”Ή Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ: НапримСр, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ПолноС ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² 1Π‘ ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с внСшними систСмами Ρ‡Π΅Ρ€Π΅Π· Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (XML). Π’Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ очистку Π»ΠΎΠ³Π° Π΄ΠΎ своСго Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.

πŸ”Ή Π Π΅ΠΆΠΈΠΌ восстановлСния FULL/LOGGED: Π’ MS SQL ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π±Π°Π· 1Π‘ часто устанавливаСтся модСль FULL, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования Π»ΠΎΠ³Π°. Π’ PostgreSQL Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ эффСкт Π΄Π°Ρ‘Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ wal_level = replica.

πŸ”Ή ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ: Π‘Π΅Π· рСгулярных бэкапов Π‘Π£Π‘Π” Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ "ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ" Π»ΠΎΠ³, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½ для восстановлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² случаС сбоя.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ ΠΏΠΎΡ€Π° Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ:

  • πŸ“‰ ДисковоС пространство заканчиваСтся (особСнно Π½Π° систСмном дискС, Π³Π΄Π΅ располоТСны Ρ„Π°ΠΉΠ»Ρ‹ Π»ΠΎΠ³Π°).
  • ⚠️ Π’ ΠΆΡƒΡ€Π½Π°Π»Π΅ Windows ΠΈΠ»ΠΈ eventlog 1Π‘ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ошибки Ρ‚ΠΈΠΏΠ° "The transaction log for database 'YourBase' is full due to 'LOG_BACKUP'".
  • 🐒 Π—Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи Π² Π±Π°Π·Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π² 5–10 Ρ€Π°Π· дольшС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ).
  • πŸ”„ Π Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅.ОбновлСниСИндСксовПоиска) Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ "Π·Π°Π²ΠΈΡΠ°Ρ‚ΡŒ".
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если ваша Π±Π°Π·Π° 1Π‘ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ SIMPLE (MS SQL) ΠΈΠ»ΠΈ wal_level = minimal (PostgreSQL), Π»ΠΎΠ³ очищаСтся автоматичСски ΠΏΡ€ΠΈ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π°Ρ…. Π’ этом случаС ручная очистка Π½Π΅ трСбуСтся, Π½ΠΎ ΠΈ возмоТности восстановлСния Π΄Π°Π½Π½Ρ‹Ρ… послС сбоя ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ очисткС: Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° состояния

ΠŸΠ΅Ρ€Π΅Π΄ Π»ΡŽΠ±Ρ‹ΠΌΠΈ манипуляциями с Π»ΠΎΠ³ΠΎΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ создайтС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ 1Π‘ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π·:

  • πŸ”§ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€: АдминистрированиС β†’ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ (Ρ„Π°ΠΉΠ» .dt).
  • πŸ—„οΈ SQL Management Studio (для MS SQL): ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ Π±Π°Π·Π΅ β†’ Tasks β†’ Back Up.
  • 🐘 Для PostgreSQL: ΠΊΠΎΠΌΠ°Π½Π΄Π° pg_dump -U username -d dbname -F c -f backup.dump.

Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС Π»ΠΎΠ³Π°:

  • πŸ“Š Π’ MS SQL Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ запрос:
    DBCC SQLPERF(LOGSPACE);
    

    USE YourBaseName;

    SELECT name, log_reuse_wait_desc FROM sys.databases WHERE name = 'YourBaseName';

    Если Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ log_reuse_wait_desc Π½Π΅ пусто (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, LOG_BACKUP ΠΈΠ»ΠΈ ACTIVE_TRANSACTION), Π»ΠΎΠ³ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий.

  • 🐘 Π’ PostgreSQL посмотритС Ρ€Π°Π·ΠΌΠ΅Ρ€ WAL-Π»ΠΎΠ³ΠΎΠ²:
    SELECT pg_size_pretty(pg_table_size('pg_xlog/'::text) + pg_table_size('pg_wal/'::text));

Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ· Π±Π°Π·Ρ‹ 1Π‘|Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свободноС мСсто Π½Π° дискС (ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 20% ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π»ΠΎΠ³Π°)|ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания Π² 1Π‘|Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ-->

Если Π±Π°Π·Π° 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² кластСрном Ρ€Π΅ΠΆΠΈΠΌΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 1Π‘:Π‘Π΅Ρ€Π²Π΅Ρ€ΠΎΠΌ прСдприятий), ΠΏΠ΅Ρ€Π΅Π΄ очисткой Π»ΠΎΠ³Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы Ρ‡Π΅Ρ€Π΅Π· Консоль кластСра ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ras cluster --disable
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1Π‘:Fresh ΠΈΠ»ΠΈ 1Π‘:Π“ISPRU) прямая очистка Π»ΠΎΠ³ΠΎΠ² SQL ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠΌ. Π’ этом случаС ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ с запросом ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π»ΠΎΠ³Π° Π² Microsoft SQL Server для 1Π‘

Для MS SQL сущСствуСт нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² очистки Π»ΠΎΠ³Π°, зависящих ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ восстановлСния Π±Π°Π·Ρ‹. Рассмотрим ΠΈΡ… ΠΏΠΎ порядку.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π»ΠΎΠ³Π° Ρ‡Π΅Ρ€Π΅Π· SQL Management Studio (GUI)

Π‘Π°ΠΌΡ‹ΠΉ простой способ для Π±Π°Π· Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ FULL ΠΈΠ»ΠΈ BULK_LOGGED:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ SQL Management Studio, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ сСрвСру.
  2. ΠŸΡ€Π°Π²Ρ‹ΠΉ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ Π±Π°Π·Π΅ 1Π‘ β†’ Tasks β†’ Shrink β†’ Files.
  3. Π’ спискС Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Log (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .ldf).
  4. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Shrink action β†’ Release unused space (ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ пространство).
  5. НаТмитС OK ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Если ΠΊΠ½ΠΎΠΏΠΊΠ° Shrink Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Π°, Π·Π½Π°Ρ‡ΠΈΡ‚ Π»ΠΎΠ³ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½. Π’ этом случаС сначала Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³Π°:

BACKUP LOG [YourBaseName] TO DISK = 'C:\Backups\YourBaseName_log.trn';

DBCC SHRINKFILE (N'YourBaseName_log', 100); -- Π£ΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π»ΠΎΠ³ Π΄ΠΎ 100 ΠœΠ‘

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: АвтоматичСская очистка Ρ‡Π΅Ρ€Π΅Π· T-SQL

Для Π±Π°Π· Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ SIMPLE ΠΈΠ»ΠΈ Ссли Π½ΡƒΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ скрипт:

USE [master];

ALTER DATABASE [YourBaseName] SET RECOVERY SIMPLE;

DBCC SHRINKFILE (N'YourBaseName_log', 1);

ALTER DATABASE [YourBaseName] SET RECOVERY FULL; -- Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ FULL, Ссли Π½ΡƒΠΆΠ΅Π½

Если послС сТатия Π»ΠΎΠ³ снова быстро разрастаСтся, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:

  • πŸ”„ НаличиС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹Π΅ ΠΎΠ±ΠΌΠ΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ).
  • πŸ“₯ Частоту Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования β€” Π»ΠΎΠ³ очищаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС бэкапа.
  • πŸ› οΈ Настройки автоувСличСния Ρ„Π°ΠΉΠ»Π° Π»ΠΎΠ³Π° (Π² свойствах Π±Π°Π·Ρ‹ β†’ Files).
BACKUP LOG [YourBaseName] TO DISK = 'C:\Backups\YourBaseName_log.trn' WITH COMPRESSION;

Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π΅Π³ΠΎ Π±Π΅ΡΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ рост.-->

ΠœΠ΅Ρ‚ΠΎΠ΄ 3: ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· PowerShell (для администрирования мноТСства Π±Π°Π·)

Если Ρƒ вас дСсятки Π±Π°Π· 1Π‘ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ скрипт PowerShell для массовой очистки:

$servers = @("SQLServer1", "SQLServer2")

$databases = @("Base1", "Base2", "Base3")

foreach ($server in $servers) {

foreach ($db in $databases) {

Invoke-Sqlcmd -ServerInstance $server -Query "

USE [$db];

ALTER DATABASE [$db] SET RECOVERY SIMPLE;

DBCC SHRINKFILE (N'${db}_log', 1);

ALTER DATABASE [$db] SET RECOVERY FULL;"

}

}

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании SIMPLE-Ρ€Π΅ΠΆΠΈΠΌΠ° Π²Ρ‹ тСряСтС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ восстановлСния Π±Π°Π·Ρ‹ (point-in-time recovery). Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для тСстовых ΠΈΠ»ΠΈ Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… Π±Π°Π· 1Π‘.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π»ΠΎΠ³Π° Π² PostgreSQL для 1Π‘

Π’ PostgreSQL ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ называСтся WAL (Write-Ahead Log). Π•Π³ΠΎ очистка ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ запись Π»ΠΎΠ³ΠΎΠ² с автоматичСской Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠ΅ΠΉ.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: Π ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… WAL-Ρ„Π°ΠΉΠ»ΠΎΠ²

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ WAL-Ρ„Π°ΠΉΠ»Ρ‹ хранятся Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ pg_wal (ΠΈΠ»ΠΈ pg_xlog Π² старых вСрсиях). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ:

  1. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ слуТбу PostgreSQL:
    sudo systemctl stop postgresql
  2. Π£Π΄Π°Π»ΠΈΡ‚Π΅ старыС WAL-Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΡ‚Π°Ρ€ΡˆΠ΅ 7 Π΄Π½Π΅ΠΉ):
    find /var/lib/postgresql/14/main/pg_wal/ -name "000*" -mtime +7 -delete
  3. ЗапуститС PostgreSQL:
    sudo systemctl start postgresql

⚠️ Π’Π°ΠΆΠ½ΠΎ: НС удаляйтС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ PostgreSQL (ΠΈΡ… ΠΈΠΌΠ΅Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ LSN β€” Log Sequence Number). Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ LSN, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

SELECT pg_current_wal_lsn();

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: Настройка автоматичСской Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΈ очистки

Для прСдотвращСния разрастания WAL настройтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² postgresql.conf:

wal_level = replica              # ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

archive_mode = on # Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΡŽ

archive_command = 'test ! -f /wal_archive/%f && cp %p /wal_archive/%f' # Команда Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠΈ

archive_timeout = 300 # ΠΡ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ WAL ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 5 ΠΌΠΈΠ½ΡƒΡ‚

ПослС этого PostgreSQL Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ старыС WAL-Ρ„Π°ΠΉΠ»Ρ‹ Π² Π°Ρ€Ρ…ΠΈΠ² (/wal_archive), освобоТдая мСсто. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ скрипт:

find /wal_archive/ -name "000*" -mtime +30 -delete  # УдаляСт Π°Ρ€Ρ…ΠΈΠ²Ρ‹ ΡΡ‚Π°Ρ€ΡˆΠ΅ 30 Π΄Π½Π΅ΠΉ

ΠœΠ΅Ρ‚ΠΎΠ΄ 3: ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· pg_archivecleanup

Если Ρƒ вас настроСна рСпликация, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ pg_archivecleanup для бСзопасного удалСния WAL-Ρ„Π°ΠΉΠ»ΠΎΠ²:

pg_archivecleanup -d /wal_archive/ 00000001000000000000000A

Π³Π΄Π΅ 00000001000000000000000A β€” ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ LSN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ (ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· pg_lsdir).

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС WAL-Ρ„Π°ΠΉΠ»Ρ‹?

Если ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС WAL-Ρ„Π°ΠΉΠ»Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅, PostgreSQL Π½Π΅ смоТСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ‚ΠΈΠΏΠ° "could not open file "pg_wal/00000001000000000000000A": No such file or directory". Π’ этом случаС потрСбуСтся Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт pg_resetwal (рискованно, ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…!).

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π»ΠΎΠ³ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· инструмСнты 1Π‘

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 прСдоставляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΠΎΠ³Π°ΠΌΠΈ SQL, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π±Π΅Π· прямого доступа ΠΊ Π‘Π£Π‘Π”.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: ВСстированиС ΠΈ исправлСниС Π±Π°Π·Ρ‹

Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ 1Π‘ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅: АдминистрированиС β†’ ВСстированиС ΠΈ исправлСниС.

Π’ настройках тСстирования ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅:

  • πŸ”§ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ.
  • πŸ”§ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΡΡΡ‹Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ.
  • πŸ”§ Π Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  • πŸ”§ Π‘ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (это косвСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Π»ΠΎΠ³ SQL).

ПослС тСстирования 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуру Π±Π°Π·Ρ‹, Ρ‡Ρ‚ΠΎ снизит ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ записи Π² Π»ΠΎΠ³.

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: ИспользованиС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ "Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Π˜Π‘"

Π’ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Π˜Π‘.epf (доступна Π² дистрибутивС 1Π‘) Π΅ΡΡ‚ΡŒ функция Π‘ΠΆΠ°Ρ‚ΡŒΠ€Π°ΠΉΠ»Ρ‹Π‘Π°Π·Ρ‹Π”Π°Π½Π½Ρ‹Ρ…(), которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π‘Π£Π‘Π” для сТатия Π»ΠΎΠ³Π°. Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅.
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π±Π°Π·Ρƒ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π‘ΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  3. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.

⚠️ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли:

  • Π‘Π°Π·Π° находится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ SIMPLE (MS SQL).
  • НСт Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ 1Π‘ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ DBCC SHRINKFILE.

ΠœΠ΅Ρ‚ΠΎΠ΄ 3: ОбновлСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ

ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ 3.0.70 Π΄ΠΎ 3.0.80) ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски выполняСт Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот процСсс:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Π±Π°Π·Ρ‹.
  2. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ β†’ Π€Π°ΠΉΠ» β†’ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ.
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ β†’ Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.
  4. ПослС обновлСния запуститС тСстированиС ΠΈ исправлСниС.
πŸ’‘

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π»ΠΎΠ³ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· инструмСнты 1Π‘ ΠΌΠ΅Π½Π΅Π΅ эффСктивна, Ρ‡Π΅ΠΌ прямыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊ Π‘Π£Π‘Π”, Π½ΠΎ бСзопаснСС для Π½Π΅ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… администраторов. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Ρ‘, Ссли Π½Π΅Ρ‚ доступа ΠΊ SQL Management Studio ΠΈΠ»ΠΈ pgAdmin.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

НСкоррСктная очистка Π»ΠΎΠ³Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ Π±Π°Π·Ρ‹ ΠΈΠ»ΠΈ остановкС Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘. Рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ опасныС ошибки ΠΈ способы ΠΈΡ… прСдотвращСния.

Ошибка ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ FULL Π±Π΅Π· бэкапа ΠŸΠΎΡ‚Π΅Ρ€Ρ возмоТности восстановлСния Π±Π°Π·Ρ‹ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ВсСгда Π΄Π΅Π»Π°ΠΉΡ‚Π΅ BACKUP LOG ΠΏΠ΅Ρ€Π΅Π΄ сТатиСм
ИспользованиС DBCC SHRINKFILE Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π±Π°Π·Π΅ Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, мСдлСнная Ρ€Π°Π±ΠΎΡ‚Π° 1Π‘ ВыгоняйтС всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ выполняйтС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² ΠΎΠΊΠ½Π΅ обслуТивания
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ всСх WAL-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² PostgreSQL PostgreSQL Π½Π΅ запустится, потрСбуСтся восстановлСниС ΠΈΠ· бэкапа Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ pg_archivecleanup ΠΈΠ»ΠΈ оставляйтС послСдниС WAL-Ρ„Π°ΠΉΠ»Ρ‹
Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π»ΠΎΠ³Π° Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° мСньшС, Ρ‡Π΅ΠΌ трСбуСтся для Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π›ΠΎΠ³ снова быстро разрастётся, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ошибки записи ΠžΡΡ‚Π°Π²Π»ΡΠΉΡ‚Π΅ запас ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 10–20% ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°
Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ошибок log_reuse_wait_desc Π›ΠΎΠ³ Π½Π΅ очистится, диск заполнится ВсСгда провСряйтС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SELECT * FROM sys.dm_tran_active_transactions)

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° распространённая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ошибка связи ΠΌΠ΅ΠΆΠ΄Ρƒ 1Π‘ ΠΈ SQL послС очистки Π»ΠΎΠ³Π°. Π­Ρ‚ΠΎ происходит, Ссли:

  • πŸ”Œ Π’ процСссС очистки Π±Ρ‹Π» ΠΏΡ€Π΅Ρ€Π²Π°Π½ сСанс 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ).
  • πŸ”„ ИзмСнились ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π»ΠΎΠ³Π°.
  • πŸ“‚ Π€Π°ΠΉΠ» Π»ΠΎΠ³Π° Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Ρ‘Π½ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ связь:

  1. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ слуТбу 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.
  2. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ АдминистрированиС β†’ ВСстированиС ΠΈ исправлСниС.
  3. Если ошибка сохраняСтся, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ настройки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² 1Cv8.1CD (Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ кластСра).

Автоматизация очистки Π»ΠΎΠ³ΠΎΠ²

Ручная очистка Π»ΠΎΠ³ΠΎΠ² β€” Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘ настройтС автоматичСскоС обслуТиваниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Для Microsoft SQL Server

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠ»Π°Π½Ρ‹ обслуТивания (Maintenance Plans) Π² SQL Management Studio:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Π½: Management β†’ Maintenance Plans.
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Ρƒ Back Up Database (Transaction Log).
  3. НастройтС расписаниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 2:00).
  4. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Ρƒ Shrink Database с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Release unused space.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ скрипта для автоматичСского бэкапа ΠΈ сТатия Π»ΠΎΠ³Π°:

-- Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ

USE msdb;

GO

CREATE PROCEDURE dbo.ShrinkLogProcedure

AS

BEGIN

DECLARE @DatabaseName NVARCHAR(255)

DECLARE @SQL NVARCHAR(MAX)

DECLARE db_cursor CURSOR FOR

SELECT name FROM sys.databases WHERE recovery_model_desc = 'FULL'

OPEN db_cursor

FETCH NEXT FROM db_cursor INTO @DatabaseName

WHILE @@FETCH_STATUS = 0

BEGIN

SET @SQL = 'USE [' + @DatabaseName + ']; BACKUP LOG [' + @DatabaseName + '] TO DISK = ''C:\Backups\' + @DatabaseName + '_log.trn'' WITH COMPRESSION; DBCC SHRINKFILE (N''' + @DatabaseName + '_log'', 1);'

EXEC sp_executesql @SQL

FETCH NEXT FROM db_cursor INTO @DatabaseName

END

CLOSE db_cursor

DEALLOCATE db_cursor

END;

GO

-- ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π² SQL Server Agent

EXEC msdb.dbo.sp_add_job @job_name = 'Nightly Log Shrink';

EXEC msdb.dbo.sp_add_jobstep @job_name = 'Nightly Log Shrink', @step_name = 'Shrink Logs', @subsystem = 'TSQL', @command = 'EXEC msdb.dbo.ShrinkLogProcedure';

EXEC msdb.dbo.sp_add_schedule @job_name = 'Nightly Log Shrink', @name = 'Nightly', @freq_type = 4, @freq_interval = 1, @active_start_time = 20000; -- Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 2:00

EXEC msdb.dbo.sp_add_jobserver @job_name = 'Nightly Log Shrink';

Для PostgreSQL

НастройтС cron-Π·Π°Π΄Π°Ρ‡Ρƒ для Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΈ очистки WAL:

0 2    /usr/bin/find /wal_archive/ -name "000" -mtime +7 -delete  # УдаляСт Π°Ρ€Ρ…ΠΈΠ²Ρ‹ ΡΡ‚Π°Ρ€ΡˆΠ΅ 7 Π΄Π½Π΅ΠΉ

0 3 * /usr/bin/psql -U postgres -c "SELECT pg_switch_wal();" # ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ WAL-Ρ„Π°ΠΉΠ»

Для Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π±Π°Π· 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ pg_basebackup ΠΈ pg_waldump для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π»ΠΎΠ³ΠΎΠ².

Для 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅

АвтоматизируйтС тСстированиС ΠΈ исправлСниС Π±Π°Π·Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания:

  1. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ АдминистрированиС β†’ Π Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания.
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ с Ρ‚ΠΈΠΏΠΎΠΌ Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Π˜Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉΠ‘Π°Π·Ρ‹.
  3. НастройтС расписаниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π· Π² нСдСлю Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя).
πŸ’‘

Автоматизация очистки Π»ΠΎΠ³ΠΎΠ² сокращаСт риск чСловСчСской ошибки ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ диска. НачинайтС с консСрвативных настроСк (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, очистка Ρ€Π°Π· Π² нСдСлю) ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ частоту ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ наблюдСния Π·Π° ростом Π»ΠΎΠ³ΠΎΠ².

FAQ: ЧастыС вопросы ΠΏΠΎ очисткС Π»ΠΎΠ³ΠΎΠ² SQL Π² 1Π‘

МоТно Π»ΠΈ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π»ΠΎΠ³ SQL, Π½Π΅ останавливая Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² 1Π‘?

Π”Π°, Π½ΠΎ с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ:

  • πŸ”Ή Π’ MS SQL ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ BACKUP LOG ΠΈ DBCC SHRINKFILE Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π±Π°Π·Π΅, Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρƒ.
  • πŸ”Ή Π’ PostgreSQL ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ старых WAL-Ρ„Π°ΠΉΠ»ΠΎΠ² (Π½Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ…!) Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· остановки, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности.
  • πŸ”Ή РСкомСндуСтся ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ очистку Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя ΠΈΠ»ΠΈ послС Π²Ρ‹Π³ΠΎΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.
Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ восстановлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΌΠΎΠ΅ΠΉ Π±Π°Π·Π΅ 1Π‘?

Для MS SQL Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ запрос:

SELECT name, recovery_model_desc FROM sys.databases;

Для PostgreSQL ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ wal_level Π² Ρ„Π°ΠΉΠ»Π΅ postgresql.conf ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· запрос:

SHOW wal_level;

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ FULL (MS SQL) ΠΈΠ»ΠΈ replica/logical (PostgreSQL), Π»ΠΎΠ³ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рСгулярного Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли послС очистки Π»ΠΎΠ³ снова быстро разрастаСтся?

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • πŸ”„ Π”Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹Π΅ ΠΎΠ±ΠΌΠ΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ запрос:
    SELECT * FROM sys.dm_tran_active_transactions (MS SQL)
    

    SELECT pid, usename, query FROM pg_stat_activity WHERE state = 'active' (PostgreSQL)

  • πŸ“₯ ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ бэкапов Π»ΠΎΠ³Π°: НастройтС автоматичСскоС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³Π° (см. Ρ€Π°Π·Π΄Π΅Π» "Автоматизация").
  • πŸ› οΈ ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ настройки автоувСличСния: Π’ MS SQL ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³Π° Π² свойствах Π±Π°Π·Ρ‹ ΠΈΠ»ΠΈ настройтС autogrow Π½Π° фиксированный прирост (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ 100 ΠœΠ‘).
  • πŸ”§ Ошибки Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ 1Π‘: НСкоторыС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массовоС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡ… ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.
МоТно Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π° SQL для Π±Π°Π·Ρ‹ 1Π‘?

ВСхничСски Π΄Π°, Π½ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ рСкомСндуСтся:

  • πŸ”Ή Π’ MS SQL ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти Π±Π°Π·Ρƒ Π² Ρ€Π΅ΠΆΠΈΠΌ SIMPLE, Π½ΠΎ Π²Ρ‹ потСряСтС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ восстановлСния Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  • πŸ”Ή Π’ PostgreSQL ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ wal_level = minimal Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ это сдСлаСт Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования.
  • πŸ”Ή Риски: ΠŸΡ€ΠΈ сбоС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ сСрвСра) Π²Ρ‹ смоТСтС Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ послСднСго ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ бэкапа, потСряв всС измСнСния послС Π½Π΅Π³ΠΎ.

πŸ’‘ ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡΡΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: НастройтС рСгулярноС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 15 ΠΌΠΈΠ½ΡƒΡ‚) ΠΈ Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ очистку. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ восстановлСния ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ разрастания Π»ΠΎΠ³Π°.

Как ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π»ΠΎΠ³ SQL Π² ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ вСрсии 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1Π‘:Fresh)?

Π’ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… (1Π‘:Fresh, 1Π‘:Π“ISPRU, 1Π‘:Π›ΠΈΠ½ΠΊ) прямая очистка Π»ΠΎΠ³ΠΎΠ² SQL ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’Π°ΡˆΠΈ дСйствия:

  • πŸ“§ ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° с запросом ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅:
    • НазваниС Π±Π°Π·Ρ‹.
    • Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³Π° (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· АдминистрированиС β†’ ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² 1Π‘).
    • Частоту появлСния ошибок (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "диск Π·Π°ΠΏΠΎΠ»Π½Π΅Π½").
  • πŸ”„ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ 1Π‘:
    • Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΠΌΠ΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ) Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.