Mydumper подходит для резервного копирования как больших БД, так и очень маленьких. Главной особенностью этой утилиты является то, что она выполняет резервное копирование параллельно в нескольких потоках, что в несколько раз быстрее и эффективнее, чем стандартные инструменты, такие как mysqldump.

1) Установка Mydumper

Существует множество способов установить mydumper, но так сложилось, что большинство из них в Интернете устарели или даже никогда не работали. В настоящее время для Centos 7 установка mydumper выглядит следующим образом:

yum install ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/LenzGr/CentOS_7/x86_64/mydumper-0.9.1-1.4.x86_64.rpm

После завершения установки мы можем запросить вывод команды —help для mydumper:

mydumper --help
Usage:
  mydumper [OPTION?] multi-threaded MySQL dumping
Help Options:
  -?, --help                  Show help options
Application Options:
  -B, --database              Database to dump
  -T, --tables-list           Comma delimited table list to dump (does not exclude regex option)
  -o, --outputdir             Directory to output files to
  -s, --statement-size        Attempted size of INSERT statement in bytes, default 1000000
  -r, --rows                  Try to split tables into chunks of this many rows. This option turns off --chunk-filesize
  -F, --chunk-filesize        Split tables into chunks of this output file size. This value is in MB
  -c, --compress              Compress output files
  -e, --build-empty-files     Build dump files even if no data available from table
  -x, --regex                 Regular expression for 'db.table' matching
  -i, --ignore-engines        Comma delimited list of storage engines to ignore
  -m, --no-schemas            Do not dump table schemas with the data
  -d, --no-data               Do not dump table data
  -G, --triggers              Dump triggers
  -E, --events                Dump events
  -R, --routines              Dump stored procedures and functions
  -k, --no-locks              Do not execute the temporary shared read lock.  WARNING: This will cause inconsistent backups
  --less-locking              Minimize locking time on InnoDB tables.
  -l, --long-query-guard      Set long query timer in seconds, default 60
  -K, --kill-long-queries     Kill long running queries (instead of aborting)
  -D, --daemon                Enable daemon mode
  -I, --snapshot-interval     Interval between each dump snapshot (in minutes), requires --daemon, default 60
  -L, --logfile               Log file name to use, by default stdout is used
  --tz-utc                    SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use --skip-tz-utc to disable.
  --skip-tz-utc
  --use-savepoints            Use savepoints to reduce metadata locking issues, needs SUPER privilege
  --success-on-1146           Not increment error count and Warning instead of Critical in case of table doesn't exist
  --lock-all-tables           Use LOCK TABLE for all, instead of FTWRL
  -U, --updated-since         Use Update_time to dump only tables updated in the last U days
  --trx-consistency-only      Transactional consistency only
  -h, --host                  The host to connect to
  -u, --user                  Username with privileges to run the dump
  -p, --password              User password
  -P, --port                  TCP/IP port to connect to
  -S, --socket                UNIX domain socket file to use for connection
  -t, --threads               Number of threads to use, default 4
  -C, --compress-protocol     Use compression on the MySQL connection
  -V, --version               Show the program version and exit
  -v, --verbose               Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

2) Скрипт для выполнения бекапов БД

Теперь нам нужно подготовить скрипт, в котором мы опишем все необходимые команды для выполнения резервного копирования наших баз данных по расписанию.

### создаём директорию sbin в /root/ ###
mkdir /root/sbin
### создаём директорию для хранения бекапов ###
mkdir /backup
### создаём файл скрипта с командами ###
nano /root/sbin/mysql-backup

Размещаем в нашем файле следующее содержимое: /root/sbin/mysql-backup

ionice -c3 mydumper --user=your-mysql-user --password=your-mysql-user-password -o /backup/`date +%Y-%m-%d_%H-%M` --compress --triggers --events --routines --build-empty-files --less-locking --use-savepoints --success-on-1146 --compress-protocol --threads=2 --verbose=3
/usr/bin/ionice -c3 find /backup/ -type f -mtime +14 -exec rm -f {} \;  >/dev/null 2>&1
/usr/bin/ionice -c3 find /backup/ -type d -empty -exec rmdir {} \;

В этом скрипте вам необходимо поправить следующие данные:

--user=(логин пользователя БД, который имеет доступ к бд, в отдельных случаях может использоваться рут, если требуется бекапить абсолютно все базы MySQL)
--password=(пароль пользователя которого мы указали выше)

а так же:

--threads=(Количество потоков, на которых будет работать бекап, обычно выставляется значение равное половине от количества ядер вашего сервера. Так же стоит учесть, что если сервер сильно нагружен - стоит скорректировать значение в меньшую сторону)

и количество хранимых копий бекапа:

-mtime +14 (в нашем примере 14 дней, т.е. на сервере будет храниться 14 бекапов бд за предыдущие дни. Скорректируйте данное значение в зависимости от ваших целей и размера БД)

Сохраняем наши изменения в файле и выходим. Теперь нам необходимо установить права на выполнение:

chmod 775 /root/sbin/mysql-backup

3) Настройка выполнения задачи по времени

Теперь нам нужно создать задачу cron, которая будет запускать скрипт резервного копирования в указанное время, поэтому выполните команду для создания файла:

nano /etc/cron.d/mysql-backup

и вставьте следующее в /etc/cron.d/mysql-backup

0 2 * * * root bash -lc "/root/sbin/mysql-backup" > /dev/null

Сохраняем и выходим. Теперь каждую ночь, в 02:00, будет запущен наш скрипт резервного копирования. Он создаст резервную копию всех баз данных на сервере в каталоге / backup /, а также удалит дополнительные резервные копии (мы указали период хранения в процессе создания).

Categories: CentosScripts

0 Comments

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *