Актуализация Π½Π° MySQL (Percona Server) ΠΎΡ‚ 5.7 Π΄ΠΎ 8.0

Актуализация Π½Π° MySQL (Percona Server) ΠΎΡ‚ 5.7 Π΄ΠΎ 8.0

ΠΠ°ΠΏΡ€Π΅Π΄ΡŠΠΊΡŠΡ‚ Π½Π΅ спира, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Π΄ΠΎ Π½ΠΎΠ²ΠΈΡ‚Π΅ вСрсии Π½Π° MySQL стават всС ΠΏΠΎ-Π²Π°ΠΆΠ½ΠΈ. НСотдавна Π² Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π΄ΠΎΠΉΠ΄Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π΄Π° ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ приятнитС ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π½Π° Percona Server 5.7 Π΄ΠΎ вСрсия 8. Всичко Ρ‚ΠΎΠ²Π° сС случва Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ubuntu Linux 16.04. Как Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° опСрация с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ прСстой ΠΈ с ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ…ΠΌΠ΅ ΠΏΡ€ΠΈ актуализацията - ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π² Ρ‚Π°Π·ΠΈ статия.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°

Всяко ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ вСроятно Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° конфигурация Π½Π° Π±Π°Π·Π°Ρ‚Π°: ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² изискванията Π·Π° Π»ΠΈΠΌΠΈΡ‚ΠΈ Π½Π° систСмни рСсурси ΠΈ ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° сС освободят ΠΎΡ‚ остарСли Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ.

ΠŸΡ€Π΅Π΄ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‰Π΅ сС ΠΎΠ±ΡŠΡ€Π½Π΅ΠΌ към ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация:

И Ρ‰Π΅ ΡΡŠΡΡ‚Π°Π²ΠΈΠΌ ΠΏΠ»Π°Π½ Π·Π° дСйствиС:

  1. ΠšΠΎΡ€ΠΈΠ³ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ остарСлитС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ.
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΈΡ‚Π΅.
  3. АктуализирайтС slave-Π±Π°Π·ΠΈΡ‚Π΅, ΠΊΠ°Ρ‚ΠΎ инсталиратС ΠΏΠ°ΠΊΠ΅Ρ‚Π° percona-server-server.
  4. АктуализирайтС майстора, ΠΈΠ·Π±ΠΈΡ€Π°ΠΉΠΊΠΈ ΡΡŠΡ‰ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚.

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ всяка Ρ‚ΠΎΡ‡ΠΊΠ° ΠΎΡ‚ ΠΏΠ»Π°Π½Π° ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π±ΠΈ ΠΌΠΎΠ³Π»ΠΎ Π΄Π° сС ΠΎΠ±ΡŠΡ€ΠΊΠ°.

Π’ΠΠ–ΠΠž! ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° MySQL-ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Galera ΠΈΠΌΠ° своитС нюанси, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са описани Π² статията. НС Π±ΠΈΠ²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ инструкция Π² Ρ‚Π°ΠΊΡŠΠ² случай.

Част 1: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅

Π’ 8-Π° вСрсия Π½Π° MySQL Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ query_cache. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠΉ Π±Π΅ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ Π·Π° остарял ΠΎΡ‰Π΅ Π² вСрсия 5.7, Π½ΠΎ сСга Π΅ напълно ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ. А Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° заявки сСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ външни инструмСнти β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ProxySQL.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π² конфигурацията Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…ΠΌΠ΅ остарСли Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ Π·Π° innodb_file_format. Ако Π² MySQL 5.7 имашС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° InnoDB, Ρ‚ΠΎ 8-Π° вСрсия Π²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ само с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Barracuda.

ΠΠ°ΡˆΠΈΡΡ‚ ΠΈΠ·Π²ΠΎΠ΄ β€” ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° слСднитС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ:

  • query_cache_type, query_cache_limit ΠΈ query_cache_size;
  • innodb_file_format ΠΈ innodb_file_format_max.

