ΠΡΠΎΠ³ΡΠ΅ΡΡ Π½Π΅ ΡΡΠΎΠΈΡ Π½Π° ΠΌΠ΅ΡΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡΡ Π½Π° Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ MySQL ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π²ΡΡ Π±ΠΎΠ»Π΅Π΅ Π²Π΅ΡΠΎΠΌΡΠΌΠΈ. ΠΠ΅ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π°ΡΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π°ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Percona Server 5.7 Π΄ΠΎ 8-ΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΡΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Ubuntu Linux 16.04. ΠΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ΠΌ ΠΈ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΌΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ β ΡΠΈΡΠ°ΠΉΡΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°
ΠΡΠ±ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ Π±Π°Π·Ρ: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π»ΠΈΠΌΠΈΡΠ°ΠΌ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ² Π±Π°Π·Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π΄ΠΎ ΠΎΡΠΈΡΡΠΈΡΡ ΠΎΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ².
ΠΠ΅ΡΠ΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
-
MySQL 8 release notes ; -
ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΡ MySQL ; -
ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΡ Percona ; -
ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ MySQL ΠΏΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΏΠ»ΠΈΠΊ ΠΈ ΠΌΠ°ΡΡΠ΅ΡΠΎΠ² .
Π ΡΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΠ»Π°Π½ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
- ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠ΄Π°Π»ΠΈΠ² ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ.
- ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ°ΠΌΠΈ.
- ΠΠ±Π½ΠΎΠ²ΠΈΡΡ slave-Π±Π°Π·Ρ, ΠΏΠΎΡΡΠ°Π²ΠΈΠ² ΠΏΠ°ΠΊΠ΅Ρ
percona-server-server
. - ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΌΠ°ΡΡΠ΅Ρ, ΠΏΠΎΡΡΠ°Π²ΠΈΠ² ΡΠΎΡ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ.
Π Π°Π·Π±Π΅ΡΡΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠ½ΠΊΡ ΠΏΠ»Π°Π½Π° ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΉΡΠΈ Π½Π΅ ΡΠ°ΠΊ.
ΠΠΠΠΠ! ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ MySQL-ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π½Π° Π±Π°Π·Π΅ Galera ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΡΠ°ΡΡΠ΅ Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ. ΠΠ΅ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
Π§Π°ΡΡΡ 1: ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ²
Π 8-ΠΉ Π²Π΅ΡΡΠΈΠΈ MySQL ΡΠ±ΡΠ°Π»ΠΈ query_cache
. ΠΠΎΠΎΠ±ΡΠ΅-ΡΠΎ ΠΎΠ½ Π±ΡΠ»
Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ Π½Π°ΡΠ»ΠΈΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠΎ innodb_file_format
. ΠΡΠ»ΠΈ Π² MySQL 5.7 ΠΈΠΌΠ΅Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΎΡΠ° ΡΠΎΡΠΌΠ°ΡΠ° InnoDB, ΡΠΎ 8-Ρ Π²Π΅ΡΡΠΈΡ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΠ°Ρ ΠΈΡΠΎΠ³ β ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²:
-
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-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
Π Π²ΠΎΡ ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ:
Π ΠΎΠ±ΡΠ΅ΠΌ, Π½ΠΈΡΠ΅Π³ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎΠ³ΠΎ β ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°Ρ
(ΡΠΌ. Π½ΠΈΠΆΠ΅). ΠΠ±ΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:
ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΉΡΠΈ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡ
Π²ΡΡΠ΅, ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ UTF-8 Π² MySQL Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ utf8
Π²ΡΠΊΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈ Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ utf8mb4
, Π° ΡΡΠ°ΡΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ
ΡΡΠ°Π½ΡΡ utf8mb3
. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° utf8mb3
Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π°, Π½ΠΎ Π½Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΆΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ Π‘Π£ΠΠ, ΠΏΠΎΡΠ»Π΅ Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
Π§Π°ΡΡΡ 3: ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ²
Π§ΡΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΉΡΠΈ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ ΡΡΠΎΠ»Ρ ΡΠΈΠΊΠ°ΡΠ½ΡΠΉ ΠΏΠ»Π°Π½?.. ΠΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ Π½ΡΠ°Π½ΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠ»ΡΡΠ°ΡΡΡΡ, ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΠΌΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π½Π° dev-ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ MySQL.
ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ,
Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°ΡΠ°ΡΡΡΡ Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊ mysql replica dc 2, mysql master dc 2 ΠΈ mysql replica dc 1
, Π° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡΡ β ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ mysql master dc 1. ΠΠ»Ρ ΠΏΡΡΠ΅ΠΉ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΠΈ ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ, ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΈΡ
ΡΠ½Π°ΠΏΡΠΎΡΡ, Π° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ STOP SLAVE
. Π ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
- ΠΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ 3 ΠΎΠΏΡΠΈΠΈ:
skip-networking
,skip-slave-start
,skip-log-bin
. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡ. ΠΠ°Π½Π½ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡ, ΡΡΠΎ Π² Π±Π°Π·Π΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π² Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. - Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ
percona-server-server
. ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² Π²Π΅ΡΡΠΈΠΈ MySQL 8 Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρmysqlupgrade
ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. - ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ° Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ β ΡΠΆΠ΅ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠ½ΠΊΡΠ΅.
- Π£Π±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ: ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ
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 ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ·-Π·Π° 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_SYS_TABLESPACES
, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ, ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈΡΡ Π² Π²Π΅ΡΡΠΈΠΈ 5.1. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ
ΠΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ Ρ Π½Π°Ρ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π° dev? ΠΠ°Π·Π° ΡΡΠ΄Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Ρ production β ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°ΡΡΡΡ.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΠ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΡΠΉ OPTIMIZE
. ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ percona-toolkit: Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ online OPTIMIZE ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ ΡΡΠΈΠ»ΠΈΡΠ° pt-online-schema-change.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΠΏΠ»Π°Π½ ΡΡΠ°Π» ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΡΠ°ΠΊΠΈΠΌ:
- ΠΡΠΎΠ²Π΅ΡΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡ.
- ΠΡΠΎΠ²Π΅ΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π· Π΄Π°Π½Π½ΡΡ .
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΠΌΡ ΠΎΡΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ΅ΠΏΠ»ΠΈΠΊ, Π° Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
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-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ°Π΄Π°Π»ΠΈ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ:
[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 Π·Π° ΠΈΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ!
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Kubernetes (ΠΎΠ±Π·ΠΎΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°) Β»; - Β«
Kubernetes tips & tricks: ΡΡΠΊΠΎΡΡΠ΅ΠΌ bootstrap Π±ΠΎΠ»ΡΡΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ Β»; - Β«
6 ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΡΡΠΎΡΠΈΠΉ ΠΈΠ· Π½Π°ΡΠΈΡ SRE-Π±ΡΠ΄Π½Π΅ΠΉ Β»; - Β«
ΠΠ΄Π½Π° ΠΈΡΡΠΎΡΠΈΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ Redis Π² K8s ΠΈ ΠΌΠΈΠ½ΠΈ-ΠΎΠ±Π·ΠΎΡ ΡΡΠΈΠ»ΠΈΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠΉ ΠΠ Β»; - Β«
ΠΠ΅ΡΠΏΡΠΎΡΡΠΎΠΉΠ½Π°Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ MongoDB Π² Kubernetes Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com