Полезные советы и шпаргалки при работе с 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.cnfEXPLAINmysqldump -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 это не актуально, ибо они не поддерживают транзакционность.