# Репликация MySQL

# Общая инфа

# Как работает?

https://highload.today/kak-nastroit-mysql-master-slave-replikatsiyu-3f/

<span style="text-decoration: line-through;">Через жопу</span>

Репликация настраивается так: надо указать файл, который надо реплицировать и позицию, с которой надо реплицировать данные.

# async sync

[https://dev.mysql.com/doc/refman/8.0/en/binary-log-formats.html](https://dev.mysql.com/doc/refman/8.0/en/binary-log-formats.html)

[https://learn.percona.com/hubfs/Manuals/Percona\_XtraDB\_Cluster/PXC\_8.0/PerconaXtraDBCluster-8.0.20-11.3.pdf](https://learn.percona.com/hubfs/Manuals/Percona_XtraDB_Cluster/PXC_8.0/PerconaXtraDBCluster-8.0.20-11.3.pdf)

# bench

```
sysbench \
--db-driver=mysql \
--mysql-user=sbtest_user \
--mysql_password=password \
--mysql-db=sbtest \
--mysql-host=192.168.66.5 \
--mysql-port=3306 \
--tables=16 \
--table-size=10000 \
/usr/share/sysbench/oltp_read_write.lua prepare
```

# Настраиваем Master-Slave

# Настраиваем

## На мастере

В конфиге указываем:

<div id="bkmrk-%23-%D0%B2%D1%8B%D0%B1%D0%B8%D1%80%D0%B0%D0%B5%D0%BC-id-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80"><div>`<span class="enlighter-c0"># выбираем ID сервера, произвольное число, лучше начинать с 1</span>`</div></div><div id="bkmrk-server-id-%3D-1"><div>`<span class="enlighter-text">server-id = 1</span>`</div></div><div id="bkmrk-"><div></div></div><div id="bkmrk-%23-%D0%BF%D1%83%D1%82%D1%8C-%D0%BA-%D0%B1%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%BC%D1%83-%D0%BB"><div>`<span class="enlighter-c0"># путь к бинарному логу</span>`</div></div><div id="bkmrk-log_bin-%3D-%2Fvar%2Flog%2Fm"><div>`<span class="enlighter-text">log_bin = /</span><span class="enlighter-k0">var</span><span class="enlighter-text">/log/mysql/mysql-bin.log</span>`</div></div><div id="bkmrk--0"><div></div></div><div id="bkmrk-%23-%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%92%D0%B0%D1%88%D0%B5%D0%B9-%D0%B1%D0%B0%D0%B7"><div>`<span class="enlighter-c0"># название Вашей базы данных, которая будет реплицироваться</span>`</div></div><div id="bkmrk-binlog_do_db-%3D-newda"><div>`<span class="enlighter-text">binlog_do_db = newdatabase</span>`</div></div><div id="bkmrk--1"></div><div id="bkmrk-%D0%9F%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D0%BC-%D0%A1%D0%A3%D0%91%D0%94.">Перезапускаем СУБД.</div><div id="bkmrk--2"></div><div id="bkmrk-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC-%D1%8E%D0%B7%D0%B5%D1%80%D0%B0-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B5">Создаем юзера для репликации</div><div id="bkmrk--3"></div><div id="bkmrk--4"></div><div id="bkmrk-grant-replication-sl">`GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';`  
`FLUSH PRIVILEGES;`</div><div id="bkmrk--5"></div><div id="bkmrk-%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D0%B5%D0%BC-%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81-%D0%BC%D0%B0%D1%81">Проверяем статус мастера</div><div id="bkmrk--6"></div><div id="bkmrk-show-master-status%3B">`SHOW MASTER STATUS;`</div><div id="bkmrk--7"></div><div id="bkmrk-%D0%94%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC-%D0%B4%D0%B0%D0%BC%D0%BF-%D0%B1%D0%B0%D0%B7%D1%8B%2C-%D0%B2%D1%8B">Делаем дамп базы, выгружаем его</div><div id="bkmrk--8"></div>## На слейв

После чего конфигурируем слейв:

`# ID Слейва, удобно выбирать следующим числом после Мастера<br></br>server-id = 2<br></br># Путь к relay логу<br></br>relay-log = /var/log/mysql/mysql-relay-bin.log<br></br># Путь к bin логу на Мастере<br></br>log_bin = /var/log/mysql/mysql-bin.log<br></br># База данных для репликации<br></br>binlog_do_db = newdatabase`

И настраиваем соединение

`CHANGE MASTER TO MASTER_HOST='10.10.0.1', MASTER_USER='slave_user', MASTER_PASSWORD='password',<br></br>MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107;`

`START SLAVE;`

# Настраиваем Master-Master

# Master-Master

https://highload.today/kak-nastroit-mysql-master-master-replikatsiyu-3f/

# Инструкция

По аналогии с Master-Slave, только репликацию Slave настраиваем еще и на основном мастере.