Полезные советы и шпаргалки при работе с MySQL
ssh -fNL LOCAL_PORT:localhost:3306 REMOTE_USER@REMOTE_HOST |
INTEGER
свойство UNSIGNED
, так как такие большие числа в php не поддерживаются. На 64-битных системах, php поддерживает большие числа, вплоть до MySQL BIGINT
со знаком.TINYINT(1)
DECIMAL(10, 2)
, где первое число обозначает количество всех знаков, включая запятую, а второе — количество знаков после запятой. Итого, у нас получится что DECIMAL(10,2)
может сохранить 9999999,99VARCHAR
была ограничена 255 символами, но сейчас можно указывать до 65535 символовTEXT
ограничен только 64 килобитами, поэтому что бы сохранять «Войну и Мир» пользуйтесь «LONGTEXT»Не забываем, что:
DATE
, TIME
, DATETIME
— выводятся в виде строк, поэтому поиск и сравнение дат происходит через преобразованиеTIMESTAMP
— хранится в виде UNIX_TIMESTAMP
, и можно указать автоматически обновлять колонкуDATETIME
и TIMESTAMP
, не забываем делать преобразование типов, например:SELECT * FROM table WHERE `datetime` = DATE(`timestamp`) |
/etc/mysql/my.cnf
EXPLAIN
mysqldump -u USER -pPASSWORD DATABASE > /path/to/code/dump.sql |
mysqldump --no-data - u USER -pPASSWORD DATABASE > /path/to/code/schema.sql |
Если нужно сделать дамп только одной или нескольких таблиц
mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/to/code/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/code/dump.sql |
-Q
оборачивает имена обратными кавычками -c
делает полную вставку, включая имена колонок -e
делает расширенную вставку. Итоговый файл получается меньше и делается он чуть быстрее
Для просмотра списка баз данных можно использовать команду:
mysqlshow -u USER -pPASSWORD |
А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE |
Для таблиц InnoDB надо добавлять –single-transaction
, это гарантирует целостность данных бекапа.
Для таблиц MyISAN это не актуально, ибо они не поддерживают транзакционность.