Comments 24
Создаем CA сертификат:
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem

Далее создаем сертификат для сервера…:
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem


Это опечатка? Для сервера нужно
openssl genrsa 2048 > server-key.pem
openssl req -new -x509 -nodes -days 1000 -key server-key.pem > server-cert.pem
?
В настройке репликации через шифрованное соединение было просто умилительно увидеть
aptitude install mysql-server mysql-client

:))))
Репликации, тем более с шифрованием — это уже достаточно «продвинутые» настройки мускула, и логично было бы предположить, что если человек заинтересован темой, то базовые навыки по установке и работе с мускулом у него уже есть.
А мне 3 года назад очень кстати были туториалы по таким замысловатым темам с нуля, когда я только осваивал unix(и так получилось, что это была freebsd), и приходилось проектировать сложные системы. Когда какая-то мелочь была опущена в статье, я терялся и иногда тратил довольно много времени на поиск информации, а то и хуже — действуя по интуиции, все ломал.
Мне это кажется не логичным — стоит разделять базу и эдвансд уровни. Но тут это мелочь, не стоящая спора.

В любом случае спасибо за хорошую и актуальную для меня статью. )

CentOS 5.5, MySQL 5.0.84
Не стартует после внесения в my.cnf строк
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog_do_db = exampledb


Причем у меня была закомментированная строчка
# Uncomment the following if you want to log updates
#log-bin = /var/log/mysql-bin.log

Но даже если просто раскомментировать эту строку — уже MySQL не стартует.
В логе при этом /var/log/mysql-bin.index' not found (Errcode: 13)
[ERROR] Aborting
[Note] /usr/libexec/mysqld: Shutdown complete
mysqld ended


В чем тут может быть дело?
Попробуйте выполнить touch /var/log/mysql-bin.index.
Директория /var/log существует?
Да, директория существует. После создания этого файла все равно не стартует, в логе
/usr/libexec/mysqld: File '/var/log/mysql-bin.000001' not found (Errcode: 13)
100917 4:42:52 [ERROR] Could not use /var/log/mysql-bin for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
100917 4:42:52 [ERROR] Aborting

100917 4:42:52 [Note] /usr/libexec/mysqld: Shutdown complete
попробуйте оставить:
log_bin = /var/log/mysql/mysql-bin.log
создать папку /var/log/mysql
и указать ей chown mysql:mysql /var/log/mysql или другие пользователь-группа под которым запускается mysqld
Может стоит подправить заголовок. Избавится от английского оборота в предложении. Исправить ошибку.
Да и в тексте можно повстречать несколько досадных опечаток. Запятые.…

Ну, а так тема востребованная, скоро придётся что-то подобное делать.
Лучше написать не «c помощью SSL», а «с использованием SSL» в заголовке.
Вот зачем блокировать, смотреть мастер-статус, делать дамп, разблокировать, года достаточно:

mysqldump --all-databases --master-data > all_databases.dump
А мне нравится.
Так больше понимания механизма репликации остается у читающего.
В репликацию не нужно лезть не понимая её работы. А тут, банальное удобство, вместо «открыли окно А, заморозили, запомнили строчки и т.п.»
Настраивал репликацию по этой статье. Всё Ok, но нарисовалась проблема с сертификатами/ключами.

На мастере это выглядело так:
SSL error: Unable to get private key from '/etc/mysql/certs/server-key.pem'
160413 17:21:09 [Warning] Failed to setup SSL
160413 17:21:09 [Warning] SSL error: Unable to get private key

На слейве вот так:
SSL error: Unable to get private key from '/etc/mysql/certs/client-key.pem'
160414 12:08:45 [ERROR] Slave I/O: error connecting to master 'replication@mysql.server:3306' - retry-time: 60  retries: 86400, Error_code: 2026

Фикс проблемы на стороне сервера:
openssl rsa -in server-key.pem -out server-key.pem

На стороне клиента:
cat client-cert.pem >> ca-cert.pem
openssl rsa -in client-key.pem -out client-key.pem

Вдруг кому-то поможет.

И небоольшая очепятка в тексте статьи:
Сторока REQUIRE SSL не является обязательной, если Вы оставите ее, slave_user будет разрешено подключатся через зашифрованное и не зашифрованное соединение.

«если Вы оставите ее» нужно заменить на «если Вы уберёте ее»
Подскажите, зачем вообще клиенту делать сертификаты и ключи? Вам нужна двухсторонняя аутентификация? Но ведь пользователь слейва всё равно идентифицируется по паролю. Зачем тогда? На клиенте нужно только через CHANGE MASTER TO установить MASTER_SSL_CA, чтобы клиент мог убедиться, что у сервера корректно подписанный сертификат (а для этого ему нужен корневой). Разве не так?

И да, стоит отметить, что проблема с запароленным ключём приводит к ошибке 'Unable to get private key from'. Об это в статье нет информации, только в комментариях.
Only those users with full accounts are able to leave comments. Log in, please.