Итак, в течение 2 недель я пытался настроить репликацию Master / Master (с веб-сервером apache2 и базой данных mariadb ) на двух Raspberry Pi разными методами, которые я нашел в Интернете (в том числе и на французском). Когда я впервые начал, мне удалось заставить репликацию Master / Slave работать примерно через неделю (хотя это был ведомый, который мог писать на ведущем), поэтому я решил настроить его наоборот, чтобы превратить его в ведущего / master репликация, и с тех пор она "сломалась" (не работает ни на M / M, ни на M / S). В каждом учебном пособии, которому я следил, шаги были практически одинаковыми:
отредактируйте "sudo nano /etc/my.cnf"
добавьте необходимую информацию ->
log-bin
server_id = 1
replicate-do-db = replicate
bind-address = 192.168.xx
(и другие, которые я нашел на различных веб-сайтах, которые, как мне кажется, могут помочь мне сделать его более точным и, возможно, работать)
затем: "systemctl restart mariadb"
После этого войдите в mariadb с мастером 1 и настройте его:
CREATE USER '$ master_username' @ '%' IDENTIFIED BY '$ master_password';
GRANT REPLICATION SLAVE ON . . TO '$ master_username' @ '%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
А затем сделайте то же самое с другим raspi (master 2) с его правильной информацией и добавив:
SLAVE STOP;
ИЗМЕНИТЬ МАСТЕРА НА MASTER_HOST = '192.168.0.12', MASTER_USER = '$ master_username', MASTER_PASSWORD = '$ master_password', MASTER_LOG_FILE = mariadb-bin.xxxxxx ;, MASTER_LOG_POS = xxxx;
SLAVE START;
ПОКАЗАТЬ СТАТУС МАСТЕРА;
затем вернуться к мастеру 1:
SLAVE STOP;
ИЗМЕНИТЬ МАСТЕРА НА МАСТЕР_ХОСТА 192.168.0.15 ', MASTER_USER =' $ master_username ', MASTER_PASSWORD =' $ master_password ', MASTER_LOG_FILE = mariadb-bin.xxxxxxxx ;, MASTER_LOG_POS = xxx;
SLAVE START;
Итак, сейчас я бы сделал SHOW SLAVE STATUS \ G на обоих, чтобы увидеть, работает ли он, а он нет, и он говорит:
Slave_IO_Running: connected
Slave_SQL_Running: Да
и говорит, что не может подключиться к хосту обоими способами, но когда я пингуя их, они находят друг друга.
Если у кого-то есть представление о том, что может происходить или что я делаю не так, то это было бы очень полезно! Хорошего вам дня
Одной из причин подобных проблем может быть то, что брандмауэр блокирует доступ к порту 3306 по умолчанию для MariaDB. Если у вас есть nc
, netcat
] или telnet
, вы можете проверить, открыт ли сетевой порт, на котором прослушивает MariaDB.
nc 192.168.0.12 3306
или с помощью telnet
telnet 192.168.0.12 3306
Если какой-либо из этих символов печатает искаженные символы, подобные приведенному ниже, вы знаете порт открыт.
r5.5.5-10.2.11-MariaDB-10.2.11+maria~jessie-log'le6|2}Cv���IIs'eGt5IP6]mysql_native_password
Вместо этого, если вы получите сообщение об ошибке и в соединении будет отказано, вы знаете, что проблема связана с межсетевым экраном.