Spec-Zone .ru
спецификации, руководства, описания, API
|
Поскольку InnoDB
плагин демона memcached поддерживает двоичный журнал
MySQL, любые обновления, сделанные на главном сервере через интерфейс memcached, могут быть тиражированы для резервного копирования,
балансируя интенсивные рабочие нагрузки чтения, и высокую доступность. Все memcached
команды поддерживаются для binlogging.
Вы не должны установить InnoDB
плагин memcached на ведомых серверах. В этой
конфигурации основное преимущество увеличивается пропускная способность записи на ведущем устройстве. На
скорость механизма репликации не влияют.
Следующие разделы показывают, как использовать binlog возможность, чтобы использовать InnoDB
плагин memcached наряду с репликацией MySQL. Это предполагает, что
Вы уже сделали основную установку, описанную в Разделе
14.2.9.3, "Начиная с InnoDB Плагин Memcached".
innodb_api_enable_binlog
:
Использовать InnoDB
плагин memcached с двоичным журналом
MySQL, включите innodb_api_enable_binlog
параметр конфигурации на главном
сервере. Во время начальной загрузки сервера может только быть установлена эта опция. Следует
также включить двоичному файлу MySQL, входят в систему главный сервер с --log-bin
опция. Можно добавить эти опции к своему конфигурационному
файлу сервера такой как my.cnf
, или на mysqld командной строке.
mysqld ... --log-bin -–innodb_api_enable_binlog=1
Затем сконфигурируйте свой основной и ведомый сервер, как описано в Разделе 16.1.1, "Как Установить Репликацию".
Используйте mysqldump, чтобы создать основной снимок данных, и синхронизировать его к ведомому серверу.
master shell: mysqldump --all-databases --lock-all-tables > dbdump.dbslave shell: mysql < dbdump.db
На главном сервере, проблеме show master status
получить Основные Двоичные Координаты Журнала:
mysql> show master status;
На ведомом сервере используйте a change master to
оператор, чтобы установить ведомый сервер с вышеупомянутыми координатами:
mysql> CHANGE MASTER TO MASTER_HOST='localhost', MASTER_USER='root', MASTER_PASSWORD='', MASTER_PORT = 13000, MASTER_LOG_FILE='0.000001, MASTER_LOG_POS=114;
Затем запустите ведомое устройство:
mysql> start slave;
Если печатные издания журнала ошибок выводят подобный следующему, ведомое устройство готово к репликации:
111002 18:47:15 [Note] Slave I/O thread: connected to master 'root@localhost:13000',replication started in log '0.000001' at position 114
Чтобы протестировать сервер с вышеупомянутой установкой репликации, мы используем memcached интерфейс telnet, и также запрашиваем основные и ведомые серверы, используя SQL, чтобы проверить результаты.
В нашей конфигурации устанавливают SQL, одну таблицу в качестве примера demo_test
создается в test
база данных для использования memcached.
Мы будем использовать эту таблицу значения по умолчанию для демонстраций:
Использовать set
вставить запись, ключ test1
, значение t1
, и флаг 10
:
telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.set test1 10 0 2t1STORED
В главном сервере можно видеть, что строка вставляется. c1
карты к ключу, c2
карты к значению, c3
флаг, c4
cas
значение, и c5
истечение.
mysql> select * from test.demo_test;
c1 | c2 | c3 | c4 | c5 |
---|---|---|---|---|
test1 | t1 | 10 | 2 | 0 |
1 row in set (0.00 sec)
В ведомом сервере Вы будете видеть, что та же самая запись вставляется репликацией:
mysql> select * from test.demo_test;
c1 | c2 | c3 | c4 | c5 |
---|---|---|---|---|
test1 | t1 | 10 | 2 | 0 |
1 row in set (0.00 sec)
Использовать set
команда, чтобы обновить ключ test1
к новому значению new
:
Connected to 127.0.0.1.Escape character is '^]'.set test1 10 0 3newSTORED
От ведомого сервера обновление тиражируется (заметьте cas
оцените также
обновленный):
mysql> select * from test.demo_test;
c1 | c2 | c3 | c4 | c5 |
---|---|---|---|---|
test1 | новый | 10 | 3 | 0 |
1 row in set (0.00 sec)
Удалите запись с a delete
команда:
Connected to 127.0.0.1.Escape character is '^]'.delete test1DELETED
Когда удаление тиражируется в ведомое устройство, запись на ведомом устройстве также удаляется:
mysql> select * from test.demo_test;Empty set (0.00 sec)
Усеките таблицу с flush_all
команда.
Во-первых, вставьте две записи telnetting к главному серверу:
Connected to 127.0.0.1.Escape character is '^]'set test2 10 0 5againSTOREDset test3 10 0 6again1STORED
В ведомом сервере подтвердите, что эти две записи тиражируются:
mysql> select * from test.demo_test;
c1 | c2 | c3 | c4 | c5 |
---|---|---|---|---|
test2 | снова | 10 | 5 | 0 |
test3 | again1 | 10 | 6 | 0 |
2 rows in set (0.00 sec)
Вызвать flush_all
в telnet взаимодействуют через интерфейс, чтобы усечь таблицу:
Connected to 127.0.0.1.Escape character is '^]'.flush_allOK
Затем проверьте, что работа усечения тиражируется в ведомый сервер:
mysql> select * from test.demo_test;Empty set (0.00 sec)
Все memcached
команды поддерживаются с точки зрения репликации.
Формат Binlog:
Большинство memcached операций
отображается на операторы DML
(аналогичный, чтобы вставить, удалить, обновить). С тех пор нет никакого фактического SQL-оператора,
обрабатываемого сервером MySQL, все memcached команды (за
исключением flush_all
) используйте Построчную репликацию (RBR)
журналирование. Это независимо от любого сервера binlog_format
установка.
memcached flush_all
команда отображается на TRUNCATE
TABLE
команда. Так как команды DDL
могут только использовать основанное на операторе журналирование, это flush_all
команда тиражируется, передаваясь a TRUNCATE TABLE
оператор.
Транзакции:
Понятие транзакций
обычно не было частью memcached приложений. Мы используем
daemon_memcached_r_batch_size
и daemon_memcached_w_batch_size
управлять размером пакета чтения и
транзакции записи для соображений производительности. Эти настройки не влияют на репликацию: каждая
работа SQL на базовой таблице тиражируется прямо после успешного завершения.
Значение по умолчанию daemon_memcached_w_batch_size
1, таким образом, каждая memcached операция записи сразу фиксируется. Эта настройка
по умолчанию подвергается определенному количеству издержек производительности, чтобы избежать любой
несогласованности в данных, видимых на основных и ведомых серверах. Тиражированные записи всегда сразу
будут доступны на ведомом сервере. Если Вы устанавливаете daemon_memcached_w_batch_size
больше чем 1, записи, вставленные или обновленные через интерфейс memcached,
не сразу видимы на главном сервере; просмотреть эти записи на главном сервере прежде, чем они будут
фиксироваться, проблема set transaction isolation level read uncommitted
.