modify: Пт 10 апр 2026 12:17:10 MSK
This commit is contained in:
75
mysql_notes.md
Normal file
75
mysql_notes.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Заметки к книге Обеспечение высокой доступности систем на основе 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> RANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
|
||||
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)
|
||||
```
|
||||
Reference in New Issue
Block a user