Поддръжка на Mysql таблици през SSH
Съдържание
В статията Операции за поддръжка на MySQL таблици ви запознахме с възможностите на MySQL сървъра да поддържа таблиците в различните хранилища за данни.
Както сте се убедили, възможностите на MySQL далеч надхвърлят степента на използването им в потребителските CMS сайтове.
Операциите за проверка, анализ, оптимизация и поправяне на MySQL таблици в контекста на споделения хостинг могат да се изпълняват по два начина - чрез SSH команди и през phpMyAdmin.
В тази статия ще покажем как може да поддържате таблиците на всеки ваш сайт чрез подаване на SSH команди в терминал.
За да изпълните тези команди трябва да имате закупен и активиран SSH достъп до хостинга.
SSH достъп до MySQL в споделен хостинг
Преди да започнем с MySQL операциите трябва да направим следното уточнение: SSH достъпа в споделения хостинг не дава root достъп до MySQL сървъра и вие не може да създавате бази данни и потребители.
Вие имате достъп през SSH единствено до вече създадена база данни и може да извършвате операции с SSH команди единствено в рамките на съответната база данни.
Логването в базата данни става със следния код:
# mysql -unewUSR -p newDB;
Enter password:
mysql>
Може да добавите паролата в командата след -p
без интервал:
# mysql -unewUSR -p6kwuzc5 newDB;
mysql>
Ако изпълните командата show databases;
ще получите като отговор само името на базата данни, в която сте се логнали, въпреки че в хостинга може да има създадени десетки бази данни:
mysql> show databases;
+----------------------+
| Database |
+----------------------+
| information_schema |
| newDB |
+----------------------+
2 rows in set (0.05 sec)
mysqlcheck - програма за поддръжка на mysql таблици
CLI програмата mysqlcheck извършва поддръжка на MySQL таблици като извършва следните операции чрез въвеждане на различни аргументи през команден ред (command-line interface, CLI):
- проверка - CHECK (-c, -m, -C);
- поправяне - REPAIR (-r);
- анализ - ANALYZE (-a);
- оптимизаране - OPTIMIZE (-о);
- автоматично поправяне -
--auto-repair
- ако проверена таблица е повредена, автоматично я поправя. Всички необходими поправки се извършват след проверка на всички таблици.
Не всички опции се поддържат от всички хранилища за данни (InnoDB не поддържа REPAIR). Опциите -c
, -r
, -a
и -o
взаимно се изключват, което означава, че ще бъде използвана последната опция, ако са посочени няколко. Ако не бъде посочена опция mysqlcheck изпълнява операцията CHECK.
Пълен набор от опции за работа с програмата може да получите ако изпълните в терминал командата mysqlcheck --help;
За нашите тестове ще използваме база данни с две таблици, изградени с двете най-използвани хранилища - MyISAM (prfx_myisam)
и InnoDB (prfx_innodb)
, които лесно ще различавате по имената. Тъй като InnoDB е хранилището по подразбиране на MySQL след версия 5.5, примерите с използване на една таблица ще се изпълняват в prfx_innodb
.
Проверка на MySQL таблица с mysqlcheck
За да проверим една таблица от базата данни въвеждаме следните елементи в една обща команда:
- командата -
mysqlcheck
; - данните за логване -
-unewUSR -p6kwuzc5 newDB
; - името на таблицата -
prfx_innodb
; - аргумента на операцията -
-c
; - точка и запетая за край на командата -
;
.
# mysqlcheck -unewUSR -p6kwuzc5 newDB prfx_innodb -c;
newDB.prfx_innodb OK
За да проверим всички таблици не добавяме име на таблица:
# mysqlcheck -unewUSR -p6kwuzc5 newDB -c;
newDB.prfx_innodb OK
newDB.prfx_myisam OK
# mysqlcheck -unewUSR -p6kwuzc5 newDB --auto-repair;
newDB.prfx_innodb OK
newDB.prfx_myisam OK
Вместо аргумента -c може да ползвате --auto-repair
- при откриване на повредена таблица автоматично ще бъде поправена.
Анализ на MySQL таблица с mysqlcheck
За да анализираме една таблица въвеждаме кода от горния пример като заменяме аргумента -c
с -a
(затова оставихме аргумента на последно място за да може да се променя лесно):
# mysqlcheck -unewUSR -p6kwuzc5 newDB prfx_innodb -a;
newDB.prfx_innodb OK
Анализ на всички таблици:
# mysqlcheck -unewUSR -p6kwuzc5 newDB -a;
newDB.prfx_innodb OK
newDB.prfx_myisam Table is already up to date
Оптимизиране на MySQL таблица с mysqlcheck
За да оптимизираме една таблица използваме аргумента -о
.
Тъй като хранилището за данни InnoDB не поддържа optimize сървъра пресъздава таблицата, като по този начин дефрагментира дупките в таблицата, получени при изтриване на информация и след това изпълнява командата analyze за да провери индексите на записите:
# mysqlcheck -unewUSR -p6kwuzc5 newDB prfx_innodb -o;
newDB.prfx_innodb
note : Table does not support optimize, doing recreate + analyze instead
status : OK
# mysqlcheck -unewUSR -p6kwuzc5 newDB -o;
newDB.prfx_innodb
note : Table does not support optimize, doing recreate + analyze instead
status : OK
newDB.prfx_myisam Table is already up to date
Table is already up to date
е стандартния отговор при анализиране на MyISAM таблица, когато всичко с таблицата е наред и няма нужда от допълнителна профилактика.
Поправяне на MySQL таблица с mysqlcheck
За да поправите (repair) една таблица използвайте аргумента -r
:
# mysqlcheck -unewUSR -p6kwuzc5 newDB prfx_innodb -r;
newDB.prfx_innodb
note : The storage engine for the table doesn't support repair
# mysqlcheck -unewUSR -p6kwuzc5 newDB -r;
newDB.prfx_innodb
note : The storage engine for the table doesn't support repair
newDB.prfx_myisam OK
Ако видите съобщението: The storage engine for the table doesn't support repair
, това означава, че опитвате да поправите InnoDB таблица.
Изпълнение на командите за поддръжка през mysql prompt
Всички команди, които разгледахме дотук и които изпълнихме спрямо една таблица могат да бъдат изпълнени и през mysql prompt като предварително се логнем в базата данни със следната команда:
# mysql -unewUSR -p6kwuzc5 newDB;
mysql>
Проверка на таблица - check table
mysql> check table prfx_myisam, prfx_innodb;
+-------------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------------------------+-------+----------+----------+
| newDB.prfx_myisam | check | status | OK |
| newDB.prfx_innodb | check | status | OK |
+-------------------------+-------+----------+----------+
2 rows in set (0.00 sec)
Анализ на таблица - analyze table
mysql> analyze table prfx_myisam, prfx_innodb;
+-------------------------+---------+----------+-----------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------------------+---------+----------+-----------------------------+
| newDB.prfx_myisam | analyze | status | Table is already up to date |
| newDB.prfx_innodb | analyze | status | OK |
+-------------------------+---------+----------+-----------------------------+
2 rows in set (0.00 sec)
Оптимизиране на таблица - optimize table
mysql> optimize table prfx_myisam, prfx_innodb;
+-------------------------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------------------+----------+----------+-------------------------------------------------------------------+
| newDB.prfx_myisam | optimize | status | OK |
| newDB.prfx_innodb | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| newDB.prfx_innodb | optimize | status | OK |
+-------------------------+----------+----------+-------------------------------------------------------------------+
3 rows in set (0.01 sec)
Поправяне на таблица - repair table
mysql> repair table prfx_myisam, prfx_innodb;
+-------------------------+--------+----------+---------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------------------+--------+----------+---------------------------------------------------------+
| newDB.prfx_myisam | repair | status | OK |
| newDB.prfx_innodb | repair | note | The storage engine for the table doesn't support repair |
+-------------------------+--------+----------+---------------------------------------------------------+
2 rows in set (0.01 sec)
Заключение
В следващата статия ще ви покажем как да използвате инструментите за поддръжка на MySQL таблици в phpMyAdmin.