Mysql
 sql >> база данни >  >> RDS >> Mysql

Което е най-добрият начин за двупосочно синхронизиране на динамични данни в реално време с помощта на mysql

Няма много производителност, която може да се получи от репликирането на вашата база данни на два главни. Въпреки това, ако кодирате приложението си правилно, има страхотна грешка.

Настройката Master-Master по същество е същата като настройката Slave-Master, но има стартирани и двете подчинени устройства и важна промяна във вашите конфигурационни файлове във всяка кутия.

Master MySQL 1:

auto_increment_increment = 2
auto_increment_offset = 1 

Master MySQL 2:

auto_increment_increment = 2
auto_increment_offset = 2

Тези два параметъра гарантират, че когато два сървъра се борят за първичен ключ по някаква причина, те не се дублират и не убиват репликацията. Вместо да нараства с 1, всяко поле за автоматично нарастване по подразбиране ще се увеличава с 2. В едно поле то ще започне отместване от 1 и ще стартира последователността 1 3 5 7 9 11 13 и т.н. Във второто поле ще започне отместване с 2 и бягайте по 2 4 6 8 10 12 и т.н. От текущото тестване изглежда, че автоматичното нарастване приема следващото свободно число, а не това, което е останало преди.
Напр. Ако сървър 1 вмъкне първите 3 записа (1 3 и 5), когато сървър 2 вмъкне четвъртия, ще му бъде даден ключът 6 (а не 2, който остава неизползван).

След като го настроите, стартирайте и двете като подчинени.
След това, за да проверите дали и двете работят добре, свържете се с двете машини и изпълнете командата SHOW SLAVE STATUS и трябва да отбележите, че и двете Slave_IO_Running и Slave_SQL_Running трябва ли и двамата да кажат „ДА“ на всяка кутия.

След това, разбира се, създайте няколко записа в таблица и се уверете, че едно поле вмъква само нечетни номерирани първични ключове, а другото увеличава само четни.

След това направете всички тестове, за да се уверите, че можете да изпълнявате всички стандартни приложения на всяка кутия, като тя се копира в другата.

Това е сравнително лесно, след като започне.
Но както беше споменато, MySQL го обезкуражава и ви съветва да се уверите, че имате предвид тази функционалност, когато пишете кода на приложението си.

Редактиране: Предполагам, че теоретично е възможно да добавите още главни, ако се уверите, че изместванията са правилни и т.н. Може по-реалистично да добавите допълнителни подчинени устройства.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се открие нулева стойност от JSON_EXTRACT

  2. MAX() – Намерете максималната стойност в колона в MySQL

  3. Как да намеря най-голямата таблица в MySQL база данни?

  4. Симулирайте функцията на забавяне в MySQL

  5. Може ли външният ключ да действа като първичен ключ?