Прикручиваем прогрессбар к Mysqldump

30 Sep 2017

Всем привет. В этой статье расскажу, как реализовать progress bar для mysqldump. Это может быть полезно, когда нужно сделать дамп достаточно большой базы данных, или наоборот, залить уже имеющийся дамп.

Пусть у нас будет база данных размером примерно 500мб. Для начала попробуем просто сделать дамп. Выполним такую команду:

    
        mysqldump -uroot -p -hlocalhost large_database > large_database_dump.sql
    

Дамп делается, но т.к. база данных достаточно большая, непонятно, на какой стадии находится процесс. И вообще происходит ли что-то. Остается лишь примерно отслеживать процесс по изменяющимся таблицам в базе данных.

То же самое происходит при импорте дампа базы.

    
        mysql -uroot -p -D large_database < large_database_dump.sql
    

Тут на помощь приходит утилита pv. Обычно, она установленна по умолчанию. Если нет, то её можно установить такой командой (Ubuntu/Debian):

    
        apt-get install pv
    

Дамп можно сделать таким образом:

    
        mysqldump -uroot -pTLtXwnzi0MWn -hlocalhost large_database | pv -s 500M > large_database_dump.sql
    

Здесь нам нужно знать размер базы данных. Чтобы получить примерный размер базы данных, нужно выполнить такой sql запрос:

    
    SELECT table_schema "DB Name",
        Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
        FROM   information_schema.tables
        GROUP  BY table_schema;
    

Залить дамп базы данных можно такой командой:

    
        pv large_database_dump.sql | mysql -uroot -pTLtXwnzi0MWn -D large_database
    

Спасибо за внимание!

Добавить Комментарий:
Email не будет опубликован
Можно использовать markdown