Добро пожаловать на форум, Гость!
Войдите или зарегистрируйтесь!
Имя пользователя:   Пароль:  
Запомнить меня 




Начать новую тему Ответить на тему   [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 17 сен 2010, 14:36 
Бородатый сис
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 2898
Откуда: Из серверной
Зарегистрирован: 03 мар 2010, 15:12
Благодарил (а): 19 раз.
Поблагодарили: 121 раз.
ОС: RHEL 6.7
Особенно акутально для большого числа БД с MyISAM таблицами. Рекомендуется запускать периодически и после каждого аварийного перезапуска MySQL.

Требует: Python 2.x и MySQLdb (mysql-модуль для Python, он же MySQL-python)

Синтаксис: [ Загрузить ] [ Скрыть ]
Используется подсветка синтаксиса python
#!/usr/bin/env python
 
#########################################
# Check all tables in all mysql databases
#
# Written by Vladimir Rusinov <vladimir@greenmice.info>, http://greenmice.info/
#
# Reqirements:
#   Python 2.x (tested with 2.4)
#   MySQLdb
 
#########################################
# Settings:
 
host="localhost"
username="root"
password=""
 
exclude_dbs = ('information_schema', )
 
#########################################
# code
 
import sys
from optparse import OptionParser
 
import MySQLdb
 
parser = OptionParser()
parser.add_option("-f", "--fast", action="store_true", dest="fast",
        default="False", help="use fast table ckeck")
(options, args) = parser.parse_args()
 
check_type=""
if options.fast:
    check_type="FAST"
 
# first, get list of all databases:
try:
    conn = MySQLdb.connect(host = host, user = username, passwd = password, db = "mysql")
    cursor = conn.cursor()
    cursor.execute("SHOW DATABASES")
    dbs = cursor.fetchall()
    #print dbs
    conn.close()
except MySQLdb.Error, e:
    print "Error %d: %s" % (e.args[0], e.args[1])
    sys.exit(1)
 
 
# now, check every database
for (db, ) in dbs:
    if db in exclude_dbs:
        continue
    print "Checking database %s..." % (db, )
    try:
        conn = MySQLdb.connect(host = host, user = username, passwd = password, db = db)
        cursor = conn.cursor()
        cursor.execute("SHOW TABLES")
        tables = cursor.fetchall()
        for (table, ) in tables:
            cursor.execute("CHECK TABLE `%s` %s" % (table, check_type))
            status = cursor.fetchone()[3]
            if status not in ['OK', 'Table is already up to date']:
                print "Checking table %s.%s... %s; RUNNING REPAIR" % (db, table, status)
                cursor.execute("REPAIR TABLE `%s`" % (table, ))
                print cursor.fetchone()
    except MySQLdb.Error, e:
        print "Error %d: %s" % (e.args[0], e.args[1])
        sys.exit(1)
Обработано за 0.014 секунд, используется GeSHi 1.0.8.4


Я не злопамятный, я просто часто ковыряю логи
Изображение


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 
   Похожие темы   Автор   Ответов   Просмотров   Последнее сообщение 
Перенесенная ^_^

в форуме Linux

root

3

38

02 мар 2010, 16:15

Gen1us2k Перейти к последнему сообщению

Перенесенная Документация по Gentoo

в форуме Linux

Gen1us2k

0

4

05 мар 2010, 18:54

Gen1us2k Перейти к последнему сообщению



Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Собрано Raven. Русская поддержка phpBB
phpBB SEO