Поиск

Найдены 15 статей по слову "sql"

Создание бекапов в Яндекс.Диск (Ubuntu)

Описание

Скрипт умеет:
- Делать бекапы директорий, например, /etc.
- Делать бекапы поддиректорий (разделяя их), например, /var/www/*.
- Делать дампы MySQL.
- Делать дампы PostgreSQL.
- Загружать все это дело в Яндекс.Диск.

Подготовка

Для начала необходимо получить токен для Яндекс.Диска.

Для этого:
1. Перейдите по этому URL https://oauth.yandex.ru/client/new.
2. Название введите любое, например, “server_backup” без кавычек.
3. Права выберите пункт “Яндекс.Диск REST API” и в нем “Доступ к папке приложения на Диске”.
4. Снизу нажмите “Подставить URL для разработки”.
5. Сохраните.

Вам выдаст подобные результаты:

ID: 61bf56f1e72a4112b83e1db9e44dbe9c
Пароль: 74087cd13d2247c48661c75617916b75
Callback URL: https://oauth.yandex.ru/verification_code
  1. Переходим по URL https://oauth.yandex.ru/authorize?response_type=token&display=popup&client_id=%ID%
    Обратите внимание. Замените в URL выше %ID% на то, что получили выше, т.е. в моем примере - “61bf56f1e72a4112b83e1db9e44dbe9c”.
  2. Нажимаем кнопку “Разрешить”.
  3. Копируем полученный токен и вставляем его в скрипт в YD_TOKEN (см. ниже).

Настройка

Скачайте файл backup_yd.sh и сохраните его на сервере.

Далее, вам необходимо изменить переменные в блоке “Init variables”:

# Базовый путь для сохранения бекапов.
BASE_BACKUP_DIR="/home/user/backups"

# Токен Yandex.Disk.
YD_TOKEN=""

# Пароль от пользователя root СУБД MySQL. Если она не используется, оставьте пустым.
MYSQL_ROOT_PASSWORD=""

# Делать дампы СУБД PostgreSQL?
# Пустая строка - нет
# "1" - да
USE_POSTGRESQL=""

# Список директорий, которые необходимо бекапить.
# В данном примере будет забекаплена директория /etc как архив etc.tar.gz и
# все поддиректории /var/www с соответствующими именами.
declare -a DIRS_FOR_BACKUP=('/etc' '/var/www/*');

# Размеры чанков (т.к. максимальный размер файлов ограничен, то необходимо
# разрезать архив на несколько частей. Чанк - и есть эта часть).
SPLIT_BY="200MiB"

Также, необходимо дать права на запуск:

chmod +x ./backup_yd.sh

Проверяем

Для проверки запустим скрипт:

./backup_yd.sh

В директории %BASE_BACKUP_DIR% будет создана директория с текущей датой, в ней поддиректории для файлов и дампов баз данных.
Все файлы бекапов разрезаются на чанки.

Затем будет произведена загрузка на Яндекс.Диск и директория будет удалена.

Примечание: Чтобы собрать бекап из чанков, используйте команду cat:

cat mybackup.tgz_* > mybackup.tgz

Настраиваем ежедневные бекапы по времени

Запускаем cron:

crontab -e

Добавляем следующую строку (впишите правильный путь до файла backup_yd.sh)

0 3 * * * /bin/bash /home/user/backups/backup_yd.sh

После этого сохраняйте и выходите из редактирования cron.

Все, теперь каждый день в 3 часа ночи будет создаваться новый бекап и загружаться в ваш Яндекс.Диск.

bash

UMongo

UMongo - аналог MySQL Workbench для MongoDB.

http://mongodb-tools.com/tool/umongo/

mongo

Как сделать дамп mysql и развернуть базу из дампа в консоли?

Дамп БД - это резервная копия базы данных.

Делаем дамп:

$ mysqldump -uLOGIN -pPASSWORD DATABASENAME > dump.sql

Разворачиваем из дампа:

$ mysql -uLOGIN -pPASSWORD DATABASENAME < dump.sql
bash

Добавляем только несуществующие записи в таблицу (SQL)

Допустим, у нас есть таблица tags такого вида (ниже привожу sql-запрос для ее создания):

CREATE TABLE `tags` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `tag_name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
    `uid` int(11) unsigned NOT NULL,
    PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Ее смысл в том, что для каждого пользователя мы можем задавать отдельный набор тэгов, которые будут отображаться только ему. Кстати, отображать их удобно через jquery UI autocomplete multiple .

Также, когда мы передаем какой то набор сохраняемых тэгов для выбранного пользователя (опустим моменты разрезания, тримминг пробелов и т.д.), мы не хотим, чтобы повторялись одинаковые значения. Этого можно добиться, сделав следующее.

Сначала сделаем уникальный ключ из двух полей - tag_name и uid.

ALTER TABLE tags ADD unique index(tag_name,uid);

А затем мы можем добавлять несуществующие записи таким образом (обратите внимание на слово IGNORE - оно позволяет не показывать ошибку, когда создаются дубликаты уже существующих записей, а просто пропускать ее):

INSERT IGNORE INTO tags(tag_name, uid) VALUES ('my_tag1', 1), ('my_tag2', 1), ('мой тэг', 1)
sql

Table X is marked as crashed and should be repaired

Это ошибка обычно возникает из-за неожиданной перезагрузки СУБД.

В PhpMyAdmin или MySQL-консоли выполните следующий запрос:

REPAIR TABLE `mytable`

где mytable - таблица, указанная в ошибке.

sql