Различия
Показаны различия между двумя версиями страницы.
| linux:mysql:mysql_tnt [2019/03/27 18:32] – внешнее изменение 127.0.0.1 | linux:mysql:mysql_tnt [2021/10/19 16:56] (текущий) – dx | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== MySQL - tips' | ||
| + | {{: | ||
| + | |||
| + | См. также [[linux: | ||
| + | |||
| + | ===== Разное ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * http:// | ||
| + | |||
| + | ===== HowTo - Как сделать xyz? ===== | ||
| + | |||
| + | ==== query_cache_size ==== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | ==== Как выключить query_cache ==== | ||
| + | |||
| + | Недостаточно поставить | ||
| + | |||
| + | < | ||
| + | |||
| + | Для полного отключения [[https:// | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Ротация slow query logs ==== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Пример файла ''/ | ||
| + | |||
| + | < | ||
| + | / | ||
| + | size 1G | ||
| + | dateext | ||
| + | compress | ||
| + | missingok | ||
| + | rotate 20 | ||
| + | notifempty | ||
| + | delaycompress | ||
| + | sharedscripts | ||
| + | nocopytruncate | ||
| + | create 660 mysql mysql | ||
| + | postrotate | ||
| + | / | ||
| + | endscript | ||
| + | rotate 150 | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Дамп utf8mb4 ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | Для старых версий MySQL нужно использовать ключ совместимости | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | my.cnf | ||
| + | |||
| + | < | ||
| + | [client] | ||
| + | default-character-set = utf8mb4 | ||
| + | |||
| + | [mysql] | ||
| + | default-character-set = utf8mb4 | ||
| + | |||
| + | [mysqld] | ||
| + | character-set-client-handshake = FALSE | ||
| + | character-set-server = utf8mb4 | ||
| + | collation-server = utf8mb4_unicode_ci | ||
| + | </ | ||
| + | |||
| + | А вообще читайте [[https:// | ||
| + | |||
| + | ==== wtf 1 2 3 ==== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | ==== Вытащить базу из --all-databases ==== | ||
| + | |||
| + | Достать базу **db_name** если бэкап сделан '' | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Тюнинг MySQL — thread_cache_size ==== | ||
| + | |||
| + | Параметр '' | ||
| + | |||
| + | Этот параметр указывает количество тредов, | ||
| + | |||
| + | Выявить необходимость оптимизации параметра '' | ||
| + | |||
| + | < | ||
| + | |||
| + | Вывод | ||
| + | |||
| + | < | ||
| + | | Threads_cached | ||
| + | | Threads_connected | 28 | | ||
| + | | Threads_created | ||
| + | | Threads_running | ||
| + | </ | ||
| + | |||
| + | Если значение '' | ||
| + | |||
| + | Оптимальное значение '' | ||
| + | |||
| + | Рекомендуется постепенно повышать значение '' | ||
| + | |||
| + | ==== Соответствие версий MySQL-MariaDB ==== | ||
| + | |||
| + | ^ MySQL ^ MariaDB ^ | ||
| + | | 5.5 | 5.5 | | ||
| + | | 5.6 | 10.0/10.1 | | ||
| + | | 5.7 | 10.2 | | ||
| + | |||
| + | Также пригодится | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | **System variables** | ||
| + | ^ Variable ^ MariaDB in Debian ^ Standard MariaDB ^ Notes ^ | ||
| + | | character_set_server | utf8mb4 | latin1 | Debian sets a default character set that can support emojis etc. | | ||
| + | | collation_server | utf8mb4_general_ci | latin1_swedish_ci | | ||
| + | |||
| + | **Options** | ||
| + | ^ Option ^ MariaDB in Debian ^ Standard MariaDB ^ Notes ^ | ||
| + | | plugin-load-add | auth_socket.so | - | Debian enables the UNIX_SOCKET Authentication Plugin plugin by default, allowing passwordless login. | | ||
| + | ==== Как создать ER диаграмму имеющейся базы ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | Подробнее о ER-модели можно почитать [[http:// | ||
| + | |||
| + | Оказывается даже [[http:// | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | Еще есть [[https:// | ||
| + | |||
| + | ==== Как перенести myisam или innodb на другой сервер ==== | ||
| + | |||
| + | * https:// | ||
| + | * http:// | ||
| + | |||
| + | ==== Как изменить размер лога innodb (innodb_log_file_size) ==== | ||
| + | |||
| + | По-умолчанию установлен размер 5 МБ | ||
| + | |||
| + | < | ||
| + | mysql -e "show variables like ' | ||
| + | +----------------------+---------+ | ||
| + | | Variable_name | ||
| + | +----------------------+---------+ | ||
| + | | innodb_log_file_size | 5242880 | | ||
| + | +----------------------+---------+ | ||
| + | </ | ||
| + | |||
| + | Останавливаем MySQL сервер | ||
| + | |||
| + | < | ||
| + | |||
| + | Изменяем/ | ||
| + | |||
| + | < | ||
| + | [mysqld] | ||
| + | innodb_log_file_size = 64M | ||
| + | </ | ||
| + | |||
| + | Переименовываем существующие лог файлы | ||
| + | |||
| + | < | ||
| + | mv / | ||
| + | mv / | ||
| + | </ | ||
| + | |||
| + | Запускаем MySQL сервер | ||
| + | |||
| + | < | ||
| + | |||
| + | Проверяем лог файл | ||
| + | |||
| + | < | ||
| + | # tail -n 100 / | ||
| + | ... | ||
| + | 130730 13: | ||
| + | InnoDB: Setting log file ./ | ||
| + | InnoDB: Database physically writes the file full: wait... | ||
| + | 130730 13: | ||
| + | InnoDB: Setting log file ./ | ||
| + | InnoDB: Database physically writes the file full: wait... | ||
| + | 130730 13:17:37 InnoDB: highest supported file format is Barracuda. | ||
| + | InnoDB: The log sequence number in ibdata files does not match | ||
| + | InnoDB: the log sequence number in the ib_logfiles! | ||
| + | </ | ||
| + | |||
| + | ==== Секретная фича в Percona/ | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | ==== Изменить пароль пользователю ==== | ||
| + | |||
| + | < | ||
| + | $ mysql -h localhost -u root -p | ||
| + | |||
| + | mysql> UPDATE mysql.user SET Password=PASSWORD(‘new_db_password’) WHERE User=’db_user_name’ AND Host=’db_host’; | ||
| + | mysql> FLUSH PRIVILEGES; | ||
| + | mysql> quit; | ||
| + | </ | ||
| + | |||
| + | ==== Max memory usage ==== | ||
| + | |||
| + | Обычно считаюат так: | ||
| + | |||
| + | '' | ||
| + | |||
| + | Более продвинутый вариант: | ||
| + | |||
| + | '' | ||
| + | |||
| + | ==== Как сбросить root пароль для MySQL ==== | ||
| + | |||
| + | https:// | ||
| + | |||
| + | Останавливаем MySQL | ||
| + | |||
| + | < | ||
| + | |||
| + | Запускаем **mysqld_safe** с опцией **--skip-grant-tables** | ||
| + | |||
| + | < | ||
| + | # mysqld_safe --skip-grant-tables & | ||
| + | 140606 13:47:58 mysqld_safe Logging to '/ | ||
| + | 140606 13:47:58 mysqld_safe Starting mysqld daemon with databases from / | ||
| + | 140606 13:47:59 mysqld_safe mysqld from pid file / | ||
| + | </ | ||
| + | |||
| + | Подключаемся к MySQL с правами root. Т.к. MySQL запущен в безопасном режиме, | ||
| + | |||
| + | < | ||
| + | |||
| + | Выбираем базу данных mysql | ||
| + | |||
| + | < | ||
| + | |||
| + | Устанавливаем новый пароль для пользователя root | ||
| + | |||
| + | < | ||
| + | |||
| + | Перезагружаем привилегии | ||
| + | |||
| + | < | ||
| + | |||
| + | Отключаемся от MySQL | ||
| + | |||
| + | < | ||
| + | |||
| + | Останавливаем и вновь запускаем MySQL демон | ||
| + | |||
| + | < | ||
| + | / | ||
| + | или | ||
| + | # ps aufx | grep mysql | awk ' | ||
| + | или | ||
| + | # killall -9 mysqld_safe | ||
| + | </ | ||
| + | |||
| + | ==== Как очистить историю командной строки mysql (~/ | ||
| + | |||
| + | http:// | ||
| + | |||
| + | ==== Логи ==== | ||
| + | |||
| + | Как включить логи в MySQL? | ||
| + | |||
| + | Добавить в ''/ | ||
| + | |||
| + | < | ||
| + | [mysqld] | ||
| + | log-bin | ||
| + | log | ||
| + | log-error | ||
| + | log-slow-queries | ||
| + | </ | ||
| + | |||
| + | Файлы будут созданы автоматически в том же каталоге где лежат сами базы (обычно / | ||
| + | |||
| + | Если нужно указать другой путь к лог файлу | ||
| + | |||
| + | < | ||
| + | [mysqld] | ||
| + | log-bin | ||
| + | log = / | ||
| + | log-error | ||
| + | log-slow-queries = / | ||
| + | </ | ||
| + | |||
| + | Создадим файлы и выставим права | ||
| + | < | ||
| + | # touch / | ||
| + | # chown mysql:mysql / | ||
| + | # touch / | ||
| + | # chown mysql:mysql / | ||
| + | |||
| + | etc... | ||
| + | </ | ||
| + | |||
| + | Проверяем установленные переменные '' | ||
| + | |||
| + | < | ||
| + | |||
| + | Мало кто знает, но есть еще чудесный [[https:// | ||