ОбновлСниС 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 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2020-04-03T12:44:19.671678Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2020-04-03T12:44:19.671682Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π΅Ρ‰Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ 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. Π’ΠΎ Π΅ΡΡ‚ΡŒ фактичСски Π±ΠΎΠ΅Π²ΠΎΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ поступаСт Π² ΠΎΠ΄ΠΈΠ½ Π¦ΠžΠ”, Π° 2-ΠΉ являСтся Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΌ.

Вопология выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ОбновлСниС 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 ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Ок, ΠΌΠΎΠΆΠ½ΠΎ спокойно ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ для production.

НС Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ‡Π°Π»ΠΈ β€” prod ΠΌΡ‹ обновляли

Однако пСрСнос ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° dev Π½Π° production Π½Π΅ ΠΎΠ±ΠΎΡˆΡ‘Π»ΡΡ Π±Π΅Π· ΡΡŽΡ€ΠΏΡ€ΠΈΠ·ΠΎΠ².

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, сам процСсс обновлСния начинаСтся с Ρ€Π΅ΠΏΠ»ΠΈΠΊ, поэтому, встрСтив слоТности, ΠΌΡ‹ остановили Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ восстановили Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ ΠΈΠ· ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π°. ИсслСдованиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ пСрСнСсли Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΡƒΡ‚Ρ€ΠΎ. Π’ Π»ΠΎΠ³Π°Ρ… оказались ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ записи:

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? Π‘Π°Π·Π° Ρ‚ΡƒΠ΄Π° пСриодичСски копируСтся с production β€” Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ.

К соТалСнию, Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ большой Π‘Π” Π½Π΅ получится просто Π²Π·ΡΡ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ повсСмСстный OPTIMIZE. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ percona-toolkit: для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ online 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

ОбновлСниС Ρ‚Π°Π±Π»ΠΈΡ† производится Π±Π΅Π· ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° создаСт Π½ΠΎΠ²ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· основной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹, исходная Ρ‚Π°Π±Π»ΠΈΡ†Π° блокируСтся ΠΈ подмСняСтся Π½ΠΎΠ²ΠΎΠΉ. Π’ нашСм случаС тСстовый запуск ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ для обновлСния всСх Ρ‚Π°Π±Π»ΠΈΡ† потрСбуСтся ΠΎΠΊΠΎΠ»ΠΎ суток, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΎ слишком Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° диски.

Π§Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, Π½Π° production ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ --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