0

MySQL шпаргалки

Часто, когда разрабатываешь сайт, замечаешь, как на одни и те же грабли наступают разработчики при проектировании базы данных.
Сегодня я решил опубликовать свои шпаргалки, на самые часто встречающиеся ошибки при работе с MySQL.

Работа с бекапами

Делаем бекап
mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql
Создаём структуру базы без данных
mysqldump --no-data - u USER -pPASSWORD DATABASE > /path/to/file/schema.sql
Заливаем бекап в базу данных
mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql
Создаём бекап и сразу его архивируем
mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz
Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE
Удобно использовать бекап с дополнительными опциями -Q -c -e, т.е.
mysqldump -Q -c -e -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql, где:

  • -Q оборачивает имена обратными кавычками
  • -c делает полную вставку, включая имена колонок
  • -e делает расширенную вставку. Итоговый файл получается меньше и делается он чуть быстрее

Continue Reading

0

MySQL

Как быстро добавить пользователя?

shell> mysql —user=root mysql
mysql> CREATE USER ‘username’@’%’ IDENTIFIED BY ‘passwd’;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘username’@’%’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
0

Копирование баз данных MySql в архив

Просто:

> mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME > dump.txt 

В unix shell запускаем crontab -e и создаем такое правило запуска процесса создания копий базы:

0 0 * * * mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME
	| gzip -c > `date "+%Y-%m-%d"`.gz 

Сложно:

Копирование баз данных MySql в архив — помошь, скрипты, примеры

Простой способ для /bin/sh (Запуск из коммандной строки SSH)

Код для скрипта:

#!/bin/sh
data=`/bin/date +%d.%m.%Y_%H-%M-%s`
#копирование данных из MySql в текстовый файл
/usr/local/bin/mysqldump --all-databases --user=NAME --password=PASS > /home/USER-NAME/sql-dump.sql

#превращает текстовый файл в архив
/usr/bin/gzip --best /home/USER-NAME/sql-dump.sql

#Перемещает файл sql-dump.sql в sql-dump_${data}.sql.gz
/bin/mv sql-dump.gz sql-dump_${data}.gz

Continue Reading

0

Как перенести сайт с сервера на сервер

Самый правильный перенос — это:
1. через консоль запаковать все файлы:
$ tar czf bitrix_folder.tar.gz bitrix_folder
2. запаковать базу данных:
$ mysqldump -u root -h localhost -pmypassword database_name | gzip -9 > database_name.sql.gz
3. Перенести файлы на целевой сервер
4. Распаковать файлы:
$ tar xzf bitrix_folder.tar.gz — файлы
$ gzip -d file.gz — базу

5. залить базу данны:
http://www.doless.ru/kak-bystro-vosst…mysql.html
6. Вписать новые (если необходимо) данные о соединении с базой данных, у битрикса это тут: /bitrix/php_interface/dbconn.php

0

VMBitrix upgrade – или переносим данные на другую виртуальную машину

VM1 — исходная виртуалка
VM2 — целевая

1. VM2 — Установить утилиту service – понадобится позже.
> apt-get install sysvconfig
2. VM2 — Необходимо добавить пользователя mysql с возможностью подключения с хоста VM1 и дать ему все привелегии.

  1. 3. VM2 — Открыть порт 3306:
    > ufw allow 3306/tcp
  2. 4. VM2 — Разрешить серису mysql слушать порт 3306 снаружи, отредактировав файл /etc/mysql/my.cfg:
  3. bind-address = 127.0.0.1 # нужно закомментировать
  4. 5. VM2 — Рестартовать mysql:
  5. > service mysql restart
  6. 6. VM1 — Настроить и запустить скрипт для синхронизации баз данных MySQL и привелегий.
  7. 7. VM2 — Рестартовать mysql:
    > service mysql restart  #что бы перезагрузить привилегии.
  8. 8. VM1  Заархивировать папку www:
  9. > tar czf www.tar.gz www
  10. 9. Переносим архив с VM1 на VM2. Для этого я использую программу WinSCP (под Win32) – она поддерживает протокол SFTP. Хотя правильнее наверно использовать линуксовый rsync – но я пока его не освоил.
  11. 10. VM1 Распаковываем арихив:
  12. > tar xzf file.tar.gz
  13. 11. Переносим конфиги nginx и apache
  14. 12. Рестартуем apache:
    > service apache2 restart
  15. 13. Перечитываем конфиги nginx:
    > killall –HUP nginx
  16. 14. Радуемся, если этого для вас достаточно. А если нет, как мне, то ставим samba и  postfix – но об этом позже.

Автор: Лобачев Виталий

0

Перенос всех MySQL баз данных с одного сервера на другой

Есть задача, нужно перенести все MySQL базы данных с одного сервера на другой, обычно это делают используя дамп всех MySQL баз данных, затем закачивают на другой сервер и импортируют дамп в MySQL, вариант хорош если вам некуда спешить, и нестрашно потратите вы на это час, два, или пол дня. Для одиночного переноса о репликации говорить тут не уместно. Я предлагаю более идеальный вариант как можно напрямую перенаправлять вывод дампа с одного сервера на другой.

Достоинства:
  • Очень быстро, потому что дамп не попадает даже на жесткий диск, а сразу передается по сети на другой сервер и там же импортируется в MySQL. (Ок, тут немного соврал, возможно что-то где-то свопится :) )
  • Мы напишем скрипт который будет все делать сам при запуске, так мы можем делать бекап всех MySQL баз.
  • А также вы можете положить скрипт в crontab, и регулярно синхронизировать базы данных, без репликации.

продолжение, о том как перенести MySQL

0

Как быстро восстановить базу MySQL

Для восстановления базы MySQL необходимо выполнить следующую последовательность команд:

$ mysql -u username –p (в конце строки пробел обязателен, иначе будет ругаться тип: Access denied for user ‘root’@’localhost’) — указать имя пользователя
Enter password: password — ввести пароль пользователя
mysql> use database_name;    — ввести имя базы данных
mysql> set names cp1251; — установить локаль (кодировку базы данных)
mysql> source /var/www/backup.sql; — Указать путь к базе данных

Готово!

P.S. не забывайте про точку с запятой там где они нужны.