====== Нюансы при работе с MySQL и биллингом MikBill [чистовик] ====== Начиная с версии 1.10, активно используются хранимые процедуры и функции при работе с БД MySQL. Далее будут описаны важные моменты при технических работах с базой данных, такие как бэкап/восстановление/перенос на новый сервер и т.д. Без их соблюдения - вы рискуете получить частично нерабочий биллинг. Итак, наиболее частыми операциями, как уже упоминалось, являются - бэкап/восстановление/перенос на новый сервер базы данных. У нас есть два варианта - либо работать через phpmyadmin, либо напрямую через консоль. Консольный вариант более гибок, удобен и надежен, к тому же phpmyadmin умеет далеко не все - не все параметры, работа с большими БД невозможна. Будут рассмотрены оба варианта. Более подробно по параметрам можно посмотреть здесь: [[http://www.mysql.ru/docs/man/mysqldump.html|http://www.mysql.ru/docs/man/mysqldump.html]] ===== Работа с phpmyadmin ===== Чтобы процедуры и функции корректно попали в бекап, необходимо при экспорте не забыть указать чекбокс "Добавить CREATE PROCEDURE / FUNCTION". Также рекомендуется отметить "Добавить выражение DROP TABLE / VIEW / PROCEDURE / FUNCTION". Приведены скриншоты для старых и новых версий phpmyadmin: {{gallery> sysadmin:oldpmaroutine.jpg?nolink&400 }} \\ {{gallery> sysadmin:newpmaroutine.jpg?nolink&400 }} Удостовериться в том, что процедуры и функции попали в бекап просто - загляните в файл бекапа *.sql - поиск по "procedure", "function". Если все на месте - поздравляю, бекап успешен. ===== Работа с консолью ===== Экспорт хранимых процедур и функций включается параметром "routines", например: [root@localhost sql]# mysqldump --routines --extended-insert -uroot -pdemo mikbill > backup_with_routines.sql Если же база уже перенесена, и не хватает лишь переноса хранимых функций и процедур, можно воспользоваться командой: [root@localhost sql]# mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt -uroot -pdemo mikbill > only_routines.sql Импорт в базу на новом сервере/восстановление бекапа можно осуществить так: [root@localhost sql]# mysql -uroot -pdemo mikbill < backup_with_routines.sql Импорт только процедур и функций: [root@localhost sql]# mysql -uroot -pdemo mikbill < only_routines.sql ===== "Ремонт" Mysql для чайников ===== [[sysadmin:mysql_fix|]]