82 lines
5.2 KiB
Markdown
82 lines
5.2 KiB
Markdown
1. Как настроить master-slave репликацию в mysql (кратко)?
|
||
|
||
<details>
|
||
<summary>Ответ</summary>
|
||
|
||
Необходимы 2 сервера: master и slave.
|
||
|
||
1. На обеих сервера устанавливаем сервер MySQL одинаковой версии.
|
||
2. Включаем сервер базы данных на обеих серверах.
|
||
3. Настраиваем master - в `/etc/my.cnf` устанавливаем слеюущие значения:
|
||
```
|
||
# выбираем ID сервера, произвольное число, лучше начинать с 1
|
||
server-id = 1
|
||
# путь к бинарному логу
|
||
log_bin = /var/log/mysql/mysql-bin.log
|
||
# название Вашей базы данных, которая будет реплицироваться
|
||
binlog_do_db = newdatabase
|
||
```
|
||
Перезапускаем сервер базы данных.
|
||
4. Подключаемся к master серверу, создаем пользователя и назначаем ему права для выполнения репликации.
|
||
```
|
||
mysql -u root -p <пароль root сервера БД>
|
||
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
|
||
FLUSH PRIVILEGES;
|
||
```
|
||
5. На master сервере делаем дамп базы данных c блокировкой таблиц.
|
||
```
|
||
mysqldump -u root -p --lock-all-tables newdatabase > newdatabase.sql
|
||
```
|
||
6. Переносим дамп базы на slave сервер, создаем базу данных с таким же именем и импортируем базу.
|
||
```
|
||
CREATE DATABASE newdatabase;
|
||
mysql -u root -p newdatabase < newdatabase.sql
|
||
```
|
||
7. Настраиваем slave в `/etc/my.cnf`:
|
||
```
|
||
# ID Слейва, удобно выбирать следующим числом после Мастера
|
||
server-id = 2
|
||
# Путь к relay логу
|
||
relay-log = /var/log/mysql/mysql-relay-bin.log
|
||
# Путь к bin логу на Мастере
|
||
log_bin = /var/log/mysql/mysql-bin.log
|
||
# База данных для репликации
|
||
binlog_do_db = newdatabase
|
||
```
|
||
Перезапускаем сервер базы данных.
|
||
8. Запускаем репликацию на slave сервере.
|
||
```
|
||
CHANGE MASTER TO MASTER_HOST='10.10.0.1', MASTER_USER='slave_user', MASTER_PASSWORD='password',
|
||
MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107;
|
||
##Указанные значения мы берем из настроек Мастера
|
||
После этого запускаем репликацию на Слейве:
|
||
START SLAVE;
|
||
```
|
||
9. Проверяем статус репликации:
|
||
```
|
||
SHOW SLAVE STATUSG
|
||
```
|
||
|
||
</details>
|
||
|
||
2. Какой тип базы данных использует Prometheus?
|
||
|
||
<details>
|
||
<summary>Ответ</summary>
|
||
|
||
Prometheus использует TSDB (time series database).
|
||
|
||
</details>
|
||
|
||
3. Что такое VACUUM в PostgreSQL?
|
||
|
||
<details>
|
||
<summary>Ответ</summary>
|
||
|
||
VACUUM высвобождает пространство, занимаемое «мёртвыми» кортежами. При обычных операциях PostgreSQL кортежи, удалённые или устаревшие в результате обновления, физически не удаляются из таблицы; они сохраняются в ней, пока не будет выполнена команда VACUUM. Таким образом, периодически необходимо выполнять VACUUM, особенно для часто изменяемых таблиц.
|
||
|
||
Без параметра команда VACUUM обрабатывает все таблицы в текущей базе данных, которые может очистить текущий пользователь. Если в параметре передаётся имя таблицы, VACUUM обрабатывает только эту таблицу.
|
||
|
||
Простая команда VACUUM (без FULL) только высвобождает пространство и делает его доступным для повторного использования. Эта форма команды может работать параллельно с обычными операциями чтения и записи таблицы, так она не требует исключительной блокировки. Однако освобождённое место не возвращается операционной системе (в большинстве случаев); оно просто остаётся доступным для размещения данных этой же таблицы. VACUUM FULL переписывает всё содержимое таблицы в новый файл на диске, не содержащий ничего лишнего, что позволяет возвратить неиспользованное пространство операционной системе. Эта форма работает намного медленнее и запрашивает исключительную блокировку для каждой обрабатываемой таблицы.
|
||
|
||
</details> |