Научите вас, как создать среду репликации master-slave mysql в системе Windows.

MySQL

задний план

Недавно я учусь использовать Spring Aop для реализации функции разделения чтения и записи базы данных. Прежде чем писать код, в первую очередь необходимо развернуть среду mysql, потому что для достижения разделения чтения и записи необходимо развернуть как минимум два экземпляра mysql, один главный и один подчиненный, причем главный и подчиненный экземпляры могут быть автоматически синхронизированы, потому что моя локальная машина Памяти не много, поэтому планирую собрать master-slave экземпляр mysql прямо на windows (не хочу открывать виртуальную машину), но в процессе столкнулся с некоторыми неприятностями.Хотя в итоге это решилось , это также заняло много времени. Чтобы не тратить время на одно и то же в будущем, а также облегчить читателям копирование одной и той же сцены, я написал этот блог, чтобы зафиксировать процесс настройки окружения.

Описание окружающей среды

Локальный адрес: 127.0.0.1 (локальный хост)

версия mysql: mysql-5.7.28-winx64

Имя службы основной библиотеки: master, порт 3307

Имя службы подчиненной библиотеки: подчиненное устройство, порт 3308

Установите и настройте главный мастер библиотеки

скачать

Первый — загрузить mysql, перейти непосредственно кОфициальный сайтСкачать zip версию инсталляционного пакета.Рекомендуется скачать более новую версию.Например у автора версия 5.7.Это тоже предложение многих великих богов в интернете.

Разархивируйте и создайте файл my.ini

Разархивируйте установочный пакет, назовите папку master, войдите в папку, создайте пустой текст с именем my.ini,

Текст звучит следующим образом:

[client]
# 端口号,默认是3306,同一个环境下不同的mysql实例端口号不能相同
port=3307
default-character-set=utf8

[mysqld] 
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index

# 设置为自己MYSQL的安装目录
basedir=D:/software/mysql/master
# 设置为MYSQL的数据目录,data文件夹由mysql自动生成
datadir=D:/software/mysql/master/data
port=3307
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER

# 开启查询缓存
explicit_defaults_for_timestamp=true

ps: адрес каталога в содержимом конфигурации должен использовать косую черту, а не обратную косую черту, иначе служба установки сообщит об ошибке, что каталог не найден.

Установить сервис мастер-библиотеки

1. командаСтатус администратораЗапустить, войти в директорию bin мастера,

2. Выполните команду инициализации:

mysqld --initialize --user=mysql --console

Если есть улучшение, как показано ниже, инициализация прошла успешно.Если инициализация прошла успешно, система автоматически сгенерирует папку данных и сгенерирует начальный пароль.

3. После завершения инициализации выполните команду для установки сервиса:

mysqld --install master --defaults-file="D:\software\mysql\master\my.ini" 

master — это имя службы, --defaults-file — это путь к ini-файлу, а «Служба успешно установлена».

Примечание. Если установка не удалась, проверьте, не запускаете ли вы cmd от имени администратора.

Обычно после установки мастер-сервиса мы можем запускать mysql.Однако здесь есть ямка, то есть ошибка будет выдаваться после непосредственно mysql, потому что мы настроили на одно место меньше, которое является информацией мастер-сервиса в реестр.

Поэтому рекомендуется не выполнять команду запуска до изменения реестра.

4. Измените реестр

Нажмите Win + R, введите regedit во всплывающем окне, чтобы открыть реестр, найдите основную службу, путьHKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services->master,ИсправлятьImagePathза

D:\software\mysql\master\bin\mysqld --defaults-file=D:\software\mysql\master\my.ini master

Путь соответствует папке основной базы данных, установленной вами.

5. Запустите службу

По-прежнему запускайте службу запуска в каталоге bin, командаnet master start, после успешного запуска появится следующее приглашение:

6. Введите mysql

Команда для входа в mysql:mysql -u root -p, но поскольку мы изменили номер порта, команду следует изменить на

mysql -u root -P3307 -p, а затем введите только что сгенерированный пароль инициализации для входа в mysql,

Поскольку этот первоначальный пароль слишком болезненный, нам лучше изменить пароль, изменив оператор на:

set password=password('新密码');

Например, пароль, установленный LZ, — 123456,

Таким образом, пароль пользователя root успешно установлен, а затем мы можем использовать графические инструменты, такие как Navicat, для работы и подключения к базе данных.

Установить подчиненную библиотеку

Этапы установки подчиненной библиотеки такие же, как и для основной библиотеки, просто измените соответствующую конфигурацию в файле my.ini.

[client]
port=3308
default-character-set=utf8

[mysqld] 
#从库配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

# 设置为自己MYSQL的安装目录 
basedir=D:/software/mysql/slave
# 设置为MYSQL的数据目录 
datadir=D:/software/mysql/slave/data
port=3308
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#开启查询缓存
explicit_defaults_for_timestamp=true

Ассоциация реализации библиотеки ведущий-подчиненный

После установки двух библиотек мы можем управлять ассоциацией между главной и подчиненной библиотеками, чтобы реализовать репликацию между главной и подчиненной.

Сначала войдите в основную библиотеку, введитеshow master status;

Можно обнаружить, что в основной библиотеке генерируется двоичный файл, представляющий собой файл журнала, который можно синхронизировать с основной библиотекой, связав его с подчиненной библиотекой.

Войдите в подчиненную библиотеку и выполните следующую команду:

change master to master_host='127.0.0.1',master_port=3307,master_user='root',master_password='123456',master_log_file='master-bin.000001',master_log_pos=0;

Нетрудно заметить, что приведенное выше является информацией о конфигурации основной библиотеки, и команда выполняется после успеха.start slaveВключить репликацию master-slave

После завершения мы просто проверяем, что создали базу данных в главной библиотеке с именем test,
Затем такой же тест базы данных также генерируется в ведомом устройстве,
Таким образом успешно реализована репликация master-slave.

Стоит отметить, что, поскольку две библиотеки связаны только в одну сторону, если данные записываются в подчиненную библиотеку, основная библиотека не может быть синхронизирована. Следовательно, ведомая библиотека может использоваться только для чтения данных, а основная библиотека может и писать, и читать.Конечно, в большинстве случаев она используется для записи данных, а считанные данные, как правило, получаются из библиотеки, которая может эффективно снизить нагрузку на основную библиотеку.Стресс, также известный как разделение чтения и письма.

Если вы считаете, что чтение этой статьи было для вас полезным, пожалуйста, поставьте мне большой палец вверх, это лучшее подтверждение для меня!