Бази даних
( * Відповідь на питання розгорніть за допомого трикутного значка |> )
- Як налаштувати master-slave реплікацію в mysql (коротко)?
Необхідні 2 сервери: master та slave.
- На обох сервера встановлюємо сервер MySQL однакової версії.
- Вмикаємо сервер бази даних на обох серверах.
- Налаштовуємо master – в
/etc/my.cnf
встановлюємо наступні значення:
# вибираємо ID сервера, довільне число, краще починати з 1
server-id = 1
# шлях до бінарного логу
log_bin = /var/log/mysql/mysql-bin.log
# назва Вашої бази даних, яка буде реплікуватися
binlog_do_db = newdatabase
Перезапускаємо сервер бази даних.
- Підключаємося до master сервера, створюємо користувача і призначаємо йому права для виконання реплікації.
mysql -u root -p <пароль root сервера БД>
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
- На master сервері робимо дамп бази даних з блокуванням таблиць.
mysqldump -u root -p --lock-all-tables newdatabase > newdatabase.sql
- Переносимо дамп бази на slave сервер, створюємо базу даних з таким же іменем і імпортуємо базу.
CREATE DATABASE newdatabase;
mysql -u root -p newdatabase < newdatabase.sql
- Налаштовуємо 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
Перезапускаємо сервер бази даних.
- Запускаємо реплікацію на 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;
- Перевіряємо статус реплікації:
SHOW SLAVE STATUSG
- Який тип бази даних використовує Prometheus?
Prometheus використовує TSDB (time series database).
- Що таке VACUUM в PostgreSQL?
VACUUM вивільняє простір, що займається «мертвими» кортежами. При звичайних операціях PostgreSQL кортежі, видалені або застарілі в результаті оновлення, фізично не видаляються з таблиці; вони зберігаються в ній, поки не буде виконана команда VACUUM. Таким чином, періодично необхідно виконувати VACUUM, особливо для часто змінюваних таблиць.
Без параметра команда VACUUM обробляє всі таблиці в поточній базі даних, які може очистити поточний користувач. Якщо в параметрі передається ім’я таблиці, VACUUM обробляє тільки цю таблицю.
Проста команда VACUUM (без FULL) тільки вивільняє простір і робить його доступним для повторного використання. Ця форма команди може працювати паралельно з звичайними операціями читання і запису таблиці, так вона не вимагає виключного блокування. Однак звільнений простір не повертається операційній системі (в більшості випадків); він просто залишається доступним для розміщення даних цієї ж таблиці. VACUUM FULL переписує весь вміст таблиці в новий файл на диску, що не містить нічого зайвого, що дозволяє повернути невикористаний простір операційній системі. Ця форма працює набагато повільніше і запитує виключне блокування для кожної оброблюваної таблиці.