MySQL Master-Slave Kurulumu
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ı.
Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Yazımı okuduğunuz için teşekkürler.