Существует ли более быстрый способ загрузить mysqldumps? [дубликат]

Немного инвертированный, но это должно работать:

def foo():
    foo.counter += 1
    print "Counter is %d" % foo.counter
foo.counter = 0

, Если Вы хотите встречный код инициализации наверху вместо нижней части, можно создать декоратора:

def static_var(varname, value):
    def decorate(func):
        setattr(func, varname, value)
        return func
    return decorate

Тогда используют код как это:

@static_var("counter", 0)
def foo():
    foo.counter += 1
    print "Counter is %d" % foo.counter

Это все еще потребует, чтобы Вы использовали foo. префикс, к сожалению.

РЕДАКТИРОВАНИЕ (благодаря ony): Это выглядит еще более хорошим:

def static_vars(**kwargs):
    def decorate(func):
        for k in kwargs:
            setattr(func, k, kwargs[k])
        return func
    return decorate

@static_vars(counter=0)
def foo():
    foo.counter += 1
    print "Counter is %d" % foo.counter

18
задан Community 23 May 2017 в 11:47
поделиться

4 ответа

Вы уверены, что данные в порядке и нет проблем с файловой системой или производительностью системы? Несколько минут для базы данных в 20-30 мегабайт - это много. Я нахожусь на MacBook с 2 ГБ оперативной памяти, 320 ГБ HD и стандартным процессором 2,1 ГГц. Я взял одну из своих баз данных для быстрой проверки:

gavinlaking$ du -sm 2009-07-12.glis
74  2009-07-12.glis
gavinlaking$ mysql -pxxx -e "drop database glis"
gavinlaking$ mysql -pxxx -e "create database glis"
gavinlaking$ time mysql -pxxx glis < 2009-07-12.glis 

real    0m17.009s
user    0m2.021s
sys 0m0.301s

17 секунд для файла размером 74 мегабайта. Мне это кажется довольно быстрым. Даже если он был в 4 раза больше (всего около 300 мегабайт), он завершился менее чем за 70 секунд.

3
ответ дан 30 November 2019 в 06:51
поделиться

There is an method for using LVM snapshots for backup and restore that might be an interesting option for you.

Instead of doing a mysqldump, consider using LVM to take snapshots of your MySQL data directories. Using LVM snapshots allow you to have nearly real time backup capability, support for all storage engines, and incredibly fast recovery. To quote from the link below,

"Recovery time is as fast as putting data back and standard MySQL crash recovery, and it can be reduced even further."

http://www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/

1
ответ дан 30 November 2019 в 06:51
поделиться

Убедитесь, что вы используете параметр - opt для mysqldump при сбросе. Это будет использовать синтаксис массовой вставки, отложить обновление ключей и т. Д.


Если вы используете ТОЛЬКО таблицы MyISAM , вы можете безопасно скопировать их, остановив сервер, скопировав их на остановленный сервер и запустив его.

Если вы не хотите останавливать исходный сервер, вы можете сделать следующее:

  1. Установить блокировку чтения для всех таблиц
  2. Очистить все таблицы
  3. Скопировать файлы
  4. Разблокировать таблицы

Но я почти уверен, что ваш сервер копирования нужно остановить, когда вы установите их.

5
ответ дан 30 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: