BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 27 апр 2024, 16:04

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: mysql replication fail
СообщениеДобавлено: 20 мар 2013, 11:41 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
1) К нам обратились с проблемой что на слейве не работает создание тепмовых таблиц(в нашем коде такой происходит ) . Дали вот такой пример
Код:
1.
Так создает -
==============================================
create temporary table Bor_tmp like contract
Statement executed - no rows updated - 96ms
==============================================

2.
так не создает
==============================================
create temporary table Bor_tmp select * from contract
SQL Error [1142] [42000]: INSERT command denied to user 'bill-repl'@'10.10.10.2' for table 'Bor_tmp'
==============================================

и даже так не создает (эта выборка не возвращает строк)
==============================================
create temporary table Bor_tmp select * from contract c where c.title = 'z'
SQL Error [1142] [42000]: INSERT command denied to user 'bill-repl'@'10.10.10.2' for table 'Bor_tmp'
==============================================



2) В нашей документации написано
Цитата:
Для каждого приложения биллинга реплики указываются отдельно в *.properties файле, что позволяет регулировать использование реплик различными приложениями. Необходимо проконтролировать, чтобы пользователь <user> имел права только на SELECT и CREATE TEMPORARY TABLES в реплике. Также хорошим вариантом является выдача полного набора прав с установкой опции --read_only=1 при старте сервера MySQL (либо установка этой же опции в my.cnf файле).


3) В
Причем в документации Mysql написано что так и должно быть
Цитата:
Before MySQL 5.6.3, other operations on a temporary table, such as INSERT, UPDATE, or SELECT, require additional privileges for those operations for the database containing the temporary table, or for the nontemporary table of the same name. To keep privileges for temporary and nontemporary tables separate, a common workaround for this situation is to create a database dedicated to the use of temporary tables. Then for that database, a user can be granted the CREATE TEMPORARY TABLES privilege, along with any other privileges required for temporary table operations done by that user."

Смысл получается такой - Для записи в темповые таблицы нужны права insert и т.п. Как решение проблемы - надо это делать в отдельной базе(чисто для темовых таблиц) и на нее давать права insert и т.п. С 5.6.3 типа все нормально, но это достаточно свежая версия.

4) Я попробовал у себя(версия 5.5.29). Вначале с правами SELECT и CREATE TEMPORARY TABLES без read_only.
Цитата:
mysql> show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only | OFF |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show grants for current_user;
+-----------------------------------------------------------------------------------------------------+
| Grants for test@% |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT SELECT, CREATE TEMPORARY TABLES ON `bgbilling`.* TO 'test'@'%' |
+-----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> create temporary table test11 like contract;
Query OK, 0 rows affected (0.03 sec)

mysql> create temporary table test22 select * from contract;
ERROR 1142 (42000): INSERT command denied to user 'test'@'localhost' for table 'test22'
mysql>



Потом с read_only
Цитата:
mysql> show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only | ON |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show grants for current_user;
+-------------------------------------------------------------------------------------------------------------+
| Grants for bill@localhost |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'bill'@'localhost' IDENTIFIED BY PASSWORD '*5CFAA65DE2C8101B4E2C0DB8F362A603B6B57209' |
| GRANT ALL PRIVILEGES ON `bgbilling`.* TO 'bill'@'localhost' |
+-------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> create temporary table test33 like contract;
Query OK, 0 rows affected (0.04 sec)

mysql> create temporary table test44 select * from contract;
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement
mysql>



Т.е не работает

5) На моей памяти в helpdesk к нам обращались несколько раз подобной проблемой .И было 2 случая
a) Было неверно настроены права , мы кидали ссылку на нашу доку и проблема решалась .
б) Был косяк в коде , вместо темповой таюлицы мы создавали обычную(забывали слово TEMPORARY) .Выкладывали обновление, проблема решалась.

6) Вопрос - у всех так же не работает ? Как вариант может оно раньше работало , а потом mysql поправил логику (причем для всех версии сразу ) . Или вообще никогда не работало . Но как могло так получится - я не понимаю пока .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 20 мар 2013, 13:01 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
У меня работает.
Версия 5.1.46-log.

Код:
mysql> show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'version';
+---------------+------------+
| Variable_name | Value      |
+---------------+------------+
| version       | 5.1.46-log |
+---------------+------------+
1 row in set (0.00 sec)

mysql> show grants for current_user;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for bill@localhost                                                                                                                                                                                                 |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'bill'@'localhost' IDENTIFIED BY PASSWORD '*5CFAA65DE2C8101B4E2C0DB8F362A603B6B57209' WITH GRANT OPTION                                                                                    |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `bgbilling`.* TO 'bill'@'localhost' |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.01 sec)

