ИспользованиС партиционирования Π² MySQL для Zabbix с большим количСством ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°

Для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° сСрвСров ΠΈ слуТб Ρƒ нас Π΄Π°Π²Π½ΠΎ, ΠΈ всС Π΅Ρ‰Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ Nagios ΠΈ Munin. Однако эта связка ΠΈΠΌΠ΅Π΅Ρ‚ ряд нСдостатков, поэтому ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ эксплуатируСм Zabbix. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ расскаТСм ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ усилиями ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ числа снимаСмых ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΈ ростС объСмов Π‘Π” MySQL

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ использованиС Π‘Π” MySQL совмСстно с Zabbix

Пока Π‘Π” Π±Ρ‹Π»Π° малСнькой ΠΈ количСство Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π² Π½Π΅ΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ нСбольшим, всё Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π¨Ρ‚Π°Ρ‚Π½Ρ‹ΠΉ процСсс housekeeper, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт сам Zabbix Server ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ удалял ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ записи ΠΈΠ· Π‘Π”, Π½Π΅ давая Π΅ΠΉ расти. Однако, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ количСство снимаСмых ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ выросло ΠΈ ΠΎΠ±ΡŠΡ‘ΠΌ Π‘Π” достиг ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, всё стало Ρ…ΡƒΠΆΠ΅. Houserkeeper пСрСстал ΡƒΡΠΏΠ΅Π²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° ΠΎΡ‚Π²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π΅ΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π² Π‘Π” стали ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ старыС Π΄Π°Π½Π½Ρ‹Π΅. Π’ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ housekeeper Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° Zabbix Server, которая ΠΌΠΎΠ³Π»Π° Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя. Π‘Ρ‚Π°Π»ΠΎ понятно, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠΈΠ²ΡˆΡƒΡŽΡΡ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.

Π­Ρ‚ΠΎ извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, практичСски ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π» с большими ΠΎΠ±ΡŠΡ‘ΠΌΠ°ΠΌΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π½Π° Zabbix, сталкивался с Ρ‚Π΅ΠΌ ΠΆΠ΅. РСшСний Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π»ΠΎ нСсколько: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΌΠ΅Π½Π° MySQL Π½Π° PostgreSQL ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Elasticsearch, Π½ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простым ΠΈ Π°ΠΏΡ€ΠΎΠ±ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†, хранящих Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π² Π‘Π” MySQL. ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠΉΡ‚ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· этим ΠΏΡƒΡ‚Ρ‘ΠΌ.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† MySQL ΠΊ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ

Zabbix Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π³Π΄Π΅ ΠΎΠ½ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ извСстны. Π­Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: history, Π³Π΄Π΅ хранятся float значСния, history_str, Π³Π΄Π΅ хранятся ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ строковыС значСния, history_text, Π³Π΄Π΅ хранятся Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ тСкстовыС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ history_uint, Π³Π΄Π΅ хранятся цСлочислСнныС значСния. Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Ρ‚Π°Π±Π»ΠΈΡ†Π° trends, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Π΅Ρ‘ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π΅Π²Π΅Π»ΠΈΠΊ ΠΈ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ ΠΊ Π½Π΅ΠΉ вСрнёмся.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Ρ‹Π»ΠΎ понятно. ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ нСдСлю, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ послСднСй, Π½Π° основС чисСл мСсяца, Ρ‚.Π΅. ΠΏΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ Π½Π° мСсяц: с 1-Π³ΠΎ ΠΏΠΎ 7-Π΅, с 8-Π³ΠΎ ΠΏΠΎ 14-Π΅, с 15 ΠΏΠΎ 21-Π΅ ΠΈ с 22-Π³ΠΎ ΠΏΠΎ 1-Π΅ (ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ мСсяца). Π’Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ», Π½Π΅ прСрывая Ρ€Π°Π±ΠΎΡ‚Ρ‹ Zabbix Server ΠΈ сбор ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ.

Как Π½ΠΈ странно, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² этом Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»Π° сама структура Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†. НапримСр Ρ‚Π°Π±Π»ΠΈΡ†Π° history ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру:

