start' >&2 ;; esac

Добавете mysqld_multi услуга по подразбиране runlevels със следната команда:

update-rc.d mysqld_multi defaults

Рестартирайте машината си и проверете дали и двата екземпляра на MySQL работят, като използвате следната команда:

mysqld_multi report

Настройка Репликация главно-подчинен

Сега, когато имаме два екземпляра на MySQL, работещи на една и съща машина, ние ще настроим първия екземпляр като главен, а втория като роб.

Една част от конфигурацията вече беше извършена в главата „Настройка на mysqld_multi“. Единствената оставаща промяна в my.cnf файл е да зададете двоично регистриране на главния файл. За да направите това, редактирайте my.cnf файл със следните промени и допълнения в [mysqld1] група:

log_bin = /var/log/mysql/mysql-bin.log innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 binlog-format = ROW

Рестартирайте главния екземпляр MySQL, за да влязат в сила тези промени:

mysqld_multi stop 1 mysqld_multi start 1

За да може подчиненият да се свърже с главния с правилните привилегии за репликация, трябва да се създаде нов потребител на главния. Свържете се с главния екземпляр, като използвате клиента MySQL със съответния хост и порт:

mysql -uroot -p --host=127.0.0.1 --port=3306

Създайте нов потребител за репликация:

mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'replication'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

Излезте от клиента MySQL.

Изпълнете следната команда, за да създадете дъмп на основните данни:

mysqldump -uroot -p --host=127.0.0.1 --port=3306 --all-databases --master-data=2 > replicationdump.sql

Тук използваме опцията --master-data=2 за да има коментар, съдържащ CHANGE MASTER изявление в архивния файл. Този коментар посочва координатите на репликация по време на архивирането и ние ще се нуждаем от тези координати по-късно за актуализиране на основната информация в подчинения екземпляр. Ето примера на този коментар:

-- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=349;

Импортирайте сметището, което сте създали в предишната стъпка, в подчинения екземпляр:

mysql -uroot -p --host=127.0.0.1 --port=3307

И накрая, за да може подчиненият екземпляр да се свърже с главния екземпляр, главната информация за подчинения трябва да се актуализира със съответните параметри на свързване.

Свържете се с подчинения екземпляр с помощта на клиента MySQL със съответния хост и порт:

mysql -uroot -p --host=127.0.0.1 --port=3307

Изпълнете следната команда, за да актуализирате главната информация (вземете репликационните координати от файла на дъмп replicationdump.sql, както е обяснено по-горе):

c - език за програмиране
mysql> CHANGE MASTER TO -> MASTER_HOST='127.0.0.1', -> MASTER_USER='replication', -> MASTER_PASSWORD='replication', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=349;

Изпълнете следната команда, за да стартирате подчиненото:

mysql> START SLAVE;

Изпълнете следната команда, за да проверите дали репликацията работи и работи:

mysql> SHOW SLAVE STATUS G

Честито. Вашата MySQL репликация master-slave на същата машина вече е успешно настроена.

Репликация на главен-подчинен MySQL

Увийте

Наличието на главно-подчинена репликация, конфигурирана във вашата среда за разработка, е полезно, ако имате нужда от решение за мащабиране в производствената среда. По този начин ще имате и отделни източници на данни, конфигурирани за операции по писане и четене, за да можете да тествате локално, че всичко работи както се очаква преди по-нататъшното внедряване.

Освен това може да искате да имате няколко екземпляра на подчинени устройства, конфигурирани на една и съща машина, за да тествате балансиращия товар, който разпределя операциите за четене на няколко подчинени устройства. В този случай можете да използвате същото ръководство за настройка на други подчинени екземпляри, като повторите всички същите стъпки.