mysql> create temporary table test33 like contract;
Query OK, 0 rows affected (0.18 sec)

mysql> create temporary table test44 select * from contract;
Query OK, 9999 rows affected (0.97 sec)
Records: 9999  Duplicates: 0  Warnings: 0



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 21 мар 2013, 10:22 
Не в сети
Клиент

Зарегистрирован: 12 фев 2007, 18:49
Сообщения: 335
Карма: 15
А INSERT где? Весь цимес именно в нем...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 21 мар 2013, 10:35 
Не в сети
Клиент

Зарегистрирован: 25 дек 2012, 11:08
Сообщения: 5
Карма: 0
Добрый день

show variables like 'version';
version 5.5.29-0ubuntu0.12.04.2

show grants for current_user
GRANT ALL PRIVILEGES ON *.* TO 'Bor'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `Bor_test`.* TO 'Bor'@'localhost'

set global read_only = 'ON'

show global variables like 'read_only'
read_only ON

create temporary table tmp10 like NewTable
Выражение выполнено - данные не менялись - 31мс

create temporary table tmp11 select * from NewTable
4 строк изменено - 63мс

Но в 'обычную' таблицу тоже пишет
insert into NewTable(column1,column2) values(1,2)
1 строк изменено - 11мс


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 21 мар 2013, 11:50 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Bor писал(а):
Добрый день

show variables like 'version';
version 5.5.29-0ubuntu0.12.04.2

show grants for current_user
GRANT ALL PRIVILEGES ON *.* TO 'Bor'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `Bor_test`.* TO 'Bor'@'localhost'

set global read_only = 'ON'

show global variables like 'read_only'
read_only ON

create temporary table tmp10 like NewTable
Выражение выполнено - данные не менялись - 31мс

create temporary table tmp11 select * from NewTable
4 строк изменено - 63мс

Но в 'обычную' таблицу тоже пишет
insert into NewTable(column1,column2) values(1,2)
1 строк изменено - 11мс


Наверное если просто переключить не работает, попробуйте поставить опцию read_only в конфигурации и перезагрузите сервер. Явно об этом не описано вроде, но везде вроде упоминается что он должен стартануть с этой опцией .
http://dev.mysql.com/doc/refman/5.6/en/ ... tance.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 21 мар 2013, 14:06 
Не в сети
Клиент

Зарегистрирован: 25 дек 2012, 11:08
Сообщения: 5
Карма: 0
Совсем странно -
прописал в конфиге read_only = on,
рестартовал сервер,
убедился через 'show global variables like '%read_only%'' что этот режим в самом деле установлен
но 'insert into NewTable(column1,column2) values(3,4)' выполняется без ошибок


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 22 мар 2013, 06:00 
Не в сети
Клиент

Зарегистрирован: 25 дек 2012, 11:08
Сообщения: 5
Карма: 0
С read_only разобрался. Запись в БД не блокировалась т.к. работал из-под root-а (забыл перелогиниться в спешке).
Но легче не стало. Режим read_only не позволяет выполнять 'create temporary table x select * from y'

