Praktiski raksti par migrācijām, monitoringu, arhitektūru un incidentiem, no kuriem esam mācījušies visvairāk — rakstīti inženieru, kas paši veic šo darbu, nevis mārketinga komandas.
Kā darbojas ClickHouse rezerves kopijas ar iebūvētajām BACKUP un RESTORE komandām: rezerves disks un S3, ASYNC un system.backups, inkrementālās kopijas ar base_backup, droša atjaunošana, ON CLUSTER, FREEZE un clickhouse-backup kā alternatīvas un kas mainās daudzterabaitu datiem.
🚨 Incidentu reaģēšanaKo nozīmē PostgreSQL "Connection refused" un "Is the server running on that host and accepting TCP/IP connections?", kā to pārbaudīt ar četrām komandām, listen_addresses un soketu ceļi, ugunsmūri un kāpēc liela datubāze pēc avārijas var ilgi atteikt vai noraidīt savienojumus.
📈 MonitoringsKā ieslēgt pg_stat_statements, vaicājumi, ar kuriem sarindot izteikumus pēc kopējā laika, I/O, pagaidu failiem un WAL, kā lasīt calls, vidējo laiku un rindas, kāpēc ieraksti pazūd, kā veidot momentuzņēmumus un kas mainās lielās, noslogotās PostgreSQL datubāzēs.
🚨 Incidentu reaģēšanaKo Redis un Valkey nozīmē "READONLY You can't write against a read only replica", kāpēc tā parādās pēc failover, ar ElastiCache galapunktiem, Sentinel un Kubernetes servisiem, kā pārbaudīt mezglu ar ROLE, kāpēc replica-read-only no ir nepareizs risinājums un kas mainās ar lielām datu kopām.
🚨 Incidentu reaģēšanaKā lasīt MySQL replikācijas kļūdu 1236: "Could not find first log file name", izdzēsti GTID (kļūda 1789), "binlog truncated in the middle of event" un "log event entry exceeded max_allowed_packet". Ko katra nozīmē, kā droši atjaunot un kā noteikt bināro žurnālu glabāšanas laiku lielos serveros.
📈 MonitoringsKo nozīmē InnoDB history list length izvadē SHOW ENGINE INNODB STATUS, kāpēc ilgas transakcijas un intensīvs DML liek tam augt, kā atrast transakciju, kas aiztur purge, kā darbojas purge un undo saīsināšana un kas mainās lielos MySQL serveros.
🔄 MigrācijasKas PostgreSQL 19 mainās DBA: nesaderības, kas bloķē pg_upgrade, noņemts RADIUS, MD5 brīdinājumi, JIT pēc noklusējuma izslēgts, divkāršots max_locks_per_transaction, lz4 TOAST saspiešana, kā arī REPACK CONCURRENTLY un WAIT FOR LSN ar pārbaudēm lielām datubāzēm.
🚨 Incidentu reaģēšanaKo PostgreSQL nozīmē "canceling statement due to statement timeout", kā tā atšķiras no lock timeout un lietotāja atcelšanas, kā atrast, kur iestatīts statement_timeout, kā novērst lēno vaicājumu vai bloķēšanu un kā droši iestatīt taimautus lielās datubāzēs.
🏗️ ArhitektūraKā droši dzēst rindas ClickHouse: vieglais DELETE un _row_exists maska, ALTER TABLE DELETE mutācijas, kas pārraksta daļas, DROP PARTITION un TTL veciem datiem, iestrēgušu mutāciju uzraudzība un atcelšana, un kas mainās lielām tabulām.
📈 MonitoringsKo nozīmē PostgreSQL brīdinājums "checkpoints are occurring too frequently", kā to apstiprināt ar pg_stat_checkpointer un log_checkpoints, kā izvēlēties max_wal_size pēc reālā WAL apjoma un kas mainās lielās, rakstīšanas noslogotās datubāzēs.
📈 MonitoringsKā izmeklēt Redis latentuma lēcienus: SLOWLOG lasīšana, latentuma monitora ieslēgšana, iekšējā latentuma mērīšana, fork un transparent huge pages, AOF fsync, masveida derīguma beigas, lielu atslēgu dzēšana un kas mainās ar lielām datu kopām.
📈 MonitoringsKo patiesībā nozīmē augsts Redis mem_fragmentation_ratio, kāpēc tas nav tīrs fragmentācijas rādītājs, kā atšķirt īstu fragmentāciju no pagātnes maksimuma vai swap, kā darbojas aktīvā defragmentācija Redis un Valkey, un kas jādara lielām instancēm.
🔄 MigrācijasKā palaist MySQL ALTER TABLE bez dīkstāves lielām tabulām: kuras operācijas ir INSTANT, ko INPLACE patiesībā bloķē, metadatu bloķēšanas rinda, kas iesaldē produkciju, diska vieta un repliku nobīde lielām tabulām, un kad pāriet uz gh-ost vai pt-online-schema-change.
🚨 Incidentu reaģēšanaKo nozīmē MySQL kļūda 1153 "Got a packet bigger than max_allowed_packet bytes", kāpēc klienta un servera limiti atšķiras, kā droši palielināt max_allowed_packet ar SET PERSIST vai my.cnf un ko darīt dampu atjaunošanai un replikācijai.
🔄 MigrācijasKā lietot pg_dump lielai datubāzei: direktorijas formāts un paralēli procesi, kompresija, ko ilga izmete nodara slēdzenēm un vacuum, izmete no rezerves servera, ātrs paralēls pg_restore, statistika pēc atjaunošanas un kad pg_dump ir nepareizais rīks.
🔄 MigrācijasPraktisks ceļvedis PostgreSQL 14 uz 18 atjaunināšanai: kontrolsummu neatbilstība, kas aptur pg_upgrade, dzēsti iestatījumi, kas neļauj serverim startēt, pārdēvētas rezerves kopiju funkcijas, pārvietotas monitoringa kolonnas, drošā search_path izmaiņa, kas salauž ANALYZE, MD5 novecošana, jaunā statistikas apstrāde un kas mainās lielās datubāzēs.
🔄 MigrācijasKāpēc PostgreSQL 15 un jaunākas versijas atgriež "permission denied for schema public" pie CREATE TABLE, kāpēc atjauninātas datubāzes uzvedas citādi nekā jaunas, un trīs tīri risinājumi: datubāzes īpašumtiesības, atsevišķa shēma vai mērķēts GRANT CREATE.
🚨 Incidentu reaģēšanaKāpēc PostgreSQL uz hot standby atceļ vaicājumus ar "canceling statement due to conflict with recovery", kā atšķirt snapshot, slēdzeņu un bufera piespraudes konfliktus un kad izmantot max_standby_streaming_delay, hot_standby_feedback, replikācijas slotu vai atsevišķu atskaišu repliku.
🚨 Incidentu reaģēšanaKo nozīmē PostgreSQL kļūda "invalid page in block ... of relation", kā faila ceļu piesaistīt tabulai vai indeksam, kāpēc pirms jebkādām darbībām kopēt datu direktoriju, kā pārbaudīt bojājumu ar amcheck, pg_amcheck un pg_checksums un kad pareizais risinājums ir REINDEX, atjaunošana vai zero_damaged_pages.
🚨 Incidentu reaģēšanaKo nozīmē PostgreSQL kļūdas "sorry, too many clients already" un "remaining connection slots are reserved", kā redzēt, kas tur savienojumus, kā droši atbrīvot slotus tūlīt un kāpēc pūlers, lomu limiti un taimauti ir labāki par max_connections palielināšanu.
🚨 Incidentu reaģēšanaKo nozīmē Redis kļūda "LOADING Redis is loading the dataset in memory", kuras komandas ielādes laikā joprojām strādā (INFO jā, PING nē), kā sekot progresam ar INFO persistence, kāpēc Kubernetes pārbaudes var izraisīt restartu ciklus un kā swapdb un persistences izvēle saīsina pārtraukumu.
🚨 Incidentu reaģēšanaKo nozīmē ClickHouse kļūda "Too many partitions for single INSERT block (more than 100)", kā max_partitions_per_insert_block skaita partīcijas katrā blokā, kā ielādēt vēsturi pa daļām, kad palielināt limitu un kā pārbūvēt tabulu ar saprātīgāku PARTITION BY.
🚨 Incidentu reaģēšanaKo nozīmē MySQL kļūda 2002 "Can't connect to local MySQL server through socket", kāpēc localhost izmanto Unix socket, kā lasīt kodus (2), (13) un (111), kā atrast īsto socket ceļu un kā salabot serveri, klientus un PHP lietotnes, kas par to nav vienisprātis.
🚨 Incidentu reaģēšanaKo īsti pārbauda MySQL ERROR 1045 (28000) "Access denied for user", kā darbojas user@host salīdzināšana un kārtošana, localhost pret 127.0.0.1, "using password: NO", CURRENT_USER(), opciju faili, auth_socket un kļūda 1698, kā arī droša root paroles atiestatīšana.
🚨 Incidentu reaģēšanaKāpēc Redis un Valkey noraida savienojumus ar "ERR max number of clients reached", kā maxclients saistīts ar ulimit -n un 32 rezervētajiem failu deskriptoriem, kā ar CLIENT LIST atrast klientu, kas noplūdina savienojumus, un kad izmantot timeout, CLIENT KILL vai augstāku limitu.
🚨 Incidentu reaģēšanaKo nozīmē ClickHouse kļūda 202 TOO_MANY_SIMULTANEOUS_QUERIES, seši limiti, kas to izraisa (max_concurrent_queries un tā select, insert, lietotāja, visu lietotāju un gaidīšanas varianti), kā skatīt system.processes un query_log pat tad, kad serveris ir pilns, un kā konfigurēt limitus un rezervi.
🚨 Incidentu reaģēšanaKo nozīmē MySQL ERROR 1114 (HY000) "The table is full" un kā atrast īsto cēloni: pilns disks, sistēmas tablespace ar maksimālo izmēru, InnoDB pagaidu tablespace, MEMORY tabula pie max_heap_table_size vai MyISAM izmēra limits. Ar vaicājumiem un konfigurāciju MySQL 8.4.
🚨 Incidentu reaģēšanaKāpēc PostgreSQL beidzas ar "could not resize shared memory segment ... No space left on device", kā paralēlie vaicājumi izmanto dinamisko koplietojamo atmiņu /dev/shm, kāpēc Docker konteineri to sasniedz pie 64 MB un kā to novērst ar --shm-size, shm_size vai atmiņā balstītu emptyDir Kubernetes vidē.
🚨 Incidentu reaģēšanaKo īsti nozīmē PostgreSQL kļūda "no pg_hba.conf entry for host", kā nolasīt ziņojumā IP, lietotāju, datubāzi un šifrēšanas stāvokli, kā pārbaudīt noteikumus ar pg_hba_file_rules, droši pārlādēt konfigurāciju un atšķirt to no "password authentication failed".
🚨 Incidentu reaģēšanaKo nozīmē ClickHouse kļūda "Table is in readonly mode" (kods 242, TABLE_IS_READ_ONLY), kā to diagnosticēt ar system.replicas un system.zookeeper_connection, kā pārbaudīt ClickHouse Keeper un kad lietot SYSTEM RESTART REPLICA, bet kad SYSTEM RESTORE REPLICA.
🚨 Incidentu reaģēšanaKāpēc MySQL binārie žurnāli aug, kā izdzēst MySQL bināros žurnālus ar PURGE BINARY LOGS, nesabojājot replikas, kāpēc rm binlog failiem nāk par ļaunu un kā iestatīt binlog_expire_logs_seconds, saspiešanu un glabāšanu mākonī, lai disks vairs nepiepildītos.
🚨 Incidentu reaģēšanaKo nozīmē PostgreSQL kļūda "out of shared memory" ar max_locks_per_transaction mājienu, kā pg_locks atrast sesiju ar tūkstošiem slēdzeņu, kāpēc to izraisa particionētas tabulas, pg_dump un lielas migrāciju transakcijas un kā droši palielināt limitu primārajā serverī ar replikām.
🚨 Incidentu reaģēšanaKo nozīmē Redis MISCONF kļūda "unable to persist to disk", kāpēc stop-writes-on-bgsave-error bloķē rakstīšanu un pat PING, kā atrast neizdevušās BGSAVE cēloni INFO persistence un žurnālā (pilns disks, tiesības, fork kļūme, OOM kill) un kā droši atjaunoties. Attiecas arī uz Valkey.
🚨 Incidentu reaģēšanaKo patiesībā nozīmē MySQL kļūda 1213, kāpēc InnoDB atritina visu transakciju, kā lasīt LATEST DETECTED DEADLOCK, kā reģistrēt un skaitīt visus deadlock gadījumus, biežākie cēloņi (slēdzeņu secība, trūkstoši indeksi, dublētu atslēgu INSERT) un kā uzrakstīt atkārtošanu, kas nepasliktina situāciju.
🚨 Incidentu reaģēšanaKo nozīmē MySQL kļūdas 2006, 2013 un 4031, kā atšķirt dīkstāves taimautu no pārāk liela paketes izmēra, pārtraukta vaicājuma, servera restarta vai tīkla pārrāvuma, kurus mainīgos pārbaudīt (wait_timeout, max_allowed_packet, net_read_timeout) un kāpēc akla atkārtota pieslēgšanās var nemanāmi zaudēt transakcijas stāvokli.
📈 MonitoringsKā atrast uzpūstus PostgreSQL indeksus ar pgstatindex, kāpēc parasts REINDEX bloķē gandrīz visus vaicājumus, kā darbojas REINDEX CONCURRENTLY un ko tas nevar, kā sekot progresam, kā satīrīt _ccnew un _ccold atlikumus un kad deduplikācija un bottom-up dzēšana padara pārbūvi lieku.
📈 MonitoringsKad uzpūstai PostgreSQL tabulai tiešām vajag pārrakstīšanu, kā izmērīt bloat ar pgstattuple_approx, kāpēc VACUUM FULL bloķē visus vaicājumus tabulai, kā strādā pg_repack un kas tam vajadzīgs, ko maina PostgreSQL 19 REPACK (CONCURRENTLY) un kā izvēlēties starp tiem.
🚨 Incidentu reaģēšanaPraktisks ceļvedis par ClickHouse "Memory limit exceeded" (Code 241, MEMORY_LIMIT_EXCEEDED): vaicājuma, lietotāja un kopējais limits, max_memory_usage un max_server_memory_usage_to_ram_ratio, vaininieka meklēšana system.query_log un system.processes, GROUP BY, ORDER BY un join izlikšana uz disku un atmiņas overcommit.
📈 MonitoringsPraktisks ceļvedis par MySQL innodb_buffer_pool_size: 128MB noklusējums, ko dokumentācija iesaka veltītiem serveriem, innodb_dedicated_server, gabali (chunks) un instances, izmēra maiņa tiešsaistē ar statusa uzraudzību, uzsildīšana pēc restarta un statusa skaitītāji, kas liecina par pārāk mazu pūlu.
🚨 Incidentu reaģēšanaKo patiesībā nozīmē stāvoklis "idle in transaction" skatā pg_stat_activity, kāpēc tas bloķē slēdzenes un VACUUM, kā atrast bloķētāju ar pg_blocking_pids, kad lietot pg_terminate_backend un kā to novērš idle_in_transaction_session_timeout, transaction_timeout un PgBouncer ierobežojumi.
🏗️ ArhitektūraPraktisks ceļvedis par Redis noturību: RDB momentuzņēmumi un saglabāšanas punkti, AOF un appendfsync, daudzdaļīgs AOF kopš Redis 7.0, fork izmaksas, droša pāreja no RDB uz AOF strādājošā serverī, rezerves kopijas un monitorings.
🚨 Incidentu reaģēšanaPraktisks plāns MySQL replikācijas kļūdām 1062 (dublēts ieraksts) un 1032 (ieraksts nav atrasts): kļūdainā GTID atrašana, transakcijas labošana vai izlaišana, kāpēc replica_skip_errors ir slazds un kā pēc tam pārbaudīt konsekvenci.
📈 MonitoringsPraktisks ceļvedis par MySQL lēno vaicājumu žurnālu: ieslēgšana darbības laikā, long_query_time izvēle, ko rāda Rows_examined, kopsavilkums ar pt-query-digest un Performance Schema, ja nav piekļuves failam.
🚨 Incidentu reaģēšanaPraktisks ceļvedis par PostgreSQL atjaunošanu uz laika punktu: WAL arhivēšana un bāzes rezerves kopijas, pg_stat_archiver pārbaude, restore_command, recovery.signal, recovery_target_time un pauze, laika līnijas un kāpēc atjaunot uz atsevišķa servera.
🚨 Incidentu reaģēšanaPraktisks ceļvedis par PostgreSQL transakciju ID wraparound: XID vecums, brīdinājumi pirms apstāšanās, kas aiztur iesaldēšanu (vecas transakcijas, sagatavotās transakcijas, replikācijas sloti), oficiālie atgūšanas soļi un monitorings.
🚨 Incidentu reaģēšanaPraktisks ceļvedis par ClickHouse kļūdu "Too many parts": kā darbojas daļas un apvienošana, kā atrast nodalījumu, kas sasniedza limitu, mazas ievietošanas, slikta nodalījumu atslēga, asinhronā ievietošana un kāpēc parts_to_throw_insert palielināšana tikai nopērk laiku.
🔄 MigrācijasPraktisks ceļvedis MySQL 8.0 atjaunināšanai uz 8.4: atbalstītie atjaunināšanas ceļi, mysql_native_password, noņemtās SLAVE/MASTER komandas un opcijas, mainītie InnoDB noklusējumi, atjaunināšanas pārbaudītājs, pakāpeniska atjaunināšana un kāpēc atgriešanās jāplāno.
🚨 Incidentu reaģēšanaPraktisks ceļvedis par MySQL "Lock wait timeout exceeded; try restarting transaction": bloķētāja atrašana ar sys.innodb_lock_waits, neaktīvas atvērtas transakcijas, trūkstoši indeksi, pareizi atkārtojumi un kāpēc taimauta palielināšana reti palīdz.
📈 MonitoringsPraktisks ceļvedis par PostgreSQL straumēšanas replikācijas nobīdi: pg_stat_replication un tā nobīdes kolonnas, nobīde baitos un laikā, kāpēc kluss primārais serveris maldina brīdinājumus, atjaunošanas šaurās vietas, hot_standby_feedback un atjaunošanas konflikti.
🚨 Incidentu reaģēšanaPraktisks rīcības plāns MySQL "Too many connections" gadījumā: rezervētā administratora vieta, gaidošo un bloķēto sesiju atrašana, droša sesiju pārtraukšana un kad max_connections palielināšana palīdz vai kaitē.
🚨 Incidentu reaģēšanaKo patiesībā nozīmē PostgreSQL kļūda "deadlock detected", kā lasīt žurnālu, biežākie cēloņi (slēgšanas secība, ārējās atslēgas, pakešuzdevumi) un praktiski risinājumi, ieskaitot atkārtojumus un monitoringu.
🚨 Incidentu reaģēšanaPostgreSQL disks pilns un pg_wal aug? Biežākie cēloņi (replikācijas sloti, neveiksmīga arhivēšana, pagaidu faili, žurnāli), ko ārkārtas situācijā drīkst dzēst un iestatījumi, kas novērš atkārtošanos.
🚨 Incidentu reaģēšanaKāpēc Redis atgriež "OOM command not allowed when used memory > maxmemory", kā darbojas maxmemory un izlikšanas politikas, kuru izvēlēties un kā plānot atmiņu replikācijai, saglabāšanai un fork.
🚨 Incidentu reaģēšanaDatubāze nedarbojas, bet komandā nav DBA? Tiešs ceļvedis pirmajām 30 minūtēm: ko neaiztikt, ko savākt un kā nodot situāciju ārkārtas DBA atbalstam, nezaudējot stundas.
📈 MonitoringsPraktisks ceļvedis par MySQL replikācijas nobīdi: saņēmēja un izpildītāja nobīde, kāpēc Seconds_Behind_Source maldina, lielas transakcijas, tabulas bez primārās atslēgas, paralēlā replikācija un monitorings.
📈 MonitoringsPostgreSQL autovacuum pielāgošana praksē: kā darbojas palaišanas sliekšņi, iestatījumi lielām tabulām, cost limiti, kas bloķē vacuum, wraparound un PostgreSQL 18 jaunumi.
🏗️ ArhitektūraKo patiesībā ietver attālinātā DBA pakalpojumi, kam tie vajadzīgi, kā darbojas sadarbības un cenu modeļi, kā droši organizēt piekļuvi un kādām brīdinājuma zīmēm sekot, izvēloties partneri.
🏗️ ArhitektūraElektroapgādes kļūme uz sešām stundām atslēdza Google Cloud zonu Londonā. Ko incidents māca par datubāzu pārslēgšanos, jaudu un starpzonu atkarībām.
🔄 MigrācijasMySQL tagad izmanto versijas numurus pēc gada un mēneša: 26.7, 26.10 un nākamā LTS 2028. gadā. Kas mainījies un kā izvēlēties MySQL versiju ražošanai.
🏗️ ArhitektūraKā darbojas PostgreSQL savienojumu pūls ar PgBouncer: pūla režīmi, transakciju režīma ierobežojumi, sagatavotie vaicājumi, pūla izmērs un uzraugāmie rādītāji.
🔄 MigrācijasPostgreSQL 14 pēdējo atjauninājumu saņems 2026. gada 12. novembrī — nedēļu pirms PostgreSQL 19 iznākšanas. Kā izvēlēties mērķa versiju un plānot jaunināšanu.
🏗️ ArhitektūraLielākā daļa PostgreSQL drošības incidentu rodas no pamata nepilnībām, nevis viltīgiem uzbrukumiem. Praktisks kontrolsaraksts: tīkls, autentifikācija, lomas, šifrēšana, audits.
🔄 MigrācijasPercona paziņoja par Valkey-proxy — atvērtā koda starpniekserveri Valkey klasteriem. Ko tas maina komandām, kas plāno pāreju no Redis, un kā plānot migrāciju.
🚨 Incidentu reaģēšanaRezerves kopijas sabojājas klusi, bet atklājas skaļi. Kā veidot datubāzu rezerves kopijas atbilstoši atjaunošanas mērķiem — un pierādīt, ka tās var atjaunot.
🏗️ ArhitektūraReplika nav augsta pieejamība. Kas produkcijas PostgreSQL HA risinājumam ar Patroni vajadzīgs papildus straumēšanas replikācijai — un kā pierādīt, ka tas strādā.
🔄 MigrācijasPostgreSQL 14 atbalsts beidzas 2026. gada novembrī. pg_upgrade pret loģisko replikāciju: ko katrs maksā dīkstāvē, riskā un darbā.
📈 MonitoringsLielākā daļa lēno PostgreSQL datubāzu ir lēnas to pašu dažu iemeslu dēļ. Kontrolsaraksts, ko izejam, pirms kāds sāk runāt par jaudīgāku aparatūru.
🏗️ ArhitektūraMākoņa datubāzu rēķini aug klusi. No kurienes patiesībā rodas Amazon RDS un Aurora izmaksas, kur skatīties vispirms — un ko nevajadzētu samazināt.
🔄 Migrācijas"Vienkārši ņemiet tehniskās apkopes logu" vairs nav pieņemama atbilde. Šis ir loģiskās replikācijas modelis, ko izmantojam, lai pārslēgtu produkcijas PostgreSQL klasterus, klientiem to nemanot.
📈 MonitoringsCPU un atmiņas grafiki parāda, ka ar datubāzi kaut kas nav kārtībā, tikai pēc fakta. Šie pieci rādītāji — sekoti kā tendences, nevis momentuzņēmumi — brīdina, pirms to pamana jūsu lietotāji.
🔄 Migrācijas"Pārejiet uz Postgres" ir populārs padoms, nevis universāls padoms. Praktisks ietvars, kā izlemt, vai pāreja jūsu slodzei tiešām ir riska vērta.
🏗️ ArhitektūraLielākajai daļai uzņēmumu ir gadiem uzkrāta transakciju vēsture, kas praktiski nav izmantojama vaicājumiem. Stāstām, kā veidojam shēmu un datu ielādes stratēģiju, lai to atkal padarītu noderīgu.
🚨 Incidentu reaģēšanaReaģēšanas laika SLA izklausās pēc mārketinga frāzes, kamēr neizanalizē, kam jānotiek šajās 15 minūtēs — un cik daudz no tā tika izlemts jau ilgi pirms trauksmes signāla.
Šajā kategorijā vēl nav rakstu — ieskatieties vēlreiz drīzumā, vai sazinieties ar mums, ja jums ir jautājums, uz kuru varam atbildēt tieši.
Vai jūs plānojat migrāciju, risināt veiktspējas problēmu, vai vēlaties pieredzējušu DBA uz abonementa pamata — mēs sākam ar bezmaksas 30 minūšu iepazīšanās zvanu.