
Podczas codziennej pracy z bazami danych MySQL, mogą pojawić się specyficzne wyzwania, takie jak brakujące tabele lub błędy związane z nierozpoznaną bazą danych performance_schema. Te problemy mogą znacząco wpływać na wydajność i stabilność systemów bazodanowych, a ich diagnozowanie i rozwiązywanie bywa często skomplikowane i czasochłonne. Aby ułatwić to zadanie, stworzyłem ten przewodnik, który jest wynikiem moich doświadczeń oraz sprawdzonych praktyk. Zapewniam kompleksowe podejście do identyfikacji i naprawy problemów związanych z performance_schema. Jest to dosyć proste zaimportowanie schematu z nowo zbudowanej bazy danych.
Oczywiście przed całą operacją należy wykonać backup bazy najlepiej.
Początkowa diagnoza w MySQL
Zacznij od zidentyfikowania problemu w powłoce MySQL:
| 
					 1 2 3 4  | 
						SHOW VARIABLES LIKE 'default_storage_engine'; ERROR 1146 (42S02): Table 'performance_schema.session_variables' doesn't exist USE performance_schema; ERROR 1049 (42000): Unknown database 'performance_schema';  | 
					
Utworzenie nowego schematu Performance Schema w MySQL
Tworzenie nowego schematu performance schema z linii komend MySQL:
| 
					 1 2 3  | 
						CREATE DATABASE performance_schema; shutdown; \q  | 
					
Operacje serwerowe do ustanowienia nowego środowiska MySQL
Wracamy do systemu, aby skonfigurować czyste środowisko MySQL:
| 
					 1 2 3 4 5  | 
						systemctl stop mysql.service mkdir /var/lib/mysql_new mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql_new chown -R mysql:mysql /var/lib/mysql_new cd /var/lib/mysql_new  | 
					
Następnie, uruchom MySQL w trybie bezpiecznym, aby skonfigurować go – bez zewnętrznych przerwań sieciowych:
| 
					 1  | 
						sudo -u mysql mysqld_safe --datadir=/var/lib/mysql_new --skip-grant-tables --skip-networking  | 
					
Konfiguracja i weryfikacja w MySQL
Powróć do linii komend MySQL, aby zweryfikować konfigurację i skonfigurować nową bazę danych:
| 
					 1 2 3 4  | 
						mysql -u root SHOW DATABASES; USE performance_schema; SHOW TABLES;  | 
					
Jak widać, tutaj performance_schema działa poprawnie.
Zaktualizuj hasło roota w środowisku MySQL, aby zabezpieczyć nową instalację:
| 
					 1 2 3 4 5  | 
						USE mysql; UPDATE user SET authentication_string=PASSWORD('NewSecurePassword'); FLUSH PRIVILEGES; shutdown; \q  | 
					
Uruchom ponownie MySQL w trybie bezpiecznym, aby upewnić się, że wszystkie konfiguracje zostały zastosowane:
| 
					 1  | 
						sudo -u mysql mysqld_safe --datadir=/var/lib/mysql_new --skip-networking  | 
					
Konfiguracji MySQL na serwerze w celu uruchomienia nowej bazy danych
Po zabezpieczeniu nowej konfiguracji MySQL, zaktualizuj konfigurację serwera, aby używać nowego katalogu danych:
| 
					 1 2 3  | 
						vi /etc/mysql/my.cnf # Zmień datadir na: datadir=/var/lib/mysql_new  | 
					
Uruchom ponownie usługę MySQL, aby plik my.cnf został wczytany podczas startowania mysqla:
| 
					 1  | 
						systemctl start mysql.service  | 
					
Eksportuj i przywróć schemat Performance Schema w MySQL
Z nową konfiguracją, eksportuj performance_schema za pomocą poleceń MySQL i przygotuj się do jego przywrócenia:
| 
					 1  | 
						mysqldump -u root -p --no-data --skip-lock-tables performance_schema > /root/performance_schema.sql  | 
					
Należy wyłączyć mysqla:
| 
					 1 2  | 
						shutdown; \q  | 
					
Przywróć oryginalny katalog danych MySQL na serwerze, uruchom ponownie usługę MySQL i zaimportuj wyeksportowany schemat:
| 
					 1 2 3 4 5 6  | 
						vi /etc/mysql/my.cnf # Zmień datadir z powrotem na: datadir=/var/lib/mysql_old systemctl start mysql.service mysql -u root -p performance_schema < /root/performance_schema.sql systemctl restart mysql.service  | 
					
Upewnij się, że domyślny silnik przechowywania działa, np:
| 
					 1 2 3 4 5 6 7  | 
						SHOW VARIABLES LIKE 'default_storage_engine'; +------------------------+--------+ | Variable_name          | Value  | +------------------------+--------+ | default_storage_engine | InnoDB | +------------------------+--------+ 1 row in set (0.00 sec)  | 
					
Nie zapomnij usunąć śmieci:
| 
					 1  | 
						rm -rf /var/lib/mysql_new/ /root/performance_schema.sql  | 
					
Jeśli dotarłeś tutaj, pamiętaj o usunięciu backupu bazy danych – o ile wszystko działa. Bo wykonałeś takowy? 🙂