Cromeshnic подскажите как сделали.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 22 мар 2013, 07:07 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Никак не делал.
Полагаю, дело в версии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 22 мар 2013, 11:49 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
т.е. в 5.1 всё типа работает?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 22 мар 2013, 17:44 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Код:
mysql> show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | OFF   |
+---------------+-------+
1 row in set (0,00 sec)
Код:
mysql> show variables like 'version';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| version       | 5.6.10 |
+---------------+--------+
1 row in set (0,00 sec)
Код:
mysql> show grants for current_user;
+--------------------------------------------------------------------------------------------------------------+
| Grants for dimon@localhost                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dimon'@'localhost' IDENTIFIED BY PASSWORD '*F2B84A8E2ABDC51109BAED451917A9412A5ABEE2' |
| GRANT SELECT, CREATE TEMPORARY TABLES ON `bgbilling`.* TO 'dimon'@'localhost'                                |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0,01 sec)
Код:
mysql> create temporary table test33 like contract;
Query OK, 0 rows affected (0,07 sec)
Код:
mysql> create temporary table test44 select * from contract;
Query OK, 0 rows affected (0,06 sec)
Records: 0  Duplicates: 0  Warnings: 0
Код:
mysql> create table test55;
ERROR 1142 (42000): CREATE command denied to user 'dimon'@'localhost' for table 'test55'

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 22 мар 2013, 17:55 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Код:
show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | ON    |
+---------------+-------+
1 row in set (0,00 sec)
Код:
mysql> show variables like 'version';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| version       | 5.6.10 |
+---------------+--------+
1 row in set (0,00 sec)
Код:
mysql> show grants for current_user;
+--------------------------------------------------------------------------------------------------------------+
| Grants for dimon@localhost                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dimon'@'localhost' IDENTIFIED BY PASSWORD '*F2B84A8E2ABDC51109BAED451917A9412A5ABEE2' |
| GRANT ALL PRIVILEGES ON `bgbilling`.* TO 'dimon'@'localhost'                                                 |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0,00 sec)
Код:
mysql> create temporary table test77 like contract;
Query OK, 0 rows affected (0,05 sec)
Код:
mysql> create temporary table test88 select * from contract;
Query OK, 0 rows affected (0,05 sec)
Records: 0  Duplicates: 0  Warnings: 0
Код:
mysql> create table test99;
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 25 мар 2013, 14:41 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Код:
mysql> show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | OFF   |
+---------------+-------+
1 row in set (0.00 sec)
Код:
mysql> show variables like 'version';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| version       | 5.1.68 |
+---------------+--------+
1 row in set (0.01 sec)
Код:
mysql> show grants for current_user;
+--------------------------------------------------------------------------------------------------------------+
| Grants for dimon@localhost                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dimon'@'localhost' IDENTIFIED BY PASSWORD '*F2B84A8E2ABDC51109BAED451917A9412A5ABEE2' |
| GRANT SELECT, CREATE TEMPORARY TABLES ON `bgbilling`.* TO 'dimon'@'localhost'                                |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Код:
mysql> show grants for dimon;
+------------------------------------------------------------------------------------------------------+
| Grants for dimon@%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dimon'@'%' IDENTIFIED BY PASSWORD '*F2B84A8E2ABDC51109BAED451917A9412A5ABEE2' |
| GRANT SELECT, CREATE TEMPORARY TABLES ON `bgbilling`.* TO 'dimon'@'%'                                |
+------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Код:
mysql> create table test12;
ERROR 1142 (42000): CREATE command denied to user 'dimon'@'localhost' for table 'test12'
Код:
mysql> create temporary table test11 select * from contract;
ERROR 1142 (42000): INSERT command denied to user 'dimon'@'localhost' for table 'test11'

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 25 мар 2013, 14:55 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Код:
mysql> show grants for dimon;
+------------------------------------------------------------------------------------------------------+
| Grants for dimon@%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dimon'@'%' IDENTIFIED BY PASSWORD '*F2B84A8E2ABDC51109BAED451917A9412A5ABEE2' |
| GRANT ALL PRIVILEGES ON `bgbilling`.* TO 'dimon'@'%'                                                 |
+------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Код:
mysql> show grants for current_user;
+--------------------------------------------------------------------------------------------------------------+
| Grants for dimon@localhost                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dimon'@'localhost' IDENTIFIED BY PASSWORD '*F2B84A8E2ABDC51109BAED451917A9412A5ABEE2' |
| GRANT ALL PRIVILEGES ON `bgbilling`.* TO 'dimon'@'localhost'                                                 |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Код:
mysql> show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | ON    |
+---------------+-------+
1 row in set (0.00 sec)
Код:
mysql> show variables like 'version';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| version       | 5.1.68 |
+---------------+--------+
1 row in set (0.00 sec)
Код:
mysql> create temporary table test16 like contract;
Query OK, 0 rows affected (0.00 sec)
Код:
mysql> create temporary table test14 select * from contract;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
Код:
mysql> create table test15;
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 27 мар 2013, 13:53 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Итак итог на текущий момент такой .
1. Версия 5.1
1.a . С правами SELECT, CREATE TEMPORARY : НЕ работает .
1.б . С readonly + все права: работает .

2. Версия 5.5
2.a . С правами SELECT, CREATE TEMPORARY : НЕ работает .
2.б . С readonly + все права: НЕ работает .

3. Версия 5.6.10( > 5.6.3)
3.a . С правами SELECT, CREATE TEMPORARY : работает .
3.б . С readonly + все права: работает .

