http://www.joomla3x.ru/joomla3-templates.html - joomla 3 шаблоны

MySQL

Все о MySQL

Обслуживание таблиц в MariaDB

Автор: GAMER вкл. .

myisamchk --recover tbl_name (для MyIsam-таблиц)
aria_chk --recover tbl_name (только для MariaDB)
aria_chk --recover *.MAI (для всех таблиц в базе)
aria_chk --recover */*.MAI (для всех таблиц во всех базах)

Как оказалось, для того, чтобы проверить все таблицы в базе, нужно стартовать с рабочего общего каталога
(например /var/db/mysql). При этом синтакисис такой: aria_chk --recover dbname/*.MAI (для всех таблиц в базе dbname)

Можно и так:
mysqlcheck -uUSER -pPASSWORD  --repair --extended dbname. Мне этот способ больше понравился, востановил лучше.
mysqlcheck -uUSER -pPASSWORD  --repair --extended -A. Востанавливает таблицы во всех базах.
Но это, если тип MyIsam или Aria.

REPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
Восстановление таблиц данных. При некорректном выключении сервера в файлы таблиц может записаться неправильная информация.
Команда предназначена для восстановления таблиц базы при аппаратных сбоях.
"Параметр" может быть:
EXTENDED — восстанавливает данные и индексы таблиц;
QUICK — восстанавливает только индексы;
USE_FRM — при этом таблицы данных будут восстановлены исходя из файлов форматов таблиц базы данных.
Помогает восстановить частично поврежденные таблицы, насколько это возможно.
ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ...
Анализ таблиц.
CHECK TABLE tbl_name [, tbl_name] ... [option] ... option = {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
Выполняет проверку физической целостности таблиц.
"Параметр" представляет собой одно из значений (в порядке уменьшения эффективности применения):
EXTENDED — более медленная, но и более эффективная проверка таблиц;
MEDIUM — проверка физических ошибок и контрольных сумм таблиц. Считается по умолчанию, если не задан никакой параметр вообще;
CHANGED — проверить таблицы, изменившиеся после последней проверки (или некорректно закрытые);
FAST — быстрая проверка таблиц, которые закрыты нормально;
QUICK — проверка индексов.

OPTIMIZE TABLE table_name (OPTIMIZE TABLES table_1 ... table_n)
Оптимизировать таблицу — значит, сжать ее, то есть физически освободить файл таблицы от удаленных данных.

Заметил такую проблему. Остановил сервер Машки и запустил aria_chk --recover dbname/*.MAI

Потом при проверке таблицы вижу: Table is from another system and must be zerofilled or repaired to be usable on this system

Пришлось востанавливать через запросы.

 

Многое взял здесь: http://hostinfo.ru/articles/488

Журнал общих запросов Mysql general_log_file

Автор: GAMER вкл. .

Журнал содержит информацию о подключениях клиентов, запросах и другого рода событиях. Это файл очень полезен для отладки, оптимизации систем.

# С помощью этого запроса можно увидеть состояние системных переменных.
mysql> show variables
where Variable_name in ('version', 'log', 'general_log', 'general_log_file', 'log_output');
+------------------+---------------------------------------+
| Variable_name    | Value                                 |
+------------------+---------------------------------------+
| general_log      | OFF |
| general_log_file | /usr/local/mysql/data/datacharmer.log |
| log              | OFF |
| log_output       | FILE                                  |
| version          | 5.1.25-rc-community-log               |
+------------------+---------------------------------------+
# Показать значения всех переменных для логов, плюс и медленные запросы
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'log%'
OR Variable_name LIKE 'general_log%'
OR Variable_name LIKE 'long%' OR Variable_name LIKE '%slow%'
OR Variable_name = 'version' ;
 

Параметр log_output может принимать значения: FILE или TABLE. Возможность вести журнал событий в таблице появилась с MySQL 5.1.

Изменить значения переменных можно как в файлах конфигурации my.cnf так и напрямую, например:

mysql> SET GLOBAL general_log_file='/tmp/mysql/general.log';
mysql> SET GLOBAL general_log=ON;
# Переключение на таблицу
mysql> set global log_output='TABLE';
# Запросы из таблицы
mysql> select count(*) from mysql.general_log;
# Очищаем таблицу логов
mysql> truncate mysql.general_log;
# Включение журналирования одновременно как в таблицу, так и в файл
mysql> set global log_output='TABLE,FILE';
# Выключение журналирования и очищения таблицы
mysql> set sql_log_off=0;
mysql> truncate mysql.general_log;
 
 

Пользователи в MySQL

Автор: GAMER вкл. .

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY [PASSWORD] 'password']
[, user_name [IDENTIFIED BY 'password'] ...]
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER cipher [AND]]
[ISSUER issuer [AND]]
[SUBJECT subject]]
[WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |
MAX_UPDATES_PER_HOUR # |
MAX_CONNECTIONS_PER_HOUR #]]
REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON {tbl_name | * | *.* | db_name.*}
FROM user_name [, user_name ...]

В таблице приведен список возможных значений параметра priv_type для операторов GRANT и REVOKE:

ALL [PRIVILEGES] Задает все простые привилегии, кроме WITH GRANT OPTION
ALTER Разрешает использование ALTER TABLE
CREATE Разрешает использование CREATE TABLE
CREATE TEMPORARY TABLES Разрешает использование CREATE TEMPORARY TABLE
DELETE Разрешает использование DELETE
DROP Разрешает использование DROP TABLE
EXECUTE Разрешает пользователю запускать хранимые процедуры (для MySQL 5.0)
FILE Разрешает использование SELECT ... INTO OUTFILE и LOAD DATA INFILE
INDEX Разрешает использование CREATE INDEX and DROP INDEX
INSERT Разрешает использование INSERT
LOCK TABLES Разрешает использование LOCK TABLES на таблицах, для которых есть привилегия SELECT
PROCESS Разрешает использование SHOW FULL PROCESSLIST
REFERENCES Зарезервировано для использования в будущем
RELOAD Разрешает использование FLUSH
REPLICATION CLIENT Предоставляет пользователю право запрашивать местонахождение головного и подчиненных серверов
REPLICATION SLAVE Необходимо для подчиненных серверов при репликации (для чтения информации из бинарных журналов головного сервера)
SELECT Разрешает использование SELECT
SHOW DATABASES SHOW DATABASES выводит все базы данных
SHUTDOWN Разрешает использование mysqladmin shutdown
SUPER Позволяет установить одно соединение (один раз), даже если достигнуто значение max_connections, и запускать команды CHANGE MASTER, KILL thread, mysqladmin debug, PURGE MASTER LOGS и SET GLOBAL
UPDATE Разрешает использование UPDATE
USAGE Синоним для ``без привилегий''
GRANT OPTION Синоним для WITH GRANT OPTION

Значение USAGE можно задавать, если необходимо создать пользователя без привилегий.

Примеры:

GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'some_pass' WITH GRANT OPTION; - добавляет пользователю monty, который подключается с localhost с паролем some_pass все привилегии во всех базах и таблицах с возможностью создавать привилегии другим пользователям.

Если работа с пользователями проходила через запросы к служебным таблицам, то нужно сделать FLUSH PRIVILEGES;

Взято с мануала MySQL.

 

Чтобы дать права на базу данных cуществующему пользователю:

GRANT ALL PRIVILEGES ON `<база данных>`.* TO `<имя пользователя>`@`%` WITH GRANT OPTION;

FLUSH PRIVILEGES;

Чтобы забрать у пользователя право доступа к базе данных с любых ip-адресов и дать только локальный доступ:

REVOKE USAGE ON `<база данных>`.* FROM `<имя пользователя>`@`%`;

FLUSH PRIVILEGES;

GRANT USAGE ON `<база данных>`.* TO `<имя пользователя>`@`localhost`;

FLUSH PRIVILEGES;

Подключение плагинов-engine в MariaDB

Автор: GAMER вкл. .

 По умолчанию плагин для работы с InnoDB не установлен, так же как и SphinxSE. В MariaDB Innodb заменен более производительным XtraDB от Percona.

 

Устанавливаем через обычного клиента mysql:

% mysql -uroot -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.2.4-MariaDB Source distribution

This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> INSTALL PLUGIN innodb SONAME 'ha_xtradb.so';
Query OK, 0 rows affected (0.45 sec)

MariaDB [(none)]> show engines;
+------------+---------+--------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                                                          | Transactions | XA   | Savepoints |
+------------+---------+--------------------------------------------------------------------------------------------------+--------------+------+------------+
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance                                           | NO           | NO   | NO         |
| InnoDB     | YES     | XtraDB engine based on InnoDB plugin. Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| CSV        | YES     | CSV storage engine                                                                               | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables                                        | NO           | NO   | NO         |
| Aria       | YES     | Crash-safe tables with MyISAM heritage                                                           | YES          | NO   | NO         |
| SPHINX     | YES     | Sphinx storage engine 0.9.9                                                                      | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                                                            | NO           | NO   | NO         |
+------------+---------+--------------------------------------------------------------------------------------------------+--------------+------+------------+

Информация получена с форума

http://forum.lissyara.su/viewtopic.php?f=52&t=29633&start=25

от пользователя lanak.

Примечание: если сервер стоит на Windows, то пишем так:

INSTALL PLUGIN sphinx SONAME 'ha_sphinx.dll';

Иногда, с помощью запросов установить плагин не удается в силу разных причин. Тогда можно дописать сторки в конфигурацию сервера:

  • my.ini (Windows) [mysqld] section
ignore_builtin_innodb
plugin-load=innodb=ha_innodb_plugin.dll;
innodb_trx=ha_innodb_plugin.dll;
innodb_locks=ha_innodb_plugin.dll;
innodb_lock_waits=ha_innodb_plugin.dll;
innodb_cmp=ha_innodb_plugin.dll;
innodb_cmp_reset=ha_innodb_plugin.dll;
innodb_cmpmem=ha_innodb_plugin.dll;
innodb_cmpmem_reset=ha_innodb_plugin.dll

 

  • my.cnf (Linux/Solaris) [mysqld] section
ignore_builtin_innodb
plugin-load=innodb=ha_innodb_plugin.so;
innodb_trx=ha_innodb_plugin.so;
innodb_locks=ha_innodb_plugin.so;
innodb_lock_waits=ha_innodb_plugin.so;
innodb_cmp=ha_innodb_plugin.so;
innodb_cmp_reset=ha_innodb_plugin.so;
innodb_cmpmem=ha_innodb_plugin.so;
innodb_cmpmem_reset=ha_innodb_plugin.so


You can find more details about the plugin installation and general information at the official MySQL documentation.

Информацию взято с:

http://sourceforge.net/apps/mediawiki/easyrec/index.php?title=InnoDB_settings