76 lines
3.4 KiB
Markdown
76 lines
3.4 KiB
Markdown
# Заметки к книге Обеспечение высокой доступности систем на основе MySQL
|
||
|
||
Применяя репликацию для масштабирования, важно знать, что репликация MySQL является асинхронной. То есть, сначала транзакции фиксируются на главном сервере, а затем реплицируются на подчиненный сервер и там исполняются. Это означает, что при непрерывной репликации подчиненный сервер будет «отставать» от главного.
|
||
|
||
## Установка MySQL
|
||
|
||
Подробнее описано здесь - https://git.da2001.ru/da2001/notes/src/branch/master/mysql.md
|
||
|
||
```bash
|
||
su -
|
||
wget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb
|
||
apt install -y ./mysql-apt-config_0.8.36-1_all.deb
|
||
|
||
dpkg-reconfigure mysql-apt-config
|
||
|
||
apt update
|
||
apt install mysql-server
|
||
```
|
||
|
||
## Репликация - первые шаги
|
||
|
||
### Настройка главного сервера
|
||
|
||
Для работы репликации необходим двоичный жернал и уникальный идентификатор сервера.
|
||
|
||
```bash
|
||
cat my.cnf
|
||
...
|
||
log-bin = master-bin
|
||
log-bin-index = master-bin.index
|
||
server-id = 1
|
||
```
|
||
|
||
- `master-bin` - базовое имя для давоичного журнала, журналов может быть несколько
|
||
- `master-bin.index` - имя индексного файла двоичного журнала, в котором содержится список всех файлов двоичного журнала
|
||
|
||
Для того чтобы подключить подчиненный сервер, на главном сервере должен быть пользователь с особыми полномочиями репликации.
|
||
|
||
Создание пользователя репликации на главном сервере (в книге используется устаревший вариант, предлагаю современный)
|
||
|
||
```bash
|
||
master> CREATE USER 'repl_user'@'%' IDENTIFIED BY 'strong_password';
|
||
Query OK, 0 rows affected (0.00 sec)
|
||
master> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' WITH GRANT OPTION;
|
||
Query OK, 0 rows affected (0.00 sec)
|
||
```
|
||
|
||
### Настройка подчинённого сервера
|
||
|
||
```bash
|
||
cat my.cnf
|
||
...
|
||
relay-log = slave-relay-bin
|
||
relay-log-index = slave-relay-bin.index
|
||
server-id = 2
|
||
```
|
||
|
||
### Подключение подчинённого сервера к главному
|
||
|
||
В книге используется устаревший вариант, предлагаю современный
|
||
|
||
```bash
|
||
slave> CHANGE REPLICATION SOURCE TO
|
||
SOURCE_HOST = 'master-1',
|
||
SOURCE_PORT = 3306,
|
||
SOURCE_USER = 'repl_user',
|
||
SOURCE_PASSWORD = 'strong_password',
|
||
SOURCE_LOG_FILE = 'mysql-bin.000002', # обязательно!
|
||
SOURCE_LOG_POS = 158, # обязательно!
|
||
SOURCE_CONNECTION_AUTO_FAILOVER = 1, # опционально, для асинхронной реплики
|
||
GET_SOURCE_PUBLIC_KEY = 1; # для MySQL 8.0 с sha2
|
||
Query OK, 0 rows affected (0.00 sec)
|
||
slave> START REPLICA;
|
||
Query OK, 0 rows affected (0.15 sec)
|
||
```
|