В статье будут рассмотрены параметры, отвечающие за ведение логов, их формат и прочие опции логгирования.
Тестовый стенд: mysql 5.5.19
В статье будут рассмотрены параметры, отвечающие за ведение логов, их формат и прочие опции логгирования.
Тестовый стенд: mysql 5.5.19
Описывать настройку репликации, здесь не буду, так как в интернете полно разных описаний. Здесь расскажу о некоторых тонкостях и аспектах работы репликации. То есть о тех вещах, о которых обычно умалчивают авторы при написании статей о репликациях.
Вот собственно запрос:
SELECT table_schema "database_name", sum( data_length + index_length )/1024/1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema;
Вывод будет в такой форме
+--------------------+----------------------+ | database_name | Data Base Size in MB | +--------------------+----------------------+ | information_schema | 0.00878906 | | mysql | 0.61256504 | | performance_schema | 0.00000000 | | stephensmedia | 8.15625000 | | tutology | 3.56811810 | +--------------------+----------------------+ 5 rows in set (0.04 sec)
Такую ошибку мы получим, если захотим указать в конфиге параметры master-хоста (host, user, pass) для репликации. А как же быть?
Оказывается, теперь это нужно делать только в консоле. То есть так:
mysql>CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl', MASTER_PASSWORD='slavepass';
ну и потом
mysql>START SLAVE;
Эти значения сохраняются и после рестарта сервера.
ПС, В документации, кстати, ничего не сказано, что теперь опции в конфиге deprecated, а просто дано описание, как это нужно указывать через консоль.
Программа mysqld_multi предназначена для управления несколькими процессами mysqld, работающих на различных сокетах Unix и портах TCP/IP.
Программа будет искать группу(группы) [mysqld#] в `my.cnf’ (или заданную(ые) при помощи –config-file=…), где # -любое положительное число, начиная с 1. Эти группы должны быть такими же, как и обычная группа [mysqld] (например содержать опции для mysqld; см. в руководстве более подробную информацию), но с такими портом, сокетом и т.д., которые требуются для каждого отдельного процесса mysqld. Номер в имени группы имеет другую функцию; он может использоваться для запуска или остановки некоторых конкретных серверов mysqld в этой программе или для создания отчетов. В данном разделе представлена дополнительная информация об использовании и опциях mysqld_multi.
В Mysql появился новый тип таблиц FEDERATED. Этот тип таблиц предназначен для обращения к удаленным таблицам как к локальным. Он позволяет хранить данные в удаленных таблицах, расположенных на другой машине сети. Во время создания таблицы в локальной директории данных mysql/data создается только файл определения структуры таблицы с расширением frm, никаких других файлов не создается, т.к. все данные хранятся на удаленной машине.
Случилась такая беда: при переносе дампа базы с одного сервера на другой, значения одной из колонок полностью не перенеслись (перенеслось только 150 значений из 3500). Заливать дамп заново – не вариант, так как в базу после дампа уже внесены изменения. Выход один – только переносить колонку значений и потом UPDAT’ить в новой базе.
В статье будет рассмотрено несколько рекомендаций по тюнингу и улучшении работы mysql. Замечу сразу, что численные значения для каждого сервера будут свои (подбираются путём экспериментов) и простое бездумное копирование, может не только ничего не дать, но и напротив – ухудшить производительность.
Всё нужно бэкапить, в том числе и mysql. Но как это делать правильнее всего?
Многие предложат утилиту mysqldump, но она блокирует таблицу на время создания дампа (для InnoDB это можно обойти, использовав параметр –single-transaction в утилите mysqldump), соответственно в это время нельзя будет внести никакие данные в эту таблицу. Да и время на создания дампа уходит много. Если для вас это не критично, можете использовать эту утилиту.
А если же критично? Что тогда?
Mysql может работать в нескольких режимах: соединение по порту и через unix сокет. Рассмотрим преимущества и недостатки обеих методов.