Ответы пользователя по тегу MySQL
  • Frewalld. Проблемы с ограничением IP (mysql)?

    Inlore
    @Inlore
    Добавляю сервис:
    firewall-cmd --zone=public --add-service=mysql --permanent

    Добавление сервиса в firewalld означает, что вы открываете порты этого сервиса для всех. Просто удалите это правило и всё будет ок
    Ответ написан
    1 комментарий
  • Как оптимизировать sql запрос с несколькими Join-ами в ActiveQuery Yii2?

    Inlore
    @Inlore
    Using temporary; Using filesort
    говорит о том, что создаётся временная таблица, которая ещё и сортируется переборкой каждого поля.
    Для disabled и date_added есть индексы?
    Ответ написан
    2 комментария
  • Как настроить автоматическое копирование бэкапов на сторонний FTP?

    Inlore
    @Inlore
    Как раз недавно искал подобное решение и остановился на backupninja
    Умеет по расписанию бэкапить БД и файлы и отправлять их на сторонний сервер разными способами, включая rsync, rdiff, duplicity

    В /etc/backup.d/ создаёте конфиги вида 10-db.mysql , 50-ftp.dup
    Числа в начале файла описывают очерёдность выполнения в случае одновременного запуска (сначала сдампить базу, а затем заливать из папки с архивом на ftp).
    Расширение файла указывает на тип задачи (.mysql - бэкап mysql, .dup - используем duplicity)

    Время выполнение бэкапов по-умолчанию задаётся в /etc/backupninja.conf
    ...
    when = everyday at 01:00
    ...

    Его можно переопределить для каждого отдельного бэкапа в начале его конфига
    when = sundays at 02:00
    when = 30th at 22
    when = 30 at 22:00
    when = everyday at 01            <-- the default
    when = Tuesday at 05:00
    when = hourly

    Подробнее о конфигах backupninja здесь

    Сам duplicity, которым я, например, делаю бэкапы, поддерживает кучу протоколов, в том числе и передачу по ftp. Также поддерживает ротацию бэкапов

    Конфиг для duplicity выглядит примерно так:
    ## Переопределяем время выполнения
    when = sundays at 02:00
    ## Параметры, передаваемые напрямую duplicity при запуске бэкапа
    ## --no-encryption позволяет отключить шифрование архивов с бэкапом и получить обычный .tar.gz
    #options = --no-encryption
    
    testconnect = no
    tmpdir = /tmp
    
    [source]
    include = /var/backups/mysql
    include = /home/user/projects/site1
    exclude = /home/user/projects/.git
    
    [gpg]
    ## Ключ для симметричного шифрования. Duplicity шифрует бэкапы с помощью gpg. Должен быть указан, даже если стоит --no-encryption, хоть и не будет использоваться
    password = 123
    
    [dest]
    ## perform incremental backups
    incremental = yes
    
    ## days of incremental backups before doing full backup again
    increments = 7
    
    ## how many days of data to keep
    keep = 14
    
    ## for how many full backups do we keep their later increments
    keepincroffulls = all
    
    desturl = ftp://backup_user@your_backup_server/
    ftp_password = backup_user_password


    В бэкапах получаются на первый взгляд не очень понятные файлы, типа
    duplicity-full-signatures.20130510T160711Z.sigtar.gpg
    duplicity-full.20130510T160711Z.manifest.gpg
    duplicity-full.20130510T160711Z.vol1.difftar.gpg

    Тут можно чуть поподробнее прочитать про них

    С бэкапами лучше работать самой утилитой duplicity, но можно и вручную их вытащить. Вручную минус в том, что инкрементальные бэкапы придётся вручную накатывать на полные, когда duplicity сделает это автоматом при указании даты восстановления.
    duplicity collection-status src выдаст что-то типа этого
    Total number of contained volumes: 3
    Type of backup set:                        Time:                        Num volumes:
    Full                            Mon Apr 17 00:24:46 2017                 1
    Incremental                     Mon Apr 17 01:00:03 2017                 1
    Incremental                     Mon Apr 17 09:53:38 2017                 1

    после чего можно прочитать содержимое архива на определённую дату
    duplicity list-current-files --time 2017-04-17T05:00:00 src (покажет бэкап Mon Apr 17 01:00:03 2017, т.е. ближайший ДО указанного времени)
    и восстановить
    duplicity restore --time 2017-04-17T05:00:00 src dst

    src - это то, где ваши бэкапы хранятся.
    Это может быть и локальная директория file:///var/backups//
    И ftp ftp://user:password@backup_server//var/backups

    Сами файлы хранятся в vol#.difftar.[tar.gz|gpg], если надо вручную вытащить
    Если шифровали, то сначала расшифровать .gpg, чтобы получить .tar.gz
    Ответ написан
    2 комментария