Создать базу и пользователя
CREATE DATABASE <DB_NAME> GRANT ALL PRIVILEGES ON <DB_NAME>.* TO 'my_user'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
Просмотр баз
SHOW DATABASES;
Использовать выбранную базу
USE <DB_NAME>
Просмотр таблиц
SHOW TABLES;
Просмотр колонок выбранной таблицы
SHOW COLUMNS FROM <TABLE_NAME>;
Делаем бекап
mysqldump -u USER -pPASSWORD DATABASE > /path/TO/file/dump.sql
Создаём структуру базы без данных
mysqldump --no-data - u USER -pPASSWORD DATABASE > /path/to/file/schema.sql
Если нужно сделать дамп только одной или нескольких таблиц
mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/TO/file/dump_table.sql
Создаём бекап и сразу его архивируем
mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/TO/outputfile.sql.gz
Создание бекапа с указанием его даты
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz`
Заливаем бекап в базу данных
mysql -u USER -pPASSWORD DATABASE < /path/TO/dump.sql
Заливаем архив бекапа в базу
gunzip < /path/TO/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /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
- делает расширенную вставку. Итоговый файл получается меньше и делается он чуть быстрееДля просмотра списка баз данных можно использовать команду:
mysqlshow -u USER -pPASSWORD
А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE
Для таблиц InnoDB надо добавлять –single-transaction
, это гарантирует целостность данных бекапа.
Для таблиц MyISAN это не актуально, ибо они не поддерживают транзакционность.
В MySQL есть такой замечательный файл - ibdata1. Замечателен о не только тем, что растёт как дурак, но и тем, что хранит кучу данных сервера.
Начнём с того, что просто удалить его можно, но это приведёт к уничтожению данных таблиц. ibdata1 хранит данные таблиц (кроме схем - они хранятся в других файлах), индексы и прочую информацию. Альтернатива хранению в одном файле - хранить для каждой таблицы эту информацию в отдельном файле. Собственно это я и предлагаю сделать.
mysqldump –all-databases > alldb.sql
используем, чтобы выгрузить все данные сервераmy.cnf
(во многих дистрибутивах этот файл лежит в /etc/mysql) в секцию [mysqld]
строчку innodb_file_per_table
/var/lib/mysql/ibdata1
и /var/lib/mysql/ib_logfile*
файлы.cat alldb.sql | mysql -uroot -p