Разршение конфликтов зависимостей mysql-community-libs-compat

При обновлении базы MySQL на Centos 6 с 5.5 до 5.7 вы можете столкнуться с конфликтом пакетов:

Transaction Check Error:
  file /usr/lib64/mysql/libmysqlclient.so.16.0.0 from install of mysql-community-libs-compat-5.7.11-1.el6.x86_64 conflicts with file from package compat-mysql51-5.1.54-1.el6.remi.x86_64
  file /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 from install of mysql-community-libs-compat-5.7.11-1.el6.x86_64 conflicts with file from package compat-mysql51-5.1.54-1.el6.remi.x86_64

Данная проблема легко решается следующей коммандой:

$ yum shell
> remove compat-mysql51
> install mysql-community-libs-compat
> run

Это позволит обновить необходимый пакет без нарушения зависимостей.

Centos 7 systemctl полезные комманды

1. Просмотр всех системных сервисов (аналог chkconfig —list)

systemctl list-unit-files

2. Автозапуск серверов HTTPD + Mysql при загрузке системы:

systemctl enable httpd
systemctl enable mariadb

3. Замена брандмауэра firewalld на старый iptables:

systemctl stop firewalld
systemctl mask firewalld

yum install iptables-services

systemctl enable iptables
systemctl start iptables

# to save iptables rules use
service iptables save

Настройка репликации базы MySQL

Репликация позволяет синхронизировать все изменения базы данных на первичном сервера со вторичным.

  • Первичный сервер
  • Редактируем файл /etc/my.cnf

    server-id=1
    log_bin=/var/log/mysql/mysql-bin.log
    

    В файл log_bin будут записываться изменения базы.
    Параметром binlog_do_db=database возможно контролировать названия баз, для которых изменения будут записываться в файл, однако делать это не рекоммендуется (смотри ссылку)

    Сохраняем изменения и перезагружаем сервер MySQL:

    service mysql restart

    Теперь нужно определить пользователя, который будет выкачивать данные об изменениях.
    Для этого заходим в консоль MySQL:

    mysql -u root -p

    И выполняем команду

    GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'pass';
    FLUSH PRIVILEGES;

    Отлично! Теперь осталось только сделать дамп базы и перенести на другой сервер.
    Предварительно блокируем запись в базу.
    В консоли MySQL:

    FLUSH TABLES READ LOCK;

    Далее нам нужно узнать позицию, с которой начнется репликация.

    SHOW MASTER STATUS;

    Запоминаем значение поля Position.

    Теперь можно делать дамп.
    Для этого нужно открыть новое окно, иначе, если произвести какое-либо действие,
    база разблокируется автоматически. В новом окне выполняем команду:

    mysqldump -u root -p -f db1 > db1.sql

    где db1 — название базы, которую надо перенести

    Разблокируем базу:
    В консоли MySQL:

    UNLOCK TABLES;

    Готово. Теперь пришло время для второго сервера, на который надо реплицировать данные.

  • Вторичный сервер
  • На втором сервере создаем базу, аналогичную первому серверу — db1.
    Для этого в консоли MySQL:

    CREATE DATABASE db1;

    Теперь нужно залить в нее дамп с первого сервера
    (Вы ведь уже перенесли файл db1.sql на этот сервер?)

    mysql -u root -p -f db1 < db1.sql

    Готово! Теперь у нас есть копия базы на втором сервере.

    Редактируем конфиг MySQL /etc/my.cnf и выполняем аналогичные первому серверу действия:

    server-id=2
    relay-log=/var/log/mysql/mysql-relay-bin.log
    log_bin=/var/log/mysql/mysql-bin.log
    

    Теперь сервер нужно перезагрузить:

    service mysql restart

    Сервер сконфигурирован и готов к репликации!

    Остался один шаг, а именно указание основного сервера.
    Для этого нам надо зайти в консоль MySQL и выполнить команду:

    CHANGE MASTER TO
    MASTER_HOST='IP-адрес основного сервера',
    MASTER_USER='slave_user',
    MASTER_PASSWORD='pass',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=XXX;

    Вспоминаем поле Position из «SHOW MASTER STATUS» и вписываем его на место XXX.
    И запускаем репликацию:

    START SLAVE;

    Смотрим состояние:

    SHOW SLAVE STATUS\G

    Slave_IO_State: Waiting for master to send event

    Чтобы остановить репликацию

    STOP SLAVE

    Готово. Теперь данные будут дублироваться между серверами!

    PS: Не забываем, что для передачи используется TCP порт 3306, поэтому не забывайте про фаерволы.