Читайте также: |
|
1. Завершите работу MySQL на головном сервере (пусть это будет сервер, который слушает порт 3306):
mysqladmin -u root shutdown
2. В my.ini на головном сервере добавьте записи к разделу [mysqld] записи log-bin и server-id=уникальный номер к разделу [mysqld] и перезапустите сервер.
Очень важно, чтобы ID подчиненного сервера отличался от ID головного сервера.
Можно считать, что server-id играет роль IP-адреса - он уникально идентифицирует сервер среди участников репликации:
[mysqld]
log-bin=C:/data_2/log/master-log.bin
server-id=1
Чтобы MySQL корректно запустился папка C:/data_2/log/ уже должна быть создана.
3. Перезапустите MySQL на головном сервере командой:
C:\ws\mysql\bin\mysqld --defaults-file=C:\ws\mysql\my.ini
Если в пути к mysqld присутствуют пробелы (например, MySQL установлен в папке Program Files), то тогда путь к my.ini записывается в двойных кавычках:
mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 5.5\my.ini"
Также в директорию с MySQL тоже можно переместиться заблаговременно, выполнив команду:
cd C:\Program Files\MySQL\MySQL Server 5.5\bin
4. Чтобы проверить что репликация работает нужно запустить команды:
mysql -u root
Появится приглашение для ввода:
mysql>
После этого нужно выполнить команду:
show master status \G
В результате на экране появится:
*************************** 1. row ***************************
File: home-a719be1647-bin.000001
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.03 sec)
5. Добавьте в my2.ini (C:\ws\mysql\my2.ini) на подчиненном сервере следующий фрагмент:
# некоторое уникальное число между 2 и 2^32-1 для текущего сервера
server-id=2
Значения server-id должны быть различными на каждом сервере, участвующем в репликации.
Если значение server-id не определено, оно будет установлено в 1, если также не определено значение master-host, оно будет установлено в 2. Обратите внимание, что если значение server-id опущено, то головной сервер будет отказывать в соединении всем подчиненным серверам, а подчиненный сервер - отказывать в соединении головному серверу.
Таким образом, опускать установку значения server-id можно лишь в случае резервного копирования с использованием двоичного журнала.
6. Коннектимся к MySQL SLAVE серверу (выполнить в консоли WINDOWS):
mysql -u root -P 3308
И после этого запускаем команду:
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PASSWORD='', MASTER_LOG_FILE='master-log.000001', MASTER_LOG_POS=1546;
Если после запуска этой команды появилась ошибка:
ERROR 1198 (HY000): This operation cannot be performed with a running slave; run: STOP SLAVE first
Это значит необходимо выполнить команду «STOP SLAVE» (без кавычек) и опять запустить команду CHANGE MASTER.
И перезапускаем SLAVE:
START SLAVE;
При этом значения MASTER_LOG_FILE и MASTER_LOG_POS должны быть взяты из команды show master status \G (см. описание выше в пункте 4) которая возвращает текущее название двоичного лога и его позиции на стороне мастера.
7. Проверяем работу SLAVE сервера:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-log.000001
Read_Master_Log_Pos: 2128
Relay_Log_File: home-a719be1647-relay-bin.000002
Relay_Log_Pos: 836
Relay_Master_Log_File: master-log.000001
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: 2128
Relay_Log_Space: 1002
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
Если получаем вот такую таблицу, значит все хорошо, если в первой строке отличная от "Waiting for master to send event" значит что-то пошло не так. Все, master-slave репликация настроена и готова к работе.
ВАРИАНТ ЗАДАНИЯ И ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Используя методику, описанную в приложении, создать простой HTTP + MySQL сервер и реализовать репликацию. Вариант таблицы, кол-во SLAVE серверов и номера портов для SLAVE серверов приведены в таблице ниже:
№ | Название таблицы | Кол-во SLAVE серверов | Номера портов SLAVE серверов |
articles (id, title, price) | 3307 3308 | ||
blogs (id, title, posts_count) | 3310 3311 3312 | ||
cities (id, title, short_code) | 3308 3309 | ||
countries (id, title, area) | 3311 3312 3313 | ||
feedbacks (id, title, body, email) | 3307 3308 | ||
news (id, title, body, created) | 3310 3311 3312 | ||
parameters (id, code, value) | 3308 3309 | ||
sessions (id, created, expired) | 3311 3312 3313 | ||
transactions (id, amount, created) | 3307 3308 | ||
users (id, first_name, last_name, email) | 3310 3311 3312 |
Содержание отчета
Отчет должен содержать следующие пункты:
- постановка задачи;
- тексты программ с комментариями;
- состояния MASTER и SLAVE серверов до и после запуска NODE JS программы.
- выводы.
Контрольные вопросы
1. Что такое репликация?
2. Какие виды репликации существуют?
Дата добавления: 2015-10-02; просмотров: 141 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Несколько MySQL серверов на одной WINDOWS машине | | | Пример реализации репликации в MYSQL |