Это звучит как работа особого типа топологии репликации MySQL
Топология, которую я имею в виду, называется «Мастер распространения», которая взята со страниц 368–370 книги. Высокопроизводительный MySQL: оптимизация, резервное копирование, репликация и многое другое в подзаголовке «Мастер, Мастер Распределения и Рабы ".
Вам понадобится следующее
1 БД Главный сервер
1 Мастер распределения БД (известный как / dev / null Slave или Blackhole Slave)
Независимо от количества ведомых БД
НАСТРОЙКА DB MASTER
- Установить MySQL 5.1.x
- Убедитесь, что /etc/my.cnf
Сервер-ID = 1
лог-бен = MySQL-бен
истекают-журналы-дней = 14
по умолчанию-storgae двигатель = InnoDB
- Запуск MySQL
- RESET MASTER; (Очистить двоичные журналы от DB Master)
- Загрузка данных в мастер
- GRANT SELECT, РЕБЛИКАЦИЯ РАБОТАЕТ НА . TO репликатору @ '%', ОПРЕДЕЛЯЕМОМУ 'repl-password';
НАСТРОЙКА МАСТЕРА РАСПРЕДЕЛЕНИЯ БД
- Установить MySQL 5.1.x
- Убедитесь, что /etc/my.cnf
Сервер-ID = 2
лог-бен = MySQL-бен
истекают-журналы-дней = 14
по умолчанию, для хранения двигатель = BLACKHOLE
пропуск InnoDB
- Запуск MySQL
- CHANGE MASTER TO MASTER_HOST = 'IP-адрес Мастера БД', MASTER_PORT = 3306, MASTER_USER = 'репликатор', MASTER_PASSWORD = 'пароль repl-пароля', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 106 *
- НАЧАТЬ РАБА;
- GRANT SELECT, РЕБЛИКАЦИЯ РАБОТАЕТ НА . TO репликатору @ '%', идентифицированному 'repl-password';
- Для каждой таблицы, которая отсутствует в базе данных information_schema и отсутствует в базе данных mysql, преобразуйте каждую таблицу в механизм хранения BLACKHOLE следующим образом: ALTER TABLE tblname ENGINE = BLACKHOLE;
- RESET MASTER; (Очистить двоичные журналы от мастера распространения БД)
НАСТРОЙКА РАБОВ DB
- Установить MySQL 5.1.x
- Убедитесь, что /etc/my.cnf
Сервер-ID = 3
по умолчанию, при хранении двигателя = InnoDB
- Запуск MySQL
- CHANGE MASTER TO MASTER_HOST = 'IP-адрес Мастера БД', MASTER_PORT = 3306, MASTER_USER = 'репликатор', MASTER_PASSWORD = 'пароль repl-пароля', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 106 *
- НАЧАТЬ РАБА; (пусть репликация наверстает, проверьте SHOW SLAVE STATUS \ G)
- ОСТАНОВИТЬ РАБА;
- CHANGE MASTER TO MASTER_HOST = 'IP-адрес мастера распространения базы данных', MASTER_PORT = 3306, MASTER_USER = 'replicator', MASTER_PASSWORD = 'repl-password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS 1097 *
- НАЧАТЬ РАБА;
Целью этой установки является, чтобы DB Master обрабатывал только SQL, предназначенный только для DB Master. SQL, который должен быть реплицирован на ведомые БД, обрабатывается мастером распределения БД. Это облегчит работу DB Master, обрабатывающего передачу SQL в Slave; это становится обязанностью Мастера по распределению БД. Все ведомые устройства считывают изменения SQL с мастера распределения БД, а не с мастера БД.
Хотя я не полностью понимаю ваше приложение, эта топология должна должным образом поддерживать одну центральную базу данных и несколько ведомых считывающих устройств без ввода-вывода, ограничивающего центральную базу данных. Ваше приложение должно организовывать ВСТАВКИ, ОБНОВЛЕНИЯ и УДАЛЕНИЯ в клиентскую базу данных, если каждый ноутбук обрабатывает уникальный набор клиентов, отличных от других ноутбуков и отличных от них.
CAVEAT
Возможно, вам придется провести серьезное тестирование на ведомых БД, чтобы убедиться, что данные не исчезают из-за настройки BLACKHOLE. Если это произойдет, попробуйте удалить default-storage-engine = BLACKHOLE и перезагрузить все.
Будущие вопросы такого рода следует задавать на dba.stackexchange.com