1. Как настроить master-slave репликацию в mysql (кратко)?
Ответ Необходимы 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 ```
2. Какой тип базы данных использует Prometheus?
Ответ Prometheus использует TSDB (time series database).
3. Что такое VACUUM в PostgreSQL?
Ответ VACUUM высвобождает пространство, занимаемое «мёртвыми» кортежами. При обычных операциях PostgreSQL кортежи, удалённые или устаревшие в результате обновления, физически не удаляются из таблицы; они сохраняются в ней, пока не будет выполнена команда VACUUM. Таким образом, периодически необходимо выполнять VACUUM, особенно для часто изменяемых таблиц. Без параметра команда VACUUM обрабатывает все таблицы в текущей базе данных, которые может очистить текущий пользователь. Если в параметре передаётся имя таблицы, VACUUM обрабатывает только эту таблицу. Простая команда VACUUM (без FULL) только высвобождает пространство и делает его доступным для повторного использования. Эта форма команды может работать параллельно с обычными операциями чтения и записи таблицы, так она не требует исключительной блокировки. Однако освобождённое место не возвращается операционной системе (в большинстве случаев); оно просто остаётся доступным для размещения данных этой же таблицы. VACUUM FULL переписывает всё содержимое таблицы в новый файл на диске, не содержащий ничего лишнего, что позволяет возвратить неиспользованное пространство операционной системе. Эта форма работает намного медленнее и запрашивает исключительную блокировку для каждой обрабатываемой таблицы.