задний план
Недавно я учусь использовать 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
, после успешного запуска появится следующее приглашение:
Команда для входа в 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
Стоит отметить, что, поскольку две библиотеки связаны только в одну сторону, если данные записываются в подчиненную библиотеку, основная библиотека не может быть синхронизирована. Следовательно, ведомая библиотека может использоваться только для чтения данных, а основная библиотека может и писать, и читать.Конечно, в большинстве случаев она используется для записи данных, а считанные данные, как правило, получаются из библиотеки, которая может эффективно снизить нагрузку на основную библиотеку.Стресс, также известный как разделение чтения и письма.