Мне было поручено создать экземпляр MySQL для разработки. В настоящее время у нас есть кластер Xtradb с 7 узлами. Есть ли способ оставить этот узел на несколько часов позже или не разрешить репликацию обратно в остальную часть кластера? Я бы хотел, чтобы он обновлялся с других узлов, но не разрешал репликацию обратно.
Меня беспокоит, что кто-то уронит стол или сделает что-то не очень чистое, и кластер упадет.
любые идеи будут очень признательны!
Просто подключите сервер разработки с использованием обычной репликации, а не присоединяйтесь к кластеру. Стандартная репликация односторонняя (если вы не настроили ее с обеих сторон). Ваш сервер разработки будет вытаскивать бинлоги от мастера, от которого он подчиняется. Это все, что происходит между экземпляром разработчика и вашим кластером.
Я не думаю, что есть простой способ сделать это с узлом, который на самом деле является частью кластера. Весь смысл кластера в том, чтобы данные не рассинхронизировались.
Если вы настроены сделать это с помощью задержки репликации, взгляните на pt-slave-delay если у вас 5.5 или ниже. Если у вас 5.6, то функциональность уже встроена.
То, как я это сделал бы, вообще не предполагало репликации. Вы должны делать правильные резервные копии (я фанат Percona Xtrabackup), то вы можете просто восстановить эту резервную копию на своем экземпляре разработчика. Делайте все, что хотите, а затем снова восстанавливайте.
Выполнение этого посредством репликации вызовет у вас больше ошибок, чем вы, вероятно, захотите исправить. Если кто-то создает таблицу отбрасывания на хосте разработчика, репликация просто сломается, когда в следующий раз основной кластер попытается обновить этот файл. Вам нужно будет войти вручную, чтобы перезапустить его (или запустить сценарий, который сделает это за вас).