про read_only написано так
Цитата:
read_only does not apply to TEMPORARY tables, nor does it prevent the server from inserting rows into the log tables


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 27 мар 2013, 14:55 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Запостил к ним в багзилу про read_only
http://bugs.mysql.com/bug.php?id=68791& ... 2&notify=3


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 10 апр 2013, 11:37 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Как вариант решения проблемы пока для версий > 5.1 и < 5.6.3 Это сделать как советует официальная документация. Создавать отдельную базу для создания темповых таблиц со всеми правами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 10 апр 2013, 15:05 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
stark писал(а):
Создавать отдельную базу для создания темповых таблиц со всеми правами.

IMHO это самое оптимальное, т.к. в таком случае временные таблицы при классическом дампе в него не попадут, а при работе в режиме репликации это снимет все вопросы.
В БГБ есть механизм работы с "мусорной" базой - расскажите как можно вынести _все_ временные таблицы в мусорную базу?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 10 апр 2013, 15:33 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
snark писал(а):
stark писал(а):
Создавать отдельную базу для создания темповых таблиц со всеми правами.

IMHO это самое оптимальное, т.к. в таком случае временные таблицы при классическом дампе в него не попадут, а при работе в режиме репликации это снимет все вопросы.
В БГБ есть механизм работы с "мусорной" базой - расскажите как можно вынести _все_ временные таблицы в мусорную базу?

Все временные, это которые создаются ежемесячно? Я ЗА

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 10 апр 2013, 15:38 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
snark писал(а):
stark писал(а):
Создавать отдельную базу для создания темповых таблиц со всеми правами.

IMHO это самое оптимальное, т.к. в таком случае временные таблицы при классическом дампе в него не попадут, а при работе в режиме репликации это снимет все вопросы.
В БГБ есть механизм работы с "мусорной" базой - расскажите как можно вынести _все_ временные таблицы в мусорную базу?


что такое временные таблицы ? Это темповые ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 10 апр 2013, 16:31 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Да, прежде всего темповые, но если есть вариант выноса из основной базы БГБ всевозможных таблиц с логами работы скриптов, логами RADIUS-а (запросы), логи действий админов и т.п., т.е. те таблицы, в которых нет ничего важного/обязательного - было бы тоже очень и очень не плохо.
Под важным/обязательным я понимаю:
- таблицы с деньгами (приходы/расходы/наработки/т.п.) - это, надеюсь, понятно
- таблицы с сессииями, т.к. оператор обязан в течении min 3-х лет сохранять данные о сессиях (старт/стоп/адрес/объем услуги)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 27 ноя 2013, 12:00 
Не в сети

Зарегистрирован: 28 окт 2008, 11:59
Сообщения: 50
Карма: 0
На данный момент с версией mysql 5.5 и slave базой scheduler ругается на запись в таблички:
_npay_debet_status_manage_locker_sub_account_3
и др. связанные с периодическими задачами.

BGBilling Сервер: вер. 5.1 сборка 859 от 17.10.2013 15:13:39

Есть ли возможность перенести эти таблички в trash базу?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail
СообщениеДобавлено: 27 ноя 2013, 17:27 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
romero писал(а):
mysql 5.5

Используйте либо 5.1 либо 5.6.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail (CRM)
СообщениеДобавлено: 03 дек 2013, 14:22 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
Хм, я правильно понял - что данная проблема имеет место , только если используется вот эта возможность ?
:
http://www.bgbilling.ru/v6.0/doc/ch01s24s02.html

Если приложения БЖБ ничего не знают о slave-базах и обращаются только к основной ( master ) базе, то прав
пользователя-репликатора :
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'IpOfSlave' IDENTIFIED BY 'password';
для обычной maste-slave репликации базы БЖБ вполне достаточно ?

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail (CRM)
СообщениеДобавлено: 03 дек 2013, 15:01 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
Я почему так озаботился этим вопросом, потому-что возможна такая гипотетическая ситуация :

1. в мастер базе выполняется CREATE TEMPORARY TABLE, при sbr она попадает в binary_log.
2. На слейве она попадает в Relay_Log
3. Slave эту директиву выполняет
4. Начинает заполнять эту таблицу в результате соотв. SELECTа

Но если представить что между шагами 3 и 4 делается STOP SLAVE для деланья backupa, то становится
ясно, что при новом старте SLAVE заполнять данными уже будет нечего, так как временная таблица на слейве испарилась.

Поэтому , перед "правильным " стопорением слейва придётся гемороиться с
STOP SLAVE SQL_THREAD, SHOW STATUS и чеканьем переменной Slave_open_temp_tables
, либо переходить на репликацию с binlog_format=ROW, что увеличит размер логов в разы.

