ΠΠ°ΠΏΡΠ΅Π΄ΡΠΊΡΡ Π½Π΅ ΡΡΠΎΠΈ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ΅Π½, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π΄Π° Π½Π°Π΄ΡΡΡΠΎΠΈΡΠ΅ Π΄ΠΎ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° MySQL ΡΡΠ°Π²Π°Ρ Π²ΡΠ΅ ΠΏΠΎ-ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»Π½ΠΈ. ΠΠ΅ΠΎΡΠ΄Π°Π²Π½Π°, Π² Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π±Π΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΡΡΠ½ΠΈΡΠ΅ Percona Server 5.7 ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π΄ΠΎ Π²Π΅ΡΡΠΈΡ 8. ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Ubuntu Linux 16.04. ΠΠ°ΠΊ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠ΅ΡΡΠΎΠΉ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΠ΅ΡΠ½Π°Ρ
ΠΌΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° - ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΡΠΊΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΡΠ²ΡΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΏΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ: ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΡΠΈΡΡΠ΅Π½ΠΈ ΠΎΡ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ.
ΠΡΠ΅Π΄ΠΈ Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅, Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΏΡΠ°Π²ΠΊΠ° Ρ ΠΎΡΠΈΡΠΈΠ°Π»Π½Π°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
-
ΠΠ΅Π»Π΅ΠΆΠΊΠΈ Π·Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° MySQL 8 ; -
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° Π½Π°Π΄Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° MySQL ; -
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Percona ; -
MySQL ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈ Π³Π»Π°Π²Π½ΠΈ .
Π Π½Π΅ΠΊΠ° ΡΡΡΡΠ°Π²ΠΈΠΌ ΠΏΠ»Π°Π½ Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅:
- ΠΠΎΡΠΈΠ³ΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ.
- ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ.
- ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΠ΅Π· ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ°
percona-server-server
. - ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ Π³Π»Π°Π²Π½ΠΈΡ ΡΠ°ΠΉΠ» ΡΡΡ ΡΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡΡΠΊΠ° ΡΠΎΡΠΊΠ° ΠΎΡ ΠΏΠ»Π°Π½Π° ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠΊΠ°.
ΠΠΠΠΠ! ΠΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° MySQL ΠΊΠ»ΡΡΡΠ΅Ρ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Galera, ΠΈΠΌΠ° ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ½ΠΊΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΡΡΠ°ΡΠΈΡΡΠ°. ΠΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ.
Π§Π°ΡΡ 1: ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅
MySQL Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π°Ρ Π²ΡΠ² Π²Π΅ΡΡΠΈΡ 8 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-ΡΡΡΠ²ΡΡ:
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: Π‘ΡΡΠ²ΡΡΠ½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠΊΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ° ΡΠ°ΠΊΡΠ² ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ΅Π½ ΠΏΠ»Π°Π½?.. Π Π°Π·Π±ΠΈΡΠ°ΠΉΠΊΠΈ Π΄ΠΎΠ±ΡΠ΅, ΡΠ΅ Π½ΡΠ°Π½ΡΠΈΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΡΠ»ΡΡΠ²Π°Ρ, Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅Π΄ΠΎΡ ΠΌΠ΅ ΠΏΡΡΠ²ΠΈΡ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ Π²ΡΡΡ Ρ MySQL dev ΠΊΠ»ΡΡΡΠ΅Ρ.
ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ
ΠΌΠ΅,
Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
ΠΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ mysql ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° 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
ΠΈ Π²ΠΈΠΆΡΠ΅, ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Ρ Π±ΡΠΎΡΡΠΈ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ.
ΠΡΠΈΡΠΊΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡΠΎ: Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π±Π΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½Π°. ΠΠΎΠ±ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠ΅ Π½ΠΎΡΠ½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ.
ΠΡΠΌΠ°ΡΠ΅ ΡΡΠ³Π° - Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ΡΠΎ Π½Π° ΡΡΠΏΠ΅ΡΠ΅Π½ ΠΎΠΏΠΈΡ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΊΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π½Π΅ Π±Π΅ΡΠ΅ Π±Π΅Π· ΠΈΠ·Π½Π΅Π½Π°Π΄ΠΈ.
ΠΠ° ΡΠ°ΡΡΠΈΠ΅, ΡΠ°ΠΌΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π·Π°ΠΏΠΎΡΠ²Π° Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ΅ΡΠ½Π°Ρ ΠΌΠ΅ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΡ, ΡΠΏΡΡΡ ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΌΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° ΠΎΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π°ΡΠ° ΡΠ½ΠΈΠΌΠΊΠ°. Π Π°Π·ΡΠ»Π΅Π΄Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π±Π΅ΡΠ΅ ΠΎΡΠ»ΠΎΠΆΠ΅Π½ΠΎ Π·Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΡΡΠΈΠ½. ΠΠ½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ:
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-ΡΡΡΠ²ΡΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠΌ. ΠΠΊΠΎ Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π±Π΅ΡΠ΅ Π²ΡΠ² Π²Π΅ΡΡΠΈΡ 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? ΠΠ°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ° ΡΠ°ΠΌ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ - ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ ΡΠ° ΠΏΡΠ΅ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ.
ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, Π² Π΅Π΄Π½Π° Π½Π°ΠΈΡΡΠΈΠ½Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Π³ΠΎΠ»ΡΠΌΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π° OPTIMIZE
. percona-toolkit ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΡΡΠΊ: ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° pt-online-schema-change Π΅ ΠΎΡΠ»ΠΈΡΠ½Π° Π·Π° ΠΎΠ½Π»Π°ΠΉΠ½ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° OPTIMIZE.
ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΡ ΠΏΠ»Π°Π½ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΠ°ΠΊΠ°:
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ.
- ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ Π±Π°Π·ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
ΠΠ° Π΄Π° Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΈ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅, Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Ρ ΠΌΠ΅ Π΅Π΄Π½Π° ΠΎΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡ ΠΌΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ:
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 ΡΡΡΠ²ΡΡΠ° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΡΠ΅ ΡΡΠΈΠ²Π°Ρ
Π° Ρ Π³ΡΠ΅ΡΠΊΠ°. Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ
Π° Π³ΡΠ΅ΡΠΊΠΈ:
[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 Π·Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ!
PS
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
ΠΠ°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Kubernetes (ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡΡΠ΅Ρ) Β»; - Β«
Π‘ΡΠ²Π΅ΡΠΈ ΠΈ ΡΡΠΈΠΊΠΎΠ²Π΅ Π½Π° Kubernetes: ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Β»; - Β«
6 ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΡΠΎΡΠΈΠΈ ΠΎΡ Π½Π°ΡΠ΅ΡΠΎ SRE Π΅ΠΆΠ΅Π΄Π½Π΅Π²ΠΈΠ΅ Β»; - Β«
ΠΠ΄Π½Π° ΠΈΡΡΠΎΡΠΈΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Redis Π² K8s ΠΈ ΠΌΠΈΠ½ΠΈ-ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ°Π·ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Β»; - Β«
ΠΠ΅Π·ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° MongoDB ΠΊΡΠΌ Kubernetes ".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com