`itemid` bigint(20) unsigned NOT NULL,
`clock` int(11) NOT NULL DEFAULT '0',
`value` double(16,4) NOT NULL DEFAULT '0.0000',
`ns` int(11) NOT NULL DEFAULT '0',

ΠΏΡ€ΠΈ этом

KEY `history_1` (`itemid`,`clock`)

Как Π²ΠΈΠ΄ΠΈΠΌ, каТдая ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° Π² ΠΈΡ‚ΠΎΠ³Π΅ заносится Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с двумя ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ для нас полями itemid ΠΈ clock. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΈΠΌΠ΅Π½Π΅ΠΌ history_tmp, Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для Π½Π΅Ρ‘ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ history, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ history Π² history_old, Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ history_tmp Π² history, послС Ρ‡Π΅Π³ΠΎ Π΄ΠΎΠ·Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ нас Π½Π΅Π΄ΠΎΠ·Π°Π»ΠΈΡ‚Ρ‹ ΠΈΠ· history_old Π² history ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ history_old. Π”Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ бСзопасно, ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ потСряСм, вСдь ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ поля itemid ΠΈ clock ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ привязку ΠΊΠΎΠ½ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° Π½Π΅ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ.

Π‘Π°ΠΌΠ° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠžΡ‡Π΅Π½ΡŒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ дСйствий, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию с Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ всС ΠΆΠΈΠ²Ρ‹Π΅ люди ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°. рСзСрвная копия Π½Π΅ обСспСчит максимальной Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ, Ρ‡Π΅ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ.

Π˜Ρ‚Π°ΠΊ, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈ Π½Π΅ останавливаСм. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° самом MySQL-сСрвСрС Π±Ρ‹Π»ΠΎ достаточноС количСство свободного мСста Π½Π° дискС, Ρ‚.Π΅. Ρ‡Ρ‚ΠΎΠ±Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· пСрСчислСнных Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† history, history_text, history_str, history_uint, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ мСста Π½Π° созданиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с суффиксом Β«_tmpΒ», учитывая, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΊΠ°ΠΊ ΠΈ исходная Ρ‚Π°Π±Π»ΠΈΡ†Π°.

ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всё нСсколько Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ рассмотрим всё Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ лишь ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… β€” Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ history.

Π˜Ρ‚Π°ΠΊ, создаём ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ history_tmp Π½Π° основС структуры Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ history.

CREATE TABLE `history_tmp` LIKE `history`;

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, сдСлаСм это Π½Π° мСсяц. КаТдая партиция создаётся Π½Π° основС ΠΏΡ€Π°Π²ΠΈΠ»Π° партиционирования, основанного Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ поля clock, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ сравниваСм с ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

ALTER TABLE `history_tmp` PARTITION BY RANGE( clock ) (
PARTITION p20190201 VALUES LESS THAN (UNIX_TIMESTAMP("2019-02-01 00:00:00")),
PARTITION p20190207 VALUES LESS THAN (UNIX_TIMESTAMP("2019-02-07 00:00:00")),
PARTITION p20190214 VALUES LESS THAN (UNIX_TIMESTAMP("2019-02-14 00:00:00")),
PARTITION p20190221 VALUES LESS THAN (UNIX_TIMESTAMP("2019-02-21 00:00:00")),
PARTITION p20190301 VALUES LESS THAN (UNIX_TIMESTAMP("2019-03-01 00:00:00"))
);

Π”Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, добавляСт ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для созданной Π½Π°ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ history_tmp. Π£Ρ‚ΠΎΡ‡Π½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля clock мСньшС Β«2019-02-01 00:00:00Β» ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ p20190201, Π·Π°Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля clock большС Β«2019-02-01 00:00:00Β» Π½ΠΎ мСньшС Β«2019-02-07 00:00:00Β» ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ p20190207 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’Π°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: А Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли Ρƒ нас Π² ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ появятся Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля clock Π±ΡƒΠ΄Π΅Ρ‚ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Β«2019-03-01 00:00:00Β»? ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для этих Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚ подходящСй ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, ΠΎΠ½ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ потСряны. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ своСврСмСнно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎ Ρ‡Ρ‘ΠΌ Π½ΠΈΠΆΠ΅).

