MySQL Master-Slave Kurulumu

Deniz TÜRKMEN
4 min readMar 29, 2023

--

Merhabalar,

Bu yazımda MySql Master-Slave kurulumunu inceliycez.

Uygulama örneğimiz bir master bir slave şeklinde olacak. Master ve Slave ip ve hostname bilgileri,

192.168.1.25 master-server-1192.168.1.21 slave-server-1

İlk olarak master için mysql kurulumu yapıyoruz. Bunun için,

sudo apt updatesudo apt-get install -y mysql-server mysql-client

Mysql Server status bakmak için,

sudo systemctl status mysql

Mysql root şifremizi ayarlamak için,

sudo mysql -uroot

Not: Mysql root şifremizi belirlemediğimiz halde root kullanıcı ile giriş yaparak root kullanıcısına şifre tanımlıyoruz.

ve

UPDATE mysql.user SET authentication_string=null WHERE User='root';FLUSH PRIVILEGES;exit;

Sonrasında root kullanıcısı için şifre oluşturuyoruz.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'deniz';exit;

Kontrol için,

sudo mysql -uroot -p

komutuyla belirlediğimiz root şifresi ile giriş yapıyoruz. ilk denememde enter giriş yapmaya çalıştığımda hata alıyoruz.

Şimdide master için config dosyasını düzenliyoruz.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = master_ip adresiserver-id = 1log_bin = /var/log/mysql/mysql-bin.logsudo systemctl restart mysql

Config dosyasını düzenledikten sonra mysql restart atıyoruz.

Master olan mysql root şifremiz ile bağlanarak bir tane user oluşturuyoruz.

sudo mysql -uroot -p

MySql Slave için user oluşturmak için,

CREATE USER 'replica'@'192.168.1.21' IDENTIFIED WITH mysql_native_password BY 'denizturkmen';GRANT REPLICATION SLAVE ON *.*TO 'replica'@'192.168.1.21';Select host, user from mysql.user;

Not: User oluştururken bilmemiz gerekenler,

  • User ismini istediğiniz gibi belirleyebilirsiniz bizim örneğimiz için ‘replica’ ama ip adresi kesinlikle slave mysql kurulum yapacağınız makinenin ip adresi olmaldır.
  • Grant komutu ile de veritabanı ve tablolara kullanıcı için yetki ataması yapıyoruz.

Son olarak slave makinemiz için ayarlacağımız file ve posizyona öğrenmek için master makinesinde,

SHOW MASTER STATUS\G;

Evet şimdilik master makinemizde config ayarları yaptık. Şimdide Mysql Slave makinemiz için mysql kurulumu yaparak başlayalım.

sudo apt updatesudo apt install -y mysql-server mysql-client

MySql durumuna bakmak için,

sudo systemctl status mysql

Slave mysql root şifresi belirleyelim. Bunun için,

sudo mysql -urootUPDATE mysql.user SET authentication_string=null WHERE User='root';FLUSH PRIVILEGES;exit;ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'deniz';exit;

Root şifresini belirlemiş olduk. Şimdi de Slave için mysql config ayarlayalım. Bunun için,

bind-address = slave_ip adresiserver-id = 2log_bin = /var/log/mysql/mysql-bin.logsudo systemctl restart mysql

Mysql restart atıyoruz ve config dosyasında yaptığımız değişiklikleri geçerli olması sağlıyoruz.

Mysql Slave makinemizden root şifremiz ile giriş yaparak slave işlemlerine başlayalım.

sudo mysql -uroot -pSTOP SLAVE;mysql> CHANGE MASTER TO-> MASTER_HOST='192.168.1.25',-> MASTER_USER='replica',-> MASTER_PASSWORD='denizturkmen',-> MASTER_LOG_FILE='mysql-bin.000001',-> MASTER_LOG_POS=687;START SLAVE;

Son olarak Slave başarılı şekilde oluşmuş mu kontrol edelim.

SHOW SLAVE STATUS\G;

Slave den,

show databases;

Şimdide Master makinemize bağlanrak database,tablo ve bir kaç kayıt oluşturalım.

sudo mysql -uroot -p
---
CREATE DATABASE replicadb;
---
USE replicadb;
---
CREATE TABLE `Person` (
`id` int(11) NOT NULL AUTO_INCREMENT,`adi` varchar(128) COLLATE utf8_general_ci NOT NULL,`soyadi` varchar(128) COLLATE utf8_general_ci NOT NULL,`telefon` varchar(11) COLLATE utf8_general_ci NOT NULL,`date_time` varchar(128) COLLATE utf8_general_ci NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;---
show tables;
---
INSERT INTO `Person`(adi,soyadi,telefon,date_time) VALUES ("Deniz","TURKMEN","5321234567","02–01–2021_20–25–3");
---
select * from Person;

Yukarıdaki işlemleri master mysql makinemizden gerçekleştirdik. Şimdi de slave bağlanalım,

show databases;use replicadb;Select * from Person;

Görüldüğü gibi başarılı.

--

--

Deniz TÜRKMEN
Deniz TÜRKMEN

No responses yet