forum.bitel.ru
http://forum.bitel.ru/

mysql replication fail (CRM)
http://forum.bitel.ru/viewtopic.php?f=19&t=7853
Страница 1 из 2

Автор:  stark [ 20 мар 2013, 11:41 ]
Заголовок сообщения:  mysql replication fail

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 поправил логику (причем для всех версии сразу ) . Или вообще никогда не работало . Но как могло так получится - я не понимаю пока .

Автор:  Cromeshnic [ 20 мар 2013, 13:01 ]
Заголовок сообщения:  Re: mysql replication fail

У меня работает.
Версия 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


Автор:  Victor [ 21 мар 2013, 10:22 ]
Заголовок сообщения:  Re: mysql replication fail

А INSERT где? Весь цимес именно в нем...

Автор:  Bor [ 21 мар 2013, 10:35 ]
Заголовок сообщения:  Re: mysql replication fail

Добрый день

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мс

Автор:  stark [ 21 мар 2013, 11:50 ]
Заголовок сообщения:  Re: mysql replication fail

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

Автор:  Bor [ 21 мар 2013, 14:06 ]
Заголовок сообщения:  Re: mysql replication fail

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

Автор:  Bor [ 22 мар 2013, 06:00 ]
Заголовок сообщения:  Re: mysql replication fail

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

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

Автор:  Cromeshnic [ 22 мар 2013, 07:07 ]
Заголовок сообщения:  Re: mysql replication fail

Никак не делал.
Полагаю, дело в версии.

Автор:  dimOn [ 22 мар 2013, 11:49 ]
Заголовок сообщения:  Re: mysql replication fail

т.е. в 5.1 всё типа работает?

Автор:  dimOn [ 22 мар 2013, 17:44 ]
Заголовок сообщения:  Re: mysql replication fail

Код:
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'

Автор:  dimOn [ 22 мар 2013, 17:55 ]
Заголовок сообщения:  Re: mysql replication fail

Код:
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

Автор:  dimOn [ 25 мар 2013, 14:41 ]
Заголовок сообщения:  Re: mysql replication fail

Код:
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'

Автор:  dimOn [ 25 мар 2013, 14:55 ]
Заголовок сообщения:  Re: mysql replication fail

Код:
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

Автор:  stark [ 27 мар 2013, 13:53 ]
Заголовок сообщения:  Re: mysql replication fail

Итак итог на текущий момент такой .
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

Автор:  stark [ 27 мар 2013, 14:55 ]
Заголовок сообщения:  Re: mysql replication fail

Запостил к ним в багзилу про read_only
http://bugs.mysql.com/bug.php?id=68791& ... 2&notify=3

Автор:  stark [ 10 апр 2013, 11:37 ]
Заголовок сообщения:  Re: mysql replication fail

Как вариант решения проблемы пока для версий > 5.1 и < 5.6.3 Это сделать как советует официальная документация. Создавать отдельную базу для создания темповых таблиц со всеми правами.

Автор:  snark [ 10 апр 2013, 15:05 ]
Заголовок сообщения:  Re: mysql replication fail

stark писал(а):
Создавать отдельную базу для создания темповых таблиц со всеми правами.

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

Автор:  skyb [ 10 апр 2013, 15:33 ]
Заголовок сообщения:  Re: mysql replication fail

snark писал(а):
stark писал(а):
Создавать отдельную базу для создания темповых таблиц со всеми правами.

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

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

Автор:  stark [ 10 апр 2013, 15:38 ]
Заголовок сообщения:  Re: mysql replication fail

snark писал(а):
stark писал(а):
Создавать отдельную базу для создания темповых таблиц со всеми правами.

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


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

Автор:  snark [ 10 апр 2013, 16:31 ]
Заголовок сообщения:  Re: mysql replication fail

Да, прежде всего темповые, но если есть вариант выноса из основной базы БГБ всевозможных таблиц с логами работы скриптов, логами RADIUS-а (запросы), логи действий админов и т.п., т.е. те таблицы, в которых нет ничего важного/обязательного - было бы тоже очень и очень не плохо.
Под важным/обязательным я понимаю:
- таблицы с деньгами (приходы/расходы/наработки/т.п.) - это, надеюсь, понятно
- таблицы с сессииями, т.к. оператор обязан в течении min 3-х лет сохранять данные о сессиях (старт/стоп/адрес/объем услуги)

Автор:  romero [ 27 ноя 2013, 12:00 ]
Заголовок сообщения:  Re: mysql replication fail

На данный момент с версией mysql 5.5 и slave базой scheduler ругается на запись в таблички:
_npay_debet_status_manage_locker_sub_account_3
и др. связанные с периодическими задачами.

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

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

Автор:  snark [ 27 ноя 2013, 17:27 ]
Заголовок сообщения:  Re: mysql replication fail

romero писал(а):
mysql 5.5

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

Автор:  ok-2004 [ 03 дек 2013, 14:22 ]
Заголовок сообщения:  Re: mysql replication fail (CRM)

Хм, я правильно понял - что данная проблема имеет место , только если используется вот эта возможность ?
:
http://www.bgbilling.ru/v6.0/doc/ch01s24s02.html

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

Автор:  ok-2004 [ 03 дек 2013, 15:01 ]
Заголовок сообщения:  Re: mysql replication fail (CRM)

Я почему так озаботился этим вопросом, потому-что возможна такая гипотетическая ситуация :

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 из "сырцов" ( а на сегодня это единственный путь ) - не кузяво для широких масс
потенциальных клиентов БЖБ.

Автор:  dimOn [ 03 дек 2013, 15:52 ]
Заголовок сообщения:  Re: mysql replication fail (CRM)

сама по себе репликация тут непричём.
проблема в попытке биллинга создавать темповые таблицы в слейв базе и невозможностью mysql 5.5 это сделать если он настроен как положено (нет прав на запись)

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

Автор:  dimOn [ 03 дек 2013, 15:59 ]
Заголовок сообщения:  Re: mysql replication fail (CRM)

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

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

Автор:  stark [ 03 дек 2013, 16:45 ]
Заголовок сообщения:  Re: mysql replication fail (CRM)

ok-2004 писал(а):
Хм, я правильно понял - что данная проблема имеет место , только если используется вот эта возможность ?
:
http://www.bgbilling.ru/v6.0/doc/ch01s24s02.html



Да

Автор:  ok-2004 [ 03 дек 2013, 18:16 ]
Заголовок сообщения:  Re: mysql replication fail (CRM)

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.

Автор:  dimOn [ 03 дек 2013, 18:23 ]
Заголовок сообщения:  Re: mysql replication fail (CRM)

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

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

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

Автор:  ok-2004 [ 03 дек 2013, 18:37 ]
Заголовок сообщения:  Re: mysql replication fail (CRM)

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

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

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/