Π˜Ρ‚Π°ΠΊ, врСмСнная Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π°. Π—Π°Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ довольно Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, Π½ΠΎ ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ½ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ запросы, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ всСго лишь Π·Π°ΠΏΠ°ΡΡ‚ΠΈΡΡŒ Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ:

INSERT IGNORE INTO `history_tmp` SELECT * FROM history;

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово IGNORE ΠΏΡ€ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π»ΠΈΠ²ΠΊΠ΅ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, вСдь Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ всё Ρ€Π°Π²Π½ΠΎ Π½Π΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΎ Π²Π°ΠΌ понадобится ΠΏΡ€ΠΈ Π΄ΠΎΠ·Π°Π»ΠΈΠ²ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Ссли ΠΏΡ€ΠΈ Π·Π°Π»ΠΈΠ²ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ этот процСсс ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ.

Π˜Ρ‚Π°ΠΊ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ нСсколько часов), пСрвая Π·Π°Π»ΠΈΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡˆΠ»Π°. Как Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° history_tmp содСрТит Π½Π΅ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ history, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π² Π½Π΅ΠΉ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° выполнСния запроса. Π’ΡƒΡ‚ собствСнно Ρƒ вас Π΅ΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€: Π»ΠΈΠ±ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ (Ссли процСсс Π·Π°Π»ΠΈΠ²ΠΊΠΈ длился Π΄ΠΎΠ»Π³ΠΎ), Π»ΠΈΠ±ΠΎ сразу ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ спСрва ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅. Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ врСмя послСднСй вставлСнной записи Π² history_tmp:

SELECT max(clock) FROM history_tmp;

Допустим, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ: 1551045645. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ Π·Π°Π»ΠΈΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…:

INSERT IGNORE INTO `history_tmp` SELECT * FROM history WHERE clock>=1551045645;

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС. Но Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ выполнялся часы, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ выполнялся Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ снова выполняСм ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ получСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послСднСй вставки записи Π² history_tmp, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²:

SELECT max(clock) FROM history_tmp;

Допустим, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ 1551085645. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” ΠΎΠ½ΠΎ Π½Π°ΠΌ понадобится для Π΄ΠΎΠ·Π°Π»ΠΈΠ²ΠΊΠΈ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ собствСнно, ΠΊΠΎΠ³Π΄Π° пСрвичная Π·Π°Π»ΠΈΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² history_tmp Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ, приступаСм ΠΊ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†:

BEGIN;
RENAME TABLE history TO history_old;
RENAME TABLE history_tmp TO history;
COMMIT;

ΠœΡ‹ ΠΎΡ„ΠΎΡ€ΠΌΠΈΠ»ΠΈ этот Π±Π»ΠΎΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° вставки Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, вСдь послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ RENAME Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° выполнСния Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ RENAME, Ρ‚Π°Π±Π»ΠΈΡ†Π° history ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Но Π΄Π°ΠΆΠ΅ Ссли ΠΌΠ΅ΠΆΠ΄Ρƒ опСрациями RENAME Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ history ΠΏΡ€ΠΈΠ΄ΡƒΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Π° самой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΅Ρ‰Ρ‘ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ (ΠΈΠ·-Π·Π° пСрСимСнования), ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ нСбольшоС количСство ошибок вставки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Ρ‡ΡŒ (Ρƒ нас ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Π° Π½Π΅ Π±Π°Π½ΠΊ).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ новая Ρ‚Π°Π±Π»ΠΈΡ†Π° history с ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½ΠΎ Π² Π½Π΅ΠΉ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π²ΠΎ врСмя послСднСго ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° вставки Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ history_tmp. Но эти Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ history_old ΠΈ ΠΌΡ‹ ΠΈΡ… сСйчас ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π΄ΠΎΠ»ΡŒΡ‘ΠΌ. Для этого, Π½Π°ΠΌ понадобится Ρ€Π°Π½Π΅Π΅ сохранённоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1551085645. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ сохранили это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π½Π΅ использовали максимальноС врСмя Π·Π°Π»ΠΈΠ²ΠΊΠΈ ΡƒΠΆΠ΅ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ history? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ Π² Π½Π΅Ρ‘ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ врСмя. Π˜Ρ‚Π°ΠΊ, Π΄ΠΎΠ·Π°Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅:

