Скрипт для оптимизации всех Баз данных MySQL на сервере

Скрипт оптимизации всех Баз данных MySQL на сервереКогда у тебя на сервере несколько баз данных MySQL периодически возникает необходимость «одним махом» провести оптимизацию всех их дабы не было необходимости заходить в любимый инструмент управления базами данных (например самый популярный phpMyAdmin) да и вообще лень-матушка постоянно говаривает что мол «не надо никуда ходить пусть бы оно само все делалось» :)

В таком случае естественно проще воспользоваться неким скриптом который мог бы выявить все имеющиеся Базы данных а затем обойти их самостоятельно и провести оптимизацию...

Так когда-то я нашел этот скрипт на просторах глобальной сети а сейчас вот возникла ситуация что я им стал пользоваться вот и делюсь заодно и с вами мои дорогие посетители :) Абсолютно не знаю кто его создал так что прощу прощения заранее если кто обнаружит свои строчки кода — пишите в комментариях тогда...

Итак собственно PHP-скрипт который можно запускать ручками когда душе угодно а можно и просто подвесить на cron чтобы вообще забыть о таком важном процессе как оптимизация Баз данных MySQL :)

<?php error_reporting(0); echo '<html><head><title>Оптимизация всех Баз данных</title></head><body>';echo '-' . "\n\n"; set_time_limit( 90 );   $time = microtime();  $time = explode(' ' $time);  $time = $time[1] + $time[0];  $start = $time; // ДАННЫЕ ДЛЯ СОЕДИНЕНИЯ С СЕРВЕРОМ БАЗЫ ДАННЫХ$h = 'localhost'; // ХОСТ$u = 'db_server_name'; // ИМЯ ПОЛЬЗОВАТЕЛЯ$p = 'bLa_Bla_blA'; // ПАРОЛЬ $dummy_db = 'mysql'; $db_link = mysql_connect($h$u$p); $res = mysql_db_query($dummy_db 'SHOW DATABASES' $db_link) or die('Невозможно соединиться: ' . mysql_error());echo 'Найдено Баз данных: '. mysql_num_rows( $res ) . "\n------------------------------------ \n";$dbs = array(); while ( $rec = mysql_fetch_array($res) ) { $dbs [] = $rec [0]; } foreach ( $dbs as $db_name ) {echo "БД $db_name \n";$res = mysql_db_query($dummy_db "SHOW TABLE STATUS FROM `" . $db_name . "`" $db_link) or die('Query : ' . mysql_error());$to_optimize = array();while ( $rec = mysql_fetch_array($res) ) {if ( $rec['Data_free'] > 0 ) { $to_optimize [] = $rec['Name']; echo "   |- таблица '" . $rec['Name'] . "' нуждается в оптимизации / оптимизируется" . "\n"; }}if ( count ( $to_optimize ) > 0 ) { foreach ( $to_optimize as $tbl ) {  mysql_db_query($db_name "OPTIMIZE TABLE `" . $tbl ."`" $db_link ); }}} $time = microtime();  $time = explode(' ' $time);  $time = $time[1] + $time[0];  $finish = $time;  $total_time = round(($finish - $start) 6);  echo "------------------------------------ \nВыполнено за " . $total_time . ' сек.' . "\n\n"; echo '</body></html>';?>

Естественно указанный выше в скрипте пользователь должен иметь право доступа ко всем Базам которые необходимо оптимизировать с помощью этого...


Оригинал статьи http://pingvinoff.net/2012/03/19/ssript-optimizacii-baz-dannyx-mysql/

0 комментариев

Оставить комментарий