ВСё же самым реальным и правельным со стороны разработчиков было бы создание таких таблиц в отдельной базе, которая не попадает в репликацию.
Дабы не появлялось таких весёлых требований с к версии мускула типа - "(5.6.10 < рекомендуемая версия мускула )||(5.1 > рекомендуемая версия мускула)".
Тем более, что в well_known дистрах типа Centos или Debian ставить мускул 5.6 из "сырцов" ( а на сегодня это единственный путь ) - не кузяво для широких масс
потенциальных клиентов БЖБ.

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail (CRM)
СообщениеДобавлено: 03 дек 2013, 15:52 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
сама по себе репликация тут непричём.
проблема в попытке биллинга создавать темповые таблицы в слейв базе и невозможностью mysql 5.5 это сделать если он настроен как положено (нет прав на запись)

по второму вопросу непонятно: если темповая таблица создаётся в мастер-базе, то с чего оно будет делать селект из слейва? имхо, вообще надуманная проблема.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail (CRM)
СообщениеДобавлено: 03 дек 2013, 15:59 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Цитата:
Тем более, что в well_known дистрах типа Centos или Debian ставить мускул 5.6 из "сырцов" ( а на сегодня это единственный путь ) - не кузяво для широких масс
потенциальных клиентов БЖБ.
а что, в well_known дистрах не комильфо собирать пакеты или ставить готовые?
http://dev.mysql.com/doc/refman/5.6/en/ ... n-rpm.html
итд, ну и всяко всякие готовые есть.

вообще это идеологический вопрос - у нас нет утверждённого решения что надо делать и вообще надо ли делать что-то с этой проблемой.
лично я против горождения костылей ради исправления явного недочёта определённой версии mysql, которое уже давным-давно исправлено в новых версиях, тока потому что кому-то в определённых дистрах некузяво озаботиться и поставить нужную версию mysql. в любом случае ведь это явно быстрее и проще чем поставить и настроить сам биллинг, имхо.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail (CRM)
СообщениеДобавлено: 03 дек 2013, 16:45 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
ok-2004 писал(а):
Хм, я правильно понял - что данная проблема имеет место , только если используется вот эта возможность ?
:
http://www.bgbilling.ru/v6.0/doc/ch01s24s02.html



Да


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail (CRM)
СообщениеДобавлено: 03 дек 2013, 18:16 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
2 DimOn:
Цитата:
сама по себе репликация тут непричём.
проблема в попытке биллинга создавать темповые таблицы в слейв базе и невозможностью mysql 5.5 это сделать если он настроен как положено (нет прав на запись)

Да, репликация может и не причём, но я же не знаю всей логики работы с временными таблицами в БЖБ!
Если их создание нужно толко для выборок с целью репортов - это одна сторона медали, а если через создание временных таблиц апдейтятся другие постоянные таблицы - вот это уже другой коленкор...

Мой вопрос даже не про permissions для юзера-репликатора, а просто про эти вот дела :
Тыц 1: http://dba.stackexchange.com/questions/ ... n-reliable ( OBSERVATION #1 )
Тыц 2: http://dev.mysql.com/doc/refman/5.5/en/ ... ables.html ( Safe slave shutdown when using temporary tables )

Спасибо незабвенному stark, по его положительному ответу я понял , что репликация временных таблиц не критична, а так как у меня к базе на slave-е никто из приложений БЖБ не обращается- я могу со спокойной совестью забить на проблемы с read_only на mysql 5.5. и не переходить с SBR на RBR.

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail (CRM)
СообщениеДобавлено: 03 дек 2013, 18:23 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Цитата:
Да, репликация может и не причём, но я же не знаю всей логики работы с временными таблицами в БЖБ!
Если их создание нужно толко для выборок с целью репортов - это одна сторона медали, а если через создание временных таблиц апдейтятся другие постоянные таблицы - вот это уже другой коленкор...

Каждый код имеет коннекшен-мастер или коннекшен-слейв (если слейв не настроен то коннекшен на него указывает на мастер).
В нём же и создаются временные таблицы. Если какой-то экшен или таск работает со слейвом (иногда он не знает об этом) то там и делает его запрос-создание темповой.

Да, есть пара мест, кажется, где на основании сформированой таблицы делаются апдейты в основные таблицы.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mysql replication fail (CRM)
СообщениеДобавлено: 03 дек 2013, 18:37 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
Цитата:
Да, есть пара мест, кажется, где на основании сформированой таблицы делаются апдейты в основные таблицы.

Значит, придётся бэкапить слейв по "горячему" .

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.231s | 78 Queries | GZIP : On ]