INSERT IGNORE INTO `history` SELECT * FROM history_old WHERE clock>=1551045645;

ПослС окончания этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρƒ нас Π² Π½ΠΎΠ²ΠΎΠΉ, ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ history Π΅ΡΡ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π² старой, плюс Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ послС пСрСимСнования Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π°Π±Π»ΠΈΡ†Π° history_old Π½Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½Π°. МоТно Π΅Ρ‘ сразу ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Π½Π΅Ρ‘ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию (Ссли Ρƒ вас паранойя).

Π’Π΅ΡΡŒ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ процСсс Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ для Ρ‚Π°Π±Π»ΠΈΡ† history_str, history_text ΠΈ history_uint.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² настройках Zabbix Server

Π’Π΅ΠΏΠ΅Ρ€ΡŒ обслуТиваниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² части истории Π΄Π°Π½Π½Ρ‹Ρ… Π»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π½Π° наши ΠΏΠ»Π΅Ρ‡ΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Zabbix большС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ старыС Π΄Π°Π½Π½Ρ‹Π΅ β€” ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ этим сами. Π§Ρ‚ΠΎΠ±Ρ‹ Zabbix Server Π½Π΅ пытался Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ сам, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΉΡ‚ΠΈ Π² web-интСрфСйс Zabbix, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² мСню «АдминистрированиС», Π·Π°Ρ‚Π΅ΠΌ подмСню Β«ΠžΠ±Ρ‰ΠΈΠ΅Β», Π·Π°Ρ‚Π΅ΠΌ Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ спискС справа Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Β«ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° истории». На появившСйся страницС Π½ΡƒΠΆΠ½ΠΎ ΡΠ½ΡΡ‚ΡŒ всС Π³Π°Π»ΠΎΡ‡ΠΊΠΈ для Π³Ρ€ΡƒΠΏΠΏΡ‹ Β«Π˜ΡΡ‚ΠΎΡ€ΠΈΡΒ» ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΒ». Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ Π½Π°ΠΌ очистку Ρ‚Π°Π±Π»ΠΈΡ† history* Ρ‡Π΅Ρ€Π΅Π· housekeeper.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° этой ΠΆΠ΅ страницС Π½Π° Π³Ρ€ΡƒΠΏΠΏΡƒ Β«Π”ΠΈΠ½Π°ΠΌΠΈΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉΒ». Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚Π°Π±Π»ΠΈΡ†Π° trends, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΎΠ±Π΅Ρ‰Π°Π»ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ. Если ΠΎΠ½Π° Ρƒ вас Ρ‚Π°ΠΊΠΆΠ΅ стала слишком большой ΠΈ нуТдаСтся Π² ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΡƒΠ±Π΅Ρ€ΠΈΡ‚Π΅ Π³Π°Π»ΠΎΡ‡ΠΊΠΈ ΠΈ Π² этой Π³Ρ€ΡƒΠΏΠΏΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ дСлалось для Ρ‚Π°Π±Π»ΠΈΡ† history*.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ обслуТиваниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Как Π±Ρ‹Π»ΠΎ написано Ρ€Π°Π½Π΅Π΅, для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ воврСмя ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ. Π”Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

ALTER TABLE `history` ADD PARTITION (PARTITION p20190307 VALUES LESS THAN (UNIX_TIMESTAMP("2019-03-07 00:00:00")));

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ создали ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ»ΠΈ Zabbix Server’у ΠΈΡ… Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ, Ρ‚ΠΎ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ старых Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ наша Π·Π°Π±ΠΎΡ‚Π°. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, здСсь Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π­Ρ‚ΠΎ дСлаСтся просто ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΌ стали Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

НапримСр:

ALTER TABLE history DROP PARTITION p20190201;

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² DELETE FROM с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π΄Π°Ρ‚, DROP PARTITION выполняСтся Π·Π° ΠΏΠ°Ρ€Ρƒ сСкунд, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ сСрвСр ΠΈ ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ бСспроблСмно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² случаС использования Π² MySQL Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ОписанноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. ΠžΠ±ΡŠΡ‘ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… растёт, Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠ³ΠΎ замСдлСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ отмСчаСтся.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com