MariaDB Master-Master

Понадобилась реплика по типу Master-Master, и тут как раз вышел новый Debian, а в нем появилась MariaDB 10.0.16, которую и решено было использовать. Немного о том что такое Master-Master - это как Master-Slave только в 2 стороны :) если со слейва можно только читать, то тут можно и писать.
Первым делом ставим саму СУБД
apt-get install mariadb-server-10.0 -y
Далее я делаю копию оригинального файла
cp /etc/mysql/my.cnf /etc/mysql/my.cnf.orig
Удаляю комментарии и привязку к интерфейсу
sed -i /^#/d /etc/mysql/my.cnf && sed -i /bind-address/d /etc/mysql/my.cnf
И добавляю в конфиг следущее
/etc/mysql/my.cnf
# ID сервера я предпочитаю начинать с 1
server-id = 1
# Формат лога
binlog-format            = row
# Журнал изменений
log_bin                  = /var/log/mysql/mariadb-bin
# Индексный файл журнала, в котором информация о том какой журнал является активным, а какие использовались раннее
log_bin_index            = /var/log/mysql/mariadb-bin.index
# Журнал изменений полученых с реплики
relay_log                = /var/log/mysql/relay-bin
# Таже суть что и для log_bin_index
relay_log_index          = /var/log/mysql/relay-bin.index
# Не пишем в бинлог information_schema
binlog-ignore-db         = information_schema
# И не принимает ее от реплики
replicate-ignore-db      = information_schema

# Чтобы исключить конфликты автоинкремента задаем ID начиная с 1
auto_increment_offset    = 1
# прибавляя по 2
auto_increment_increment = 2

# В связи с этой проблемой меняем формат таблиц
innodb_file_format       = Barracuda
Перезапускаем, логинимся под рутом, создаем пользователя для реплики и смотрим состояние репликации
service mysql restart

mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 33
Server version: 10.0.16-MariaDB-1-log (Debian)

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create user 'replusr'@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to 'replusr'@'%';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show master status;
+--------------------+----------+--------------+--------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB   |
+--------------------+----------+--------------+--------------------+
| mariadb-bin.000001 |      639 |              | information_schema |
+--------------------+----------+--------------+--------------------+
1 row in set (0.00 sec)
Переходим ко 2 ноде
/etc/mysql/my.cnf
server-id = 2
binlog-format            = row
log_bin                  = /var/log/mysql/mariadb-bin
log_bin_index            = /var/log/mysql/mariadb-bin.index
relay_log                = /var/log/mysql/relay-bin
relay_log_index          = /var/log/mysql/relay-bin.index
binlog-ignore-db         = information_schema
replicate-ignore-db      = information_schema

auto_increment_offset    = 2
auto_increment_increment = 2

innodb_file_format       = Barracuda
Перезапускаем, создаем пользователя и запускаем реплику
service mysql restart

mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 33
Server version: 10.0.16-MariaDB-1-log (Debian)

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create user 'replusr'@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to 'replusr'@'%';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_USER='replusr', MASTER_PASSWORD='password', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=639;
Query OK, 0 rows affected (0.24 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
Далее смотрим состояние реплики
MariaDB [(none)]> show master status;
+--------------------+----------+--------------+--------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB   |
+--------------------+----------+--------------+--------------------+
| mariadb-bin.000002 |      639 |              | information_schema |
+--------------------+----------+--------------+--------------------+
1 row in set (0.00 sec)
И проделываем тоже самое на 1 ноде
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.1.2', MASTER_USER='replusr', MASTER_PASSWORD='password', MASTER_LOG_FILE='mariadb-bin.000002', MASTER_LOG_POS=639;
Query OK, 0 rows affected (0.29 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
После чего смотрим SHOW SLAVE STATUS\G где не должно быть ошибок, и можно тестить.
Из полезного, значения Read_Master_Log_Pos и Exec_Master_Log_Pos совпадают, если ноды синхронизированы, а Seconds_Behind_Master показывает насколько отстаем от мастера, в идеале должно быть 0.