Jump to content
Local
oberon85

Синхронизация mysql

Recommended Posts

Приветствую. 

 

Есть 2 базы mysql, структура одинаковая, нужно изменения базы "А" дописывать в базу "Б". Изменения будут вноситься в обоих базах. Можно ли реализовать это штатными средствами mysql? Может есть какая-то хитрая опция mysqldump, никак не могу придумать.

Share this post


Link to post
Share on other sites

это ужасная практика на mysql делать master-master репликацию.

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

Share this post


Link to post
Share on other sites

Galera Cluster

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Репликация со схемой мастер-мастер и использовать автоинкемент. Все реализуется стандартными средствами мускула. Если придерживаться стандартных рекомендаций - никаких веселостей не предвидится.

Edited by Goblin

Share this post


Link to post
Share on other sites

Почитал я почитал, оптимально решение не нашел.

Как мне кажется проще написать скрипт которым и буду дописывать нужные данные.

Share this post


Link to post
Share on other sites

если есть возможность разделения чтения и записи -  тогда самая банальная мульти сорс репликация. (появилась в 5.7, работает из коробки)  пишем в базу А и Б читаем из Ц, которая является консолидированным хранилищем 

Share this post


Link to post
Share on other sites

 

 

Если придерживаться стандартных рекомендаций - никаких веселостей не предвидится.

Ровно до тех пор пока БД используется сугубо как реляционное хранилище данных в проекте, не предусматривающем каких-либо сложных атомарных операций над данными. Т.е. блог - прекрасно, форум - отлично, а вот тот же биллинг, где нужно выдать уникальный адрес из пула - тут уже печальнее (хотя можно ессно для каждого адреса делать свою сущность, и выбирать рандомно первую незанятую), а начисление бонусов по сложной формуле к примеру (которую нельзя упихать в скл запрос) - это вообще сливай воду. По причине того, что в мультимастере с асинхронной репликацией глобальных локов в принципе нет - лок на второй мастер не распространяется...

Share this post


Link to post
Share on other sites

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

Используйте галеру, после развала собирается все само.

Сейчас эксплуатируем крупный проект, так даже вопреки рекомендациям ноды расположены в разных ДЦ. За год пока, никаких проблем не возникло.

P.S. Правда юзаем мариадб, 400-500 запросов в сек

Edited by masters

Share this post


Link to post
Share on other sites

галера умеет сделать лок на таблицу на обеих мастерах? ну чтобы не плясать с бубном, перепиливая код?

 

вообще - мастер-слйэв надежнее...

Share this post


Link to post
Share on other sites

Можна заюзати Percona XtraDB Cluster (на базі MySQL 5.6 і Galera plugin).

Але для коректної роботи Master-Master реплікації треба мати хоча б 3 сервера в кластері (для того щоб уникнути split-brain і recovery після падіння серверів було безболісним).

https://www.percona.com/doc/percona-xtradb-cluster/5.6/index.html

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Oleg2018
      При переносе биллинга на новый сервер сделал восстановоление базы строго по инструкции. Все данные получил. Пользователи работают. Но есть проблема, при создание копии базы через вебинтерфейс создается файл с размер 100 килобайт. База при переносе занимала 18 мегабайт. При проверке целосности базы нашел проблему из представлением op_customers выдает ошибку  #1449 - The user specified as a definer ('root'@'%') does not exist. Кто решал и как эту проблему
    • By superb
      Ребята, нужна помощь админа. После пропадания електричество перестал стартовать mysql на билинге абилс. Система freebsd 7.2. Пишите в личку сразу номер телефона, будет быстрее. Хорошо отблагодарю, спасибо.
    • By freehost
      Описание вакансии
      На постоянную работу в хостинг-компанию требуется сотрудник на первую линию службы технической поддержки. Офис расположен в Киеве.
       
      Обязанности:
      Отвечать на вопросы клиентов (работа с панелью управления, настройка POP3, SMTP, FTP) по телефону, эл. почте, решать мелкие проблемы (неверно заполненные данные и настройки в контрольной панели, проблемы с доступом и т. п.), сортировка заявок абонентов.
       
      Требования:
      - Умение работать в Интернет с основными клиентами (браузеры: IE и Mozilla, почтовые клиенты: The bat, outlook, FTP-клиенты: IE, Far, Cute FTP;
      - Иметь представление о том что такое HTML, PHP, MySQL
      - Скорость печати на клавиатуре не ниже 100 знаков в в минуту
      - Грамотное владение русским и украинским языком
      - Коммуникабельность, терпение, эмоциональная уравновешенность, способность к обучению.
      - Желание учиться
       
      Условия:
      Официальное трудоустройство
      24 дня отпуска
      Обеды за счет компании
      Рабочий график с 9 до 18 с понедельника по пятницу
      Оплачиваемый больничный
      Возможность повышения
       
      ЗП от 8 000. Пишите в личку.
    • By mac
      Естественно, ip сети и города - разные, версии Ubilling - одинаковые.
      Собственно, как это сделать максимально просто и безопасно?
       
      То, до чего сам додумался - это использовать "Модуль Миграция 2"
      Для это планирую сделать экспорт нужных полей из базы данных с помощью запроса


      По sql запросу вопрос прежде всего к уважаемому nightfly : оттуда ли (таблицы, поля) я беру значения?
    • By strushke
      Всем пламенный привет! Соскучились? 
      Вот вам новый вселенский вопрос каким образом из модуля делать INSERT запрос?
       
      При помощи simple_queryall плюётся вот таким сообщением:
      Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /usr/local/www/apache24/data/billing/api/libs/api.mysql.php on line 235
       
      При этом, данные добавляет.
       
      Кусок:
      $addExpenseQuery = "INSERT INTO expenses (date,summ,comment) VALUES (CURRENT_DATE(),'$addExpAmount','$addExpComment')"; $query_result = simple_queryall($addExpenseQuery);  
×