Spec-Zone .ru
спецификации, руководства, описания, API
|
MySQL Cluster поддерживает распределение пользователей MySQL и полномочий через все узлы SQL в MySQL Cluster. Эта поддержка не включается по умолчанию; следует следовать за процедурой, обрисованной в общих чертах в этом разделе, чтобы сделать так.
Обычно, каждый MySQL пользовательские таблицы полномочия сервера в mysql
база
данных должна использовать MyISAM
механизм хранения, что означает, что учетная запись пользователя и ее связанные полномочия, создаваемые на одном
узле SQL, не доступны на других узлах SQL кластера. Файл SQL ndb_dist_priv.sql
предоставляется MySQL Cluster NDB 7.3 распределениям. Этот файл может быть найден в share
каталог в каталоге установки MySQL.
Первый шаг во включении распределенным полномочиям должен загрузить этот сценарий в MySQL Server, который
функционирует как узел SQL (к которому мы обращаемся после этого как целевой узел SQL
или MySQL Server). Можно сделать это, выполняя следующую команду от системной оболочки на целевом узле SQL после
изменения на его каталог установки MySQL (где options
стенды для любых
дополнительных опций должны были соединиться с этим узлом SQL):
shell> mysql options
-uroot < share/ndb_dist_priv.sql
Импорт ndb_dist_priv.sql
создает много сохраненных подпрограмм (шесть хранимых
процедур и одна сохраненная функция) в mysql
база данных на целевом узле SQL. После
соединения с узлом SQL в mysql
клиенте (как MySQL root
пользователь), можно проверить, что они создавались как
показано здесь:
mysql>SELECT ROUTINE_NAME, ROUTINE_SCHEMA, ROUTINE_TYPE
->FROM INFORMATION_SCHEMA.ROUTINES
->WHERE ROUTINE_NAME LIKE 'mysql_cluster%'
->ORDER BY ROUTINE_TYPE
;+---------------------------------------------+----------------+--------------+| ROUTINE_NAME | ROUTINE_SCHEMA | ROUTINE_TYPE |+---------------------------------------------+----------------+--------------+| mysql_cluster_privileges_are_distributed | mysql | FUNCTION || mysql_cluster_backup_privileges | mysql | PROCEDURE || mysql_cluster_move_grant_tables | mysql | PROCEDURE || mysql_cluster_move_privileges | mysql | PROCEDURE || mysql_cluster_restore_local_privileges | mysql | PROCEDURE || mysql_cluster_restore_privileges | mysql | PROCEDURE || mysql_cluster_restore_privileges_from_local | mysql | PROCEDURE |+---------------------------------------------+----------------+--------------+7 rows in set (0.01 sec)
Хранимую процедуру называют mysql_cluster_move_privileges
создает резервные копии
существующих таблиц полномочия, затем преобразовывает их в NDB
. Два набора копий создаются в mysql
база
данных:
Ряд локальных копий, которые используют MyISAM
механизм хранения, и названный, добавляя суффикс _backup
к исходным именам таблиц полномочия.
Ряд распределенных копий (использование NDBCLUSTER
). Эти таблицы называют, снабжая префиксом ndb_
и добавление _backup
к именам исходных
таблиц.
Хотя исходные таблицы полномочия поддерживаются автоматически, это всегда - хорошая идея создать резервные копии вручную существующих таблиц полномочия на всех узлах SQL, на которые влияют, перед продолжением. Можно сделать это использование mysqldump способом, подобным тому, что показывают здесь:
shell> mysqldumpoptions
-uroot \ mysql host user db tables_priv columns_priv procs_priv proxies_priv >backup_file
Чтобы выполнить преобразование, Вы должны быть соединены с целевым узлом SQL, используя mysql клиент (снова, как MySQL root
пользователь). Вызовите хранимую процедуру как это:
mysql> CALL
mysql.mysql_cluster_move_privileges();
Query OK, 0 rows affected (22.32 sec)
В зависимости от числа строк в таблицах полномочия эта процедура может занять время, чтобы выполниться. Если
некоторые из таблиц полномочия пусты, нельзя видеть одни или более данных - нулевые строки выбранные, выбранные, или обработанные
предупреждения когда mysql_cluster_move_privileges
возвраты. В таких случаях могут
быть безопасно проигнорированы предупреждения. Чтобы проверить, что преобразование было успешно, можно
использовать сохраненную функцию mysql_cluster_privileges_are_distributed
как
показано здесь:
mysql>SELECT CONCAT(
->'Conversion ',
->IF(mysql.mysql_cluster_privileges_are_distributed(), 'succeeded', 'failed'),
->'.')
->AS Result;
+-----------------------+| Result |+-----------------------+| Conversion succeeded. |+-----------------------+1 row in set (0.00 sec)
mysql_cluster_privileges_are_distributed
проверки на существование распределенных
таблиц полномочия и возвраты 1
если все таблицы полномочия распределяются; иначе,
это возвращается 0
.
Можно проверить, что резервные копии были созданы, используя запрос, такой как этот:
mysql>SELECT TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES
->WHERE TABLE_SCHEMA = 'mysql' AND TABLE_NAME LIKE '%backup'
->ORDER BY ENGINE;
+-------------------------+------------+| TABLE_NAME | ENGINE |+-------------------------+------------+| host_backup | MyISAM || db_backup | MyISAM || columns_priv_backup | MyISAM || user_backup | MyISAM || tables_priv_backup | MyISAM || proxies_priv_backup | MyISAM || procs_priv_backup | MyISAM || ndb_user_backup | ndbcluster || ndb_tables_priv_backup | ndbcluster || ndb_proxies_priv_backup | ndbcluster || ndb_procs_priv_backup | ndbcluster || ndb_host_backup | ndbcluster || ndb_db_backup | ndbcluster || ndb_columns_priv_backup | ndbcluster |+-------------------------+------------+14 rows in set (0.00 sec)
Как только преобразование в распределенные полномочия было сделано, любое время, учетная запись пользователя MySQL создается, отбрасывается, или обновили ее полномочия на любом узле SQL, изменения сразу вступают в силу на всех других серверах MySQL, присоединенных к кластеру. Как только полномочия распределяются, любой новый MySQL Servers, которые соединяются с кластером автоматически, участвует в распределении.
Все пользовательские полномочия MySQL распределяются через весь соединенный MySQL Servers. Это включает
полномочия, связанные с представлениями и сохраненными подпрограммами. В то время как автоматическое
распределение представлений и сохраненных подпрограмм в настоящий момент не поддерживается, можно попытаться
распределить сохраненные подпрограммы, делая заявление такой как ALTER TABLE mysql.proc ENGINE = NDB
, но следует проверить вручную, что любые
таблицы, на которые ссылаются сохраненные подпрограммы, существуют на всех узлах SQL, так как у MySQL Cluster
нет никакой поддержки в настоящее время выполнения этого автоматически. Нет в настоящий момент никакого способа
распределить представления среди узлов SQL MySQL Cluster, кроме, создавая их вручную на каждом узле SQL. Если Вы
делаете это, следует удостовериться, что все базовые таблицы, на которые ссылаются представления, используют NDB
механизм хранения; иначе, представления, вероятно, отклонятся очень быстро.
Когда узел SQL становится разъединенным от кластера в то время как mysql_cluster_move_privileges
работает, следует отбросить его таблицы полномочия после пересоединения с кластером, используя оператор такой
как DROP
TABLE IF EXISTS mysql.user mysql.db mysql.tables_priv mysql.columns_priv mysql.procs_priv
. Это
заставляет узел SQL использовать совместно используемые таблицы полномочия, а не его собственные локальные
версии их. Это не необходимо, соединяя новый узел SQL с кластером впервые.
В случае начального перезапуска всего кластера (все узлы данных завершают работу, затем запускался снова с --initial
),
совместно используемые таблицы полномочия теряются. Если это происходит, можно восстановить их использующий
исходный целевой узел SQL любой от резервных копий, сделанных mysql_cluster_move_privileges
или от дампа файл создается с mysqldump. Если Вы должны использовать новый MySQL Server,
чтобы выполнить восстановление, следует запустить его с --skip-grant-tables
соединяясь с кластером впервые; после этого можно
восстановить таблицы полномочия локально, затем распределить их снова использование mysql_cluster_move_privileges
.
После восстановления и распределения таблиц, следует перезапустить этот MySQL Server без --skip-grant-tables
опция.
Можно также восстановить распределенные таблицы, используя ndb_restore --restore-privilege-tables
от резервного копирования, сделанного, используя START BACKUP
в ndb_mgm клиенте. ( MyISAM
таблицы, составленные mysql_cluster_move_privileges
не поддерживаются START
BACKUP
команда.) ndb_restore не восстанавливает таблицы полномочия по умолчанию;
--restore-privilege-tables
опция заставляет это делать так.
Приложения, что данные MySQL Cluster доступа непосредственно, включая API NDB и приложения
ClusterJ, не подвергаются системе полномочия MySQL. Это означает, что, как только Вы распределили таблицы
предоставления, к ним могут свободно получить доступ такие приложения, так же, как они могут любой другой NDB
таблицы. В частности следует иметь в виду, что API NDB и приложения ClusterJ могут считать и записать имена пользователей,
имена хоста, хэши пароля, и любое другое содержание распределенных таблиц предоставления без каких-либо
ограничений.