MySQL

Матеріал з Wiki.Zina
Версія від 12:20, 3 травня 2021, створена Romych (обговорення | внесок) (→Сохранение и использование дампа БД)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Установка MySQL на Ubuntu

[ред. | ред. код]
sudo apt install mysql-server

Для проверки MySQL можно установить phpMyAdmin:

sudo /etc/init.d/mysql start
sudo apt install phpmyadmin

Проверка: http://localhost/phpmyadmin

Основные команды MySQL

[ред. | ред. код]

Запуск, перезапуск, остановка MySQL:

sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql restart
sudo /etc/init.d/mysql stop

Конфиг MySQL

[ред. | ред. код]

Конфиг MySQL в Ubuntu 15.10 здесь: /etc/mysql/mysql.conf.d/mysqld.cnf

Если MySQL работает медленно, попробуйте добавить в конфиг строку:

innodb_flush_log_at_trx_commit=2

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

innodb_log_file_size=64M

Подробнее см.: https://www.quora.com/Why-would-an-INSERT-query-be-slow-in-MySQL

Логи MySQL

[ред. | ред. код]
general_log_file        = /var/log/mysql/mysql.log
log_error = /var/log/mysql/error.log
log_slow_queries        = /var/log/mysql/mysql-slow.log

Показывать последние строки в лог файле по мере их появления:

sudo tail -f /var/log/mysql/mysql.log
sudo tail -f /var/log/mysql/error.log

Сохранение и использование дампа БД

[ред. | ред. код]

Сохранение дампа базы данных

[ред. | ред. код]

Общий принцип:

mysqldump -u USER -p DATABASE > db.sql

Со сжатием:

mysqldump -u USER -p DATABASE | gzip > db.sql.gz

С именованием файла по текущей дате:

mysqldump -u USER -p DATABASE | gzip > `date +%Y-%m-%d_%H-%M`.sql.gz

С быстрым заполнением параметров (один раз указать имя базы, если имя юзера совпадает с базой), добавлением к имени бэкапа названия базы данных и отображением имени и размера файла в конце:

db='DATABASE'; user=$db; backup=`date +%Y-%m-%d_%H-%M`'_'$db'.sql.gz'; mysqldump -u $user -p $db | gzip > $backup; du -h $backup; unset db user backup

С отображением прогресса (используется дополнительная программа pv):

db='DATABASE'; user=$db; backup=`date +%Y-%m-%d_%H-%M`'_'$db'.sql.gz'; mysqldump -u $user -p $db | gzip | pv > $backup; unset db user backup

Импорт базы данных из файла дампа .sql

[ред. | ред. код]
 mysql -u USER -p PASSWORD DATABASE < FILE.sql

Импорт базы данных их архива .gz и с отображением прогресса:

pv FILE.sql.gz | gunzip | mysql -u USER -p DATABASE

Просмотр бекапов на сервере

[ред. | ред. код]

найти последний бекап:

 db=DATABASE ;ssh root@91.222.64.31 "ls -lh /var/backup/db/latest/ | grep $db"

все бекапы последних дней:

 db=DATABASE ;ssh root@91.222.64.31 "ls -lh /var/backup/db/daily/*/* | grep $db"

за последнюю неделю:

 db=DATABASE ;ssh root@91.222.64.31 "ls -lh /var/backup/db/weekly/*/* | grep $db"

за последний месяц:

 db=DATABASE ;ssh root@91.222.64.31 "ls -lh /var/backup/db/monthly/*/* | grep $db"
  • DATABASE - имя базы данных
  • ip удаленного MySQL: 91.222.64.31
  • ip локального MySQL: 91.197.131.59

MySQL проблемы и решения

[ред. | ред. код]

Обновление MySQL 5.7 при обновлении Ubuntu 16.04

[ред. | ред. код]
sudo update-alternatives --remove my.cnf /etc/mysql/my.cnf.migrated
sudo service mysql start
sudo apt-get -f install

См. подробнее Bug #1571865 “mysql fails to start after upgrade if previous def...”

Справочная информация по SQL

[ред. | ред. код]

Ссылки

[ред. | ред. код]