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

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

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

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

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

    Сохраняем изменения и перезагружаем сервер MySQL:
    [code]service mysql restart[/code]

    Теперь нужно определить пользователя, который будет выкачивать данные об изменениях.
    Для этого заходим в консоль MySQL:
    [code]mysql -u root -p[/code]
    И выполняем команду
    [code]GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘pass’;
    FLUSH PRIVILEGES;[/code]

    Отлично! Теперь осталось только сделать дамп базы и перенести на другой сервер.
    Предварительно блокируем запись в базу.
    В консоли MySQL:
    [code]FLUSH TABLES READ LOCK;[/code]

    Далее нам нужно узнать позицию, с которой начнется репликация.
    [code]SHOW MASTER STATUS;[/code]
    Запоминаем значение поля Position.

    Теперь можно делать дамп.
    Для этого нужно открыть новое окно, иначе, если произвести какое-либо действие,
    база разблокируется автоматически. В новом окне выполняем команду:
    [code]mysqldump -u root -p -f db1 > db1.sql[/code]
    где db1 — название базы, которую надо перенести

    Разблокируем базу:
    В консоли MySQL:
    [code]UNLOCK TABLES;[/code]

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

  • Вторичный сервер
  • На втором сервере создаем базу, аналогичную первому серверу — db1.
    Для этого в консоли MySQL:
    [code]CREATE DATABASE db1;[/code]
    Теперь нужно залить в нее дамп с первого сервера
    (Вы ведь уже перенесли файл db1.sql на этот сервер?)
    [code]mysql -u root -p -f db1 < db1.sql[/code]
    Готово! Теперь у нас есть копия базы на втором сервере.

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

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

    Теперь сервер нужно перезагрузить:
    [code]service mysql restart[/code]

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

    Остался один шаг, а именно указание основного сервера.
    Для этого нам надо зайти в консоль MySQL и выполнить команду:
    [code]CHANGE MASTER TO
    MASTER_HOST=’IP-адрес основного сервера’,
    MASTER_USER=’slave_user’,
    MASTER_PASSWORD=’pass’,
    MASTER_LOG_FILE=’mysql-bin.000001′,
    MASTER_LOG_POS=XXX;[/code]

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

    Смотрим состояние:
    [code]SHOW SLAVE STATUS\G[/code]

    Slave_IO_State: Waiting for master to send event

    Чтобы остановить репликацию
    [code]STOP SLAVE[/code]

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

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

    Zabbix не работает icmpping cnt=0 rcv=0

    После установки zabbix-proxy на CentOS 6, все icmpping / icmppingsec элементы возвращали нулевые зеачения.

    После включения DEBUG режма, лог Zabbix показал следующее:

    [code]
    31790:20140611:073610.004 In process_ping() hosts_count:1
    31790:20140611:073610.004 /tmp/zabbix_proxy_31790.pinger
    31790:20140611:073610.004 10.20.2.20
    31790:20140611:073610.004 /usr/sbin/fping -C5 -p200 -b1024 -t1000 2>&1 &1

    Компиляция PHP для интерфейса Zabbix 2.2

    Для компиляции PHP для интерфейся Zabbix 2.2+ необходимо использовать следующие параметры:

    [code]
    ./configure —enable-mbstring —enable-sockets —with-mysql —with-mysqli —with-ldap —enable-fpm —enable-bcmath —with-gettext —with-xmlrpc —with-openssl —with-mcrypt —with-gd —with-zlib —with-freetype-dir=/usr/include/freetype2 —with-jpeg-dir=/usr/lib
    [/code]

    Минимальные параметры в файле php.ini :

    [code]
    memory_limit = 128M
    post_max_size = 16M
    upload_max_filesize = 2M
    max_execution_time = 300
    max_input_time = 300
    session.auto_start = 0
    [/code]

    Сохранение базы конфигурации Zabbix

    Ниже приведен скрипт для бэкапа конфигурации Zabbix 2 (содержит данны о хостах, элементах, шаблонах итд). Данные мониторинга (история, тренды, события) не включены в архив, что делает его размер относительно небольшим.

    Просто замените ZBX_DB и ZBX_USER на свои параметры базы данных:

    [code]
    mysqldump -u ZBX_USER -p ZBX_DB \
    —ignore-table=ZBX_DB.acknowledges \
    —ignore-table=ZBX_DB.alerts \
    —ignore-table=ZBX_DB.auditlog \
    —ignore-table=ZBX_DB.auditlog_details \
    —ignore-table=ZBX_DB.escalations \
    —ignore-table=ZBX_DB.events \
    —ignore-table=ZBX_DB.history \
    —ignore-table=ZBX_DB.history_log \
    —ignore-table=ZBX_DB.history_str \
    —ignore-table=ZBX_DB.history_str_sync \
    —ignore-table=ZBX_DB.history_sync \
    —ignore-table=ZBX_DB.history_text \
    —ignore-table=ZBX_DB.history_uint \
    —ignore-table=ZBX_DB.history_uint_sync \
    —ignore-table=ZBX_DB.trends \
    —ignore-table=ZBX_DB.trends_uint \
    | gzip > zbx_db.sql.gz

    [/code]

    Playstation 3 модификация корпуса

    Предлагаю вашему вниманию модификацию корпуса Playstation 3 за 10$ долларов. Это понизит температуру компонентов PS3, сделает систему тише и продлит ей жизнь.

    Читать далее