РОЗСЛІВАТИ
Якщо ваші раби не є господарями, то рабам взагалі не потрібен бінарний журнал. Ви можете поставити обмеження на кількість простору журналу ретрансляції, накопичене веденим. Для того, relay_log_space_limit
щоб заглушити релейні журнали на 4G, додайте в /etc/my/.cnf на кожному підлеглому
[mysqld]
relay_log_space_limit=4G
і перезапустити mysql
Якщо ви не можете встановити це, принаймні у вас повинно бути якесь попередження, яке робить SHOW SLAVE STATUS\G
і перевіряє значення Relay_Log_Space
(загальний байт, споживаний журналами ретрансляції).
МАЙСТЕР
Що стосується Майстра, ви можете встановити expire_logs_days
значення 1, але для мене є суворе попередження ...
Якщо реплікація перервана, у вас є 1 день, щоб виправити це. В іншому випадку бінарний журнал Master може обертатися і ви не можете виконати жодну команду CHANGE MASTER TO, щоб перевстановити реплікацію. Я б пішов expire_logs_days
о 3 на Майстра.
ПРЕДЛОЖЕННЯ №1
Якщо у вас є якась об'ємна обробка за ніч, можливо, слід запустити масові процеси на Майстрі з SET SQL_LOG_BIN=0;
на початку сесії. Це, звичайно, не буде повторюватися на Раба. Ви можете виконати однакове насипне навантаження паралельно обом рабами.
ПРЕДЛОЖЕННЯ №2
Ще одна річ, яку ви могли зробити для управління накопиченням бінарних журналів - це це.
Бігайте SHOW SLAVE STATUS\G
на обох Рабів. Погляньте Relay_Master_Log_File
. Це являє собою двійковий журнал головного господаря, остання команда якого була виконана на підлеглому.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.4.92.250
Master_User: replicant
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.009677
Read_Master_Log_Pos: 855227755
Relay_Log_File: relay-bin.000674
Relay_Log_Pos: 757296783
Relay_Master_Log_File: mysql-bin.009590
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 757296646
Relay_Log_Space: 94274010765
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 80561
1 row in set (0.00 sec)
У цьому прикладі Relay_Master_Log_File є mysql-bin.009590. Усі бінарні журнали перед цим можна видалити з Master. Ви можете запустити це на Майстрі:
PURGE BINARY LOGS TO 'mysql-bin.009590';
Це видалить старі журнали та залишить реплікацію в такт.
КАВАТИ
Бінарні журнали - це файли, які послідовно компілюють (як-от черга FIFO) усіх завершених транзакцій SQL у вигляді оператора SQL або зміни рядка. Журнал ретрансляції - це файл, який збирає записи бінарного журналу з віддаленого сервера (він же Master).
У реплікації MySQL
- Мастер повинен увімкнути свої двійкові журнали
- Раб компілює ретрансляційні журнали
- Коли весь SQL в журналі ретрансляції обробляється, він видаляється
- На підлеглому, коли на сервері БД є більше одного журналу ретрансляції, це може означати, що реплікація відстає, оскільки потік IO збирає SQL від Master швидше, щоб потік SQL міг обробляти журнали ретрансляції.
- Використання relay_log_space_limit запобігає згубленню реплікації та потенційному заповненню диска. Журнали ретрансляції обертаються на основі правила №3
- Можливо, для сервера БД можуть бути як Master, так і Slave. Це єдина обставина, за якої Раб повинен увімкнути бінарні журнали. У цьому сценарії на сервері БД будуть як бінарні, так і журнали ретрансляцій.
Якщо ви перебуваєте в невідомості для раба, і хочете зробити його господарем
- сервіс mysql зупинка
- Додати
log-bin=mysql-bin
в /etc/my.cnf на підлеглому
- служба запуску mysql
Вам доведеться налаштувати реплікацію інших Невільників на щойно просунутого Мастера та переконатися, що дані на Рабі збігаються з щойно просунутим Мастером
ОНОВЛЕННЯ 2012-08-13 17:47 EDT
Відповідно до опції Документація MySQLrelay-log
, ви повинні визначити її. Ось чому:
У зв'язку з тим, як MySQL аналізує параметри сервера, якщо ви вказуєте цей параметр, ви повинні надати значення; базове ім'я за замовчуванням використовується лише в тому випадку, якщо параметр фактично не вказаний. Якщо ви використовуєте параметр --relay-log, не вказуючи значення, можлива несподівана поведінка; ця поведінка залежить від інших використовуваних параметрів, порядку, у якому вони вказані, та того, чи вказані вони в командному рядку чи у файлі опцій. Для отримання додаткової інформації про те, як MySQL обробляє параметри сервера, див розділ 4.2.3, "Вказівки параметрів програми".