Π—Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Docker ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Percona Server. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Ρ‰Π΅ поставим Π² дирСктория mysql_config_test, Π° Π΄ΠΎ нСя Ρ‰Π΅ създадСм Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° тСст Π½Π° конфигурацията Π½Π° percona-server:

mkdir -p {mysql_config_test,mysql_data,mysql_logs}
cp -r /etc/mysql/conf.d/* mysql_config_test/
docker run  --name some-percona -v $(pwd)/mysql_config_test:/etc/my.cnf.d/  -v $(pwd)/mysql_data/:/var/lib/mysql/ -v $(pwd)/mysql_logs/:/var/log/mysql/ -e MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} -d percona:8-centos

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Π² Π»ΠΎΠ³Π°Ρ… Docker ΠΈΠ»ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с Π»ΠΎΠ³Π°ΠΌΠΈ - Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ - Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ описаны ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Ρƒ нас Π±Ρ‹Π»ΠΎ:

2020-04-03T12:44:19.670831Z 0 [ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅] [MY-011068] [Π‘Π΅Ρ€Π²Π΅Ρ€] Бинтаксис 'expire-logs-days' устарСл ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… вСрсиях. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ binlog_expire_logs_seconds вмСсто.
2020-04-03T12:44:19.671678Z 0 [ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅] [MY-013242] [Π‘Π΅Ρ€Π²Π΅Ρ€] --character-set-server: 'utf8' Π² настоящСС врСмя являСтся псСвдонимом для Π½Π°Π±ΠΎΡ€Π° символов UTF8MB3, Π½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ псСвдонимом для UTF8MB4. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования UTF8MB4 для большСй однозначности.
2020-04-03T12:44:19.671682Z 0 [ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅] [MY-013244] [Π‘Π΅Ρ€Π²Π΅Ρ€] --collation-server: 'utf8_general_ci' являСтся сводом ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡ€Π° символов UTF8MB3. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования UTF8MB4 с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ сводом вмСсто этого.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ expire-logs-days.

Π§Π°ΡΡ‚ΡŒ 2: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… установок

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ обновлСнию Π΅ΡΡ‚ΡŒ 2 ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Π°Π·Ρ‹ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. Π˜Ρ… использованиС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ администратору ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ структуры Π΄Π°Π½Π½Ρ‹Ρ….

НачнСм с классичСской ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ mysqlcheck. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

mysqlcheck -u root -p --all-databases --check-upgrade

Если ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΊΠΎΠ΄ΠΎΠΌ 0:

Актуализация Π½Π° MySQL (Percona Server) ΠΎΡ‚ 5.7 Π΄ΠΎ 8.0

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² соврСмСнных вСрсиях MySQL доступна ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° mysql-shell (Π² случаС Percona это ΠΏΠ°ΠΊΠ΅Ρ‚ percona-mysql-shell). Она являСтся Π·Π°ΠΌΠ΅Π½ΠΎΠΉ классичСскому ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ mysql ΠΈ сочСтаСт Π² сСбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° SQL-ΠΊΠΎΠ΄Π° ΠΈ инструмСнты администрирования MySQL. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сСрвСра ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

mysqlsh -- util check-for-server-upgrade { --user=root --host=1.1.1.1 --port=3306 } --config-path=/etc/mysql/my.cnf

И Π²ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΠ΅ замСчания ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ:

Актуализация Π½Π° MySQL (Percona Server) ΠΎΡ‚ 5.7 Π΄ΠΎ 8.0

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСдупрСТдСния ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ… (Π²ΠΆ. ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ). ΠžΠ±Ρ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния:

Актуализация Π½Π° MySQL (Percona Server) ΠΎΡ‚ 5.7 Π΄ΠΎ 8.0

ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ прСдупрСТдСниях Π²Ρ‹ΡˆΠ΅, ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ UTF-8 Π² MySQL Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ Π±Ρ‹Π»Π° «настоящСй» UTF-8, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 3 Π±Π°ΠΉΡ‚Π° вмСсто 4. Π’ MySQL 8 это Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ исправлСно: алиас utf8 вскорС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ utf8mb4, Π° старыС столбцы Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… станут utf8mb3. Π’ дальнСйшСм эта ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° utf8mb3 Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π°, Π½ΠΎ Π½Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅Π»ΠΈΠ·Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΡƒΠΆΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ инсталляции Π‘Π£Π‘Π”, послС Π΅Π΅ обновлСния.

Π§Π°ΡΡ‚ΡŒ 3: ОбновлСниС сСрвСров

Какво ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠ±ΡŠΡ€ΠΊΠ°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° чудСсСн ΠΏΠ»Π°Π½?.. Π Π°Π·Π±ΠΈΡ€Π°ΠΉΠΊΠΈ, Ρ‡Π΅ Π½ΡŽΠ°Π½ΡΠΈΡ‚Π΅ Π²ΠΈΠ½Π°Π³ΠΈ сС случват, ΠΏΡŠΡ€Π²ΠΈΡΡ‚ СкспСримСнт ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ Π½Π° dev кластСра MySQL.

ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ спомСнахмС, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация освСтлява Π²ΡŠΠΏΡ€ΠΎΡΠ° Π·Π° обновяванСто Π½Π° MySQL ΡΡŠΡ€Π²ΡŠΡ€ΠΈ с Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π΅, Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ (slave), Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ MySQL 8 ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π° ΠΎΡ‚ майстор с вСрсия 5.7. Някои трудности ΠΏΡ€ΠΎΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‚ ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ€Π΅ΠΆΠΈΠΌ master master, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ майстор Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌ read-only. ВоСст фактичСски работният Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π° Π² Π΅Π΄ΠΈΠ½ Π¦ΠžΠ”, Π° вторият Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π΅Π½.

Вопологията ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

Актуализация Π½Π° MySQL (Percona Server) ΠΎΡ‚ 5.7 Π΄ΠΎ 8.0

ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ с Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ mysql replica dc 2, mysql master dc 2 ΠΈ mysql replica dc 1, Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ с ΡΡŠΡ€Π²ΡŠΡ€Π° mysql master dc 1. Π—Π° ΠΏΠΎ-голяма надСТдност спряхмС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ машини, Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΈΠΌ снимки, Π° нСпосрСдствСно ΠΏΡ€Π΅Π΄ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ спряхмС рСпликацията с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° STOP SLAVE. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

  1. РСстартирамС всяка Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, добавяйки Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ 3 ΠΎΠΏΡ†ΠΈΠΈ: skip-networking, skip-slave-start, skip-log-bin. Π€Π°ΠΊΡ‚ Π΅, Ρ‡Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° систСмнитС Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π’Π΅Π·ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Ρ‚, Ρ‡Π΅ Π² Π±Π°Π·Π°Ρ‚Π° няма Π΄Π° сС промСнят Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π° Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΈΡ‚Π΅ Π»ΠΎΠ³ΠΎΠ²Π΅ няма Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π΅ информация Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° систСмнитС Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ възобновяванС Π½Π° рСпликацията.
  2. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° percona-server-server. Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ Π² вСрсия MySQL 8 Π½Π΅ трябва Π΄Π° стартиратС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° mysqlupgrade слСд ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°.
  3. Π‘Π»Π΅Π΄ ΡƒΡΠΏΠ΅ΡˆΠ΅Π½ старт, ΠΎΡ‚Π½ΠΎΠ²ΠΎ рСстартирамС ΡΡŠΡ€Π²ΡŠΡ€Π° β€” Π²Π΅Ρ‡Π΅ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ бяха Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π² ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ°.
  4. Π£Π±Π΅Π΄Π΅Ρ‚Π΅ сС, Ρ‡Π΅ рСпликацията Ρ€Π°Π±ΠΎΡ‚ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ: ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ SHOW SLAVE STATUS ΠΈ Π²ΠΈΠΆΡ‚Π΅, Ρ‡Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ с броячи Π² Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС обновяват.

Всичко Ρ‚ΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ просто: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° dev ΠΏΡ€Π΅ΠΌΠΈΠ½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π”ΠΎΠ±Ρ€Π΅, ΠΌΠΎΠΆΠ΅ΠΌ спокойно Π΄Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π½ΠΎΡ‰Π½ΠΎΡ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π° продукция.

НС бСшС Π·Π»Π΅ β€” prod обновявахмС

Но прСнасянСто Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈΡ ΠΎΠΏΠΈΡ‚ ΠΎΡ‚ dev към продукция Π½Π΅ ΠΌΠΈΠ½Π° Π±Π΅Π· ΠΈΠ·Π½Π΅Π½Π°Π΄ΠΈ.

Π—Π° щастиС, самият процСс Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΎΡ‡Π²Π° с Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅, Π·Π°Ρ‚ΠΎΠ²Π°, срСщайки трудности, спряхмС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΈ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ…ΠΌΠ΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° ΠΎΡ‚ снимката. ΠŸΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΡ…ΠΌΠ΅ Π·Π° слСдващата сутрин. Π’ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ сС ΠΎΠΊΠ°Π·Π°Ρ…Π° слСднитС записи:

2020-01-14T21:43:21.500563Z 2 [ERROR] [MY-012069] [InnoDB] table: t1 has 19 columns but InnoDB dictionary has 20 columns
2020-01-14T21:43:21.500722Z 2 [ERROR] [MY-010767] [Server] Error in fixing SE data for db1.t1
2020-01-14T21:43:24.208365Z 0 [ERROR] [MY-010022] [Server] Failed to Populate DD tables.
2020-01-14T21:43:24.208658Z 0 [ERROR] [MY-010119] [Server] Aborting

Π˜Π·ΡΠ»Π΅Π΄Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠΌΠ΅ΠΉΠ» разпространСния Π² Google Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ, Ρ‡Π΅ Ρ‚Π°ΠΊΠ°Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° възниква Π·Π°Ρ€Π°Π΄ΠΈ бъг Π² MySQL. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ бъг Π² инструмСнтитС mysqlcheck ΠΈ mysqlsh.

Оказва сС, Ρ‡Π΅ Π² MySQL Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ΡŠΡ‚ Π½Π° прСдставянС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° дСсСтични ΠΏΠΎΠ»Π΅Ρ‚Π° (int, tinyint ΠΈ Ρ‚.Π½.), Π·Π°Ρ‚ΠΎΠ²Π° Π²ΡŠΡ‚Ρ€Π΅ Π² mysql-server сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. Ако Π²Π°ΡˆΠ°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π΅ Π±ΠΈΠ»Π° Π² вСрсия 5.5 ΠΈΠ»ΠΈ 5.1 ΠΈ слСд Ρ‚ΠΎΠ²Π° стС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π»ΠΈ Π΄ΠΎ 5.7, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ OPTIMIZE Π·Π° някои Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π’ΠΎΠ³Π°Π²Π° MySQL Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ с Π΄Π°Π½Π½ΠΈ, ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ Π³ΠΈ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ с инструмСнта mysqlfrm:

mysqlfrm --diagnostic -vv /var/lib/mysql/db/table.frm
...
 'field_length': 8,
  'field_type': 246, # Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ
  'field_type_name': 'decimal',
  'flags': 3,
  'flags_extra': 67,
  'interval_nr': 0,
 'name': 'you_deciaml_column',
...

Ако field_type Π°ΠΊΠΎ Π΅ Ρ€Π°Π²Π½ΠΎ Π½Π° 0, Ρ‚ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° стар Ρ‚ΠΈΠΏ β€” трябва Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ OPTIMIZE. Но Π°ΠΊΠΎ стойността Π΅ 246 β€” ΠΈΠΌΠ°Ρ‚Π΅ Π½ΠΎΠ² Ρ‚ΠΈΠΏ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ΄.

ОсвСн Ρ‚ΠΎΠ²Π°, Π² Ρ‚ΠΎΠ·ΠΈ бъг сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° Π²Ρ‚ΠΎΡ€Π° възмоТна ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, която Π½ΠΈ Π΅ ΠΏΠΎΠ΄ΠΌΠΈΠ½Π°Π»Π° β€” Ρ‚ΠΎΠ²Π° Π΅ липсата Π½Π° InnoDB Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π² систСмната Ρ‚Π°Π±Π»ΠΈΡ†Π° INNODB_SYS_TABLESPACES, Π°ΠΊΠΎ Ρ‚Π΅, Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅, са Π±ΠΈΠ»ΠΈ създавани Π² вСрсия 5.1. Π—Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ актуализация, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ прилоТСния SQL скрипт.

Π—Π°Ρ‰ΠΎ Π½Π΅ сС появиха Ρ‚Π°ΠΊΠΈΠ²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° dev? Π‘Π°Π·Π°Ρ‚Π° вСднъТ Π½Π° извСстно Π²Ρ€Π΅ΠΌΠ΅ сС ΠΊΠΎΠΏΠΈΡ€Π° ΠΎΡ‚ продукция β€” ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚.

Π—Π° съТалСниС, Π½Π° Ρ€Π΅Π°Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° голяма Π‘Π” Π½Π΅ ΠΌΠΎΠΆΠ΅ просто Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΈ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ всСстранно OPTIMIZE. Π’ΡƒΠΊ Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ percona-toolkit: Π·Π° опСрация ΠΎΠ½Π»Π°ΠΉΠ½ OPTIMIZE ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠΆΠ΄Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ pt-online-schema-change.

Актуализираният ΠΏΠ»Π°Π½ стана слСдния:

  1. Π”Π° сС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π° всички Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ.
  2. Π”Π° сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ.

Π—Π° Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΈ Π·Π°Π΅Π΄Π½ΠΎ Π΄Π° установим Π²Ρ€Π΅ΠΌΠ΅ Π·Π° актуализация, ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ…ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ ΠΈ Π·Π° всички Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ стартирахмС слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

pt-online-schema-change --critical-load Threads_running=150 --alter "ENGINE=InnoDB" --execute --chunk-size 100 --quiet --alter-foreign-keys-method auto h=127.0.0.1,u=root,p=${MYSQL_PASSWORD},D=db1,t=t1

Актуализация Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π±Π΅Π· дълги Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ създава Π½ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π² която ΠΊΠΎΠΏΠΈΡ€Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ основната Ρ‚Π°Π±Π»ΠΈΡ†Π°. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈ Π΄Π²Π΅Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ са ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ, основната Ρ‚Π°Π±Π»ΠΈΡ†Π° сС Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π° ΠΈ сС замСня с Π½ΠΎΠ²Π°Ρ‚Π°. Π’ нашия случай тСстовият старт ΠΏΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° всички Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΎΠΊΠΎΠ»ΠΎ Π΄Π΅Π½, Π½ΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡˆΠ΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ голямо Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° дисковСтС.

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ Ρ‚ΠΎΠ²Π°, Π½Π° продукция Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ към ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ --sleep с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10 β€” Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ слСд прСмСстванСто Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Π°Π½Π½ΠΈ Π² Π½ΠΎΠ²Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°. Π’Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, Π°ΠΊΠΎ Ρ€Π΅Π°Π»Π½ΠΎ стартираното ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ взискатСлно към Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€.

Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° оптимизацията, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

… Π½ΠΎ Π½Π΅ напълно!

Π’Π΅Ρ‡Π΅ слСд ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ час слСд ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π΄ΠΎΠΉΠ΄Π΅ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π‘Π°Π·Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π΅ΡˆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ странно: ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ…Π° сброси Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ. Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ изглСТдашС Ρ‚ΠΎΠ²Π° Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°:

Актуализация Π½Π° MySQL (Percona Server) ΠΎΡ‚ 5.7 Π΄ΠΎ 8.0

На ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚Π° сС Π²ΠΈΠΆΠ΄Π° Π·ΡŠΠ±Ρ‡Π°Ρ‚ Π³Ρ€Π°Ρ„ΠΈΠΊ, ΡΠ²ΡŠΡ€Π·Π°Π½ с Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ част ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Π½Π° MySQL ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ ΠΏΠ°Π΄Π°Π»ΠΈ с Π³Ρ€Π΅ΡˆΠΊΠ°. Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС появиха Π³Ρ€Π΅ΡˆΠΊΠΈ:

[PDOException] SQLSTATE[HY000] [2002] Connection refused

Π‘ΡŠΡ€Π· ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚ mysqld Π½Π΅ ΠΌΠΎΠΆΠ° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ рСсурси ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма. Π Π°Π·Π±ΠΈΡ€Π°ΠΉΠΊΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅, ΠΎΡ‚ΠΊΡ€ΠΈΡ…ΠΌΠ΅ Π² систСмата β€žΠ±Π΅Π·ΡΡ‚ΠΎΠΏΠ°Π½ΡΡ‚Π²Π΅Π½ΠΈβ€œ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° apparmor:

# dpkg -S /etc/apparmor.d/cache/usr.sbin.mysqld
dpkg-query: no path found matching pattern /etc/apparmor.d/cache/usr.sbin.mysqld
# dpkg -S /etc/apparmor.d/local/usr.sbin.mysqld
dpkg-query: no path found matching pattern /etc/apparmor.d/local/usr.sbin.mysqld
# dpkg -S /etc/apparmor.d/usr.sbin.mysqld
mysql-server-5.7: /etc/apparmor.d/usr.sbin.mysqld
# dpkg -l mysql-server-5.7
rc  mysql-server-5.7 5.7.23-0ubuntu0.16.04.1      amd64

Π’Π΅Π·ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ са възникнали ΠΏΡ€ΠΈ ΡŠΠΏΠ³Ρ€Π΅ΠΉΠ΄Π° Π΄ΠΎ MySQL 5.7 ΠΏΡ€Π΅Π΄ΠΈ няколко Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Π½Π° ΠΈΠ·Ρ‚Ρ€ΠΈΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚. Π˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ рСстартиранС Π½Π° услугата apparmor Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°:

systemctl stop apparmor
rm /etc/apparmor.d/cache/usr.sbin.mysqld
rm /etc/apparmor.d/local/usr.sbin.mysqld
rm /etc/apparmor.d/usr.sbin.mysqld
systemctl start apparmor

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Всяка, Π΄ΠΎΡ€ΠΈ Π½Π°ΠΉ-простата опСрация, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. И Π΄ΠΎΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° обмислСн ΠΏΠ»Π°Π½ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° очаквания Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚. Π‘Π΅Π³Π° във всСки ΠΏΠ»Π°Π½ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΡˆΠΈΡΡ‚ Π΅ΠΊΠΈΠΏ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΈ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ почистванС Π½Π° излишни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° сС появят Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° послСднитС дСйствия.

А с Ρ‚ΠΎΠ²Π° Π½Π΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ профСсионално Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΎ творчСство Π±ΠΈΡ… искал Π΄Π° благодаря Π½Π° компанията Percona Π·Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ!

Актуализация Π½Π° MySQL (Percona Server) ΠΎΡ‚ 5.7 Π΄ΠΎ 8.0

P.S.

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster