SlideShare a Scribd company logo
MySQL/MariaDB Notları
1. MariaDB/ MySQL Loglarına Genel Bakış
2. MySQL/MariaDB'yi Yedeklemeklerine Genel Bakış
MariaDB/ MySQL Loglarına Genel Bakış
Bu dokümanda, farklı logların ve logları kaydetmenin nasıl etkinleştirileceği, nasıl
devre dışı bırakılacağına ilişkin genel bir bakış sunulmaktadır.
Hata Logları
• Her zaman etkindir.
• Genellikle /var dizini altında bulunan bir dosyadır, ancak bazı dağıtımlar
bunu başka dizinlere taşıyabilir.
• Tüm kritik hatalar burada kaydedilir.
Resim 1 de örnek olarak mariadb konfigurasyon dosyasında, log dosyalarının
dizinlerinin yeri belirtilmiştir.
Genel Sorgu Logu
• general_log ile etkin konuma getirilir.
• Tüm sorguları bir dosyaya veya tabloya kaydeder.
• Sorguları ayıklamak veya denetlemek için kullanışlıdır.
• general_log değerini 1 olarak ayarlayarak aktif hale getirilir 0 değeri girilerek devre
dışı bırakabilirsiniz.
Resim 1
Resim 2 de mariadb konfigurasyon dosyanın içinde genel sorgu loglarını
kaydedileceği dizni görüyorsunuz. Mevcut “#” işaretini kaldırarak genel sorgu loglarını
dosyaya kaydedilmesini sağlayabilirsiniz.
Logları mysql in içindeki tablolara kaydetmek için;
SET global general_log = 1;
SET global log_output = 'table';
Resim 3 de örnek olarak gösterilmiştir.
Resim 2
Resim 3
Kayıt edilen logları:
select * from mysql.general_log; komutu ile görüntülenebilir.
Resim 4 de örnek olarak logların bir görüntüsü alınmıştır.
Logların dosyada tutulması isteniyor ise ;
SET global log_output = 'FILE';
SET global general_log_file='/dizin/dosya.log';
SET global general_log = 1;
Resim 4
Resim5 de örnek olarak yukarıdaki komutlar çalıştırılmıştır.
/opt dizini altında oluşturduğumuz mysql.log dosyasının örnek bir görüntüsü resim 6
da gösterilmiştir.
Yavaş Sorgu Logu
Yavaş sorgular veritabanı performansını ve genel sunucu performansını
etkileyebilir.MySQL'deki yavaş sorgu logu özelliği, önceden tanımlanmış bir zaman sınırını
aşan sorguları loga kaydetmenizi sağlar.Bu, verimsiz veya zaman alıcı sorguları bulma
görevini büyük ölçüde basitleştirir.
Yavaş sorgu loglarını etkinleştirmek için;
SET GLOBAL slow_query_log = 'ON';
Devredışı bırakmak için;
SET GLOBAL slow_query_log = 'OFF';
Resim 5
Resim 6
Resim 7 de örnek olarak gösterilmiştir.
Yavaş sorgu logu için ayarlayabileceğiniz ek seçenekler vardır:
Varsayılan olarak, yavaş sorgu günlüğü etkin olduğunda, çalışması 10 saniyeden uzun
süren herhangi bir sorguyu loga kaydeder. Bu aralığı değiştirmek için, X'i saniye cinsinden
zamanla değiştirerek aşağıdaki komutu yazın :
SET GLOBAL long_query_time = X ;
Resim 8 de örnek olması için 5 saniyeye ayarlanmıştır.
Log dizini veya dosya adını değiştirmek için, aşağıdaki komutu yazın, yolu
dosyanın yoluyla ve dosya adını logun dosya adının adıyla değiştirin:
SET GLOBAL slow_query_log_file = '/dizin/dosya';
Resim 9 da örnek olarak /opt dizinindeki yavassorgu.log dizine yol gösterilmiştir.
Resim 7
Resim 8
Resim 9
Yavaş sorgu logu düzgün çalıştığını doğrulamak için;
SELECT SLEEP (y);
y değeri belirlediğiniz değerden fazla olması gerekir.
Resim 10 da y değeri 10 olarak belirlenmiştir.
Resim 11 de örnek olarak yavassorgu.log dosyası içinde çalıştırdığımız sorgunun
kaydı gözükmektedir.
Resim 10
Resim 11
MySQL/MariaDB'yi Yedeklemeklerine Genel Bakış
MySQL ve MariaDB, bir veritabanı veya veritabanı sistemi yedeği oluşturma işlemini
basitleştirmek için mysqldump yardımcı programını içerir. Bu aracı yalnızca veritabanı
işleminiz erişilebilir ve çalışıyorsa kullanabilirsiniz.
Veritabanınıza herhangi bir nedenle erişilemiyorsa, bunun yerine verilerinizi içeren
dosya sistemi yapısının bir kopyası olan fiziksel bir yedekleme oluşturabilirsiniz.
Bu dokümanda sırası ile mysqldump yardımı ile full backup, table bakup, Cron ile
Yedeklemeleri Otomatikleştirme ve fiziksel yedekleme gösterilecektir.
mysqldump Komutunun Genel Sözdizimi
• mysqldump -u [kullanıcı adı] -p [varitabanı ismi] > [dosya adı]-$(date +%F).sql
• mysqldump yedekleme işlemine başlamadan önce bir parola ister.
• Veritabanının boyutuna bağlı olarak tamamlanması biraz zaman alabilir.
• Veri tabanı yedeklemesi, komutun çalıştırıldığı dizinde oluşturulacaktır.
• -$(date +%F) dosya adına bir zaman damgası ekler.
Tüm bir Veritabanı Yönetim Sisteminin (DBMS) yedeğini oluşturun:
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$
(date +%F).sql -u root -p
--single-transaction : Veritabanının tamamını kilitlemek yerine, bu, mysqldump'un işlem
sırasında mevcut durumdaki veritabanını okumasını ve tutarlı bir veri dökümü yapmasını
sağlar.
--quick : Büyük tabloları, tüm tabloyu bellekte sığacak kadar RAM olmasını gerektirmeyen
bir şekilde okur.
--lock-tables=false :Bu, mysqldump süresince tüm tabloları kilitleyerek canlı bir ortamda
kullanılmasını kötü bir seçenek haline getirir. Bu durumu önlemek için örnekte canlı bir
ortamda false durumuna getirilmiştir.
Resim 12 de örnek olarak veritabanının yönetim sisteminin yedeği oluşturulmuştur.
Belirli bir veritabanını yedekleyin. elvan_eğitim veritabı yerine yedeklemek
istediğiniz veritabanının adı ile değiştirin :
mysqldump -u root -p elvan_eğitim --single-transaction --quick --lock-tables=false >
elvan_eğitim-backup-$(date +%F).sql
Resim 13 de örnek olarak elvan_eğitim veritabının yedeği alınmıştır.
Resim 12
Resim 13
Herhangi bir veritabanından tek bir tablosunu yedeklemek. Örnekte
django_admin_log tablosu, elvan_egitim veritabanından yedeği alınmıştır:
mysqldump -u root -p --single-transaction --quick --lock-tables=false elvan_eğitim
django_admin_log > elvan_eğitim-django_admin_log-$(date +%F).sql
Resim 14 de örnek olarak elvan_eğitim veritabanından django_admin_log
tablosunun yedeği alınmıştır.
Cron ile Yedeklemeleri Otomatikleştirme
/etc/crontab Veritabanı yedeklemelerini düzenli olarak zamanlamak için komutlar
eklenebilir .
Yedeklemeyi gerçekleştirecek MySQL root kullanıcısının giriş bilgilerini saklamak
için bir dosya oluşturun.
Resim 15 de örnek olarak /home/erdem/.myconfig.cnf dosyası oluşturulmuş ve
bilgiler girilmiştir.
Resim 14
Resim 15
Kimlik bilgileri dosyasının izinlerini kısıtla:
chmod 600 .mylogin.cnf
Cron iş dosyasını oluşturun. Aşağıda her gün saat 01: 00'de tüm veritabanı yönetim
sistemini yedeklemek için örnek bir cron işi verilmiştir:
0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/erdem/.my.cnf -u root --single-
transaction --quick --lock-tables=false --all-databases > full-backup-$(date +%F).sql
Resim 16 da cron.daily dizinin içine mysqldump dosyası oluşturulmuştur. Home
dizini altındaki erdem kullanıcı dizinin altına oluşturduğumuz örnek .mylogin.cnf
dosyasında mySQL root kullanıcısı ve şifresini tutmaktadır.
MariaDB/MySQL için Fiziksel Yedek
Mysqldump tercih edilen yedekleme yöntemi olsa da, sadece veritabanı sunucusu
erişilebilir olduğunda ve çalışıyorken çalışır. Veritabanı başlatılamazsa veya ana bilgisayar
sistemine erişilemiyorsa, veritabanı doğrudan kopyalanabilir.
1. mysql servisini durdurun:
systemctl stop mysql
2. Veritabanı dizininizi bulun. /var/lib/mysql/ Çoğu sistemde olması gerekir, ancak bu dizin
yoksa /etc/mysql/my.cnf, veri dizinine giden yolu inceleyin .
Resim 16
Resim 17 örnek olarak Pardus 17.1 üzerine kurulu bir mariadb 10.1.38 veriyonuna
sahip veritabanı konfigürasyonu /etc/mysql/mariadb.conf.d/50-server.cnf dizininde
bulunmaktadır. Datadir ise veritabanı dizinini belirtmektedir.
3.Yedeklerinizi saklamak için bir dizin oluşturun.Örnek olarak /opt/db-backups
dizini kullanılmıştır, bunu ihtiyaçlarınıza göre değiştirebilirsiniz:
mkdir /opt/db-backups
4.MySQL'in veri dizinini bir depolama konumuna kopyalayın. Cp, rsync gibi komutlarda
kullanılabilir daha güvenilir bulduğumuz tar komutu ile sıkıştırıp kopyalama işleminde
gerçekleştireceğiz.
tar cfvz /opt/db-backups/db-$(date +%F).tar.gz /var/lib/mysql/*
5.MySQL hizmetini yeniden başlatın:
systemctl restart mysql
Resim 17
Geri Yükleme
1.DBMS yedeklemesinin tamamını geri yüklenmek. Sizden MySQL root kullanıcı şifresini
girmeniz istenecek:
Bu veritabanı sistemindeki tüm mevcut verilerin üzerine yazılacak
mysql -u root -p < full-backup.sql
2.Tek bir veritabanı geri yüklemek.Verileri içeri aktarmak için boş veya eski bir hedef
veritabanı zaten mevcut olmalı ve komutu çalıştırdığınız MySQL kullanıcısı bu veritabanına
yazma erişimine sahip olmalıdır:
mysql -u [username] -p db1 < db1-backup.sql
3.Tek bir tabloyu geri yüklemek, verileri almak için hazır bir hedef veritabanına sahip
olmalısınız:
mysql -u dbadmin -p db1 < db1-table1.sql
4. Fiziksel bir yedek alınma durumunda veritabanını durdurup mevcut dosyaları datadir
dizininde bahsedilen yere kopyalamak ve dosyaların izinlerini ayarlayıp veritabanı yeniden
başlatılır.
systemctl stop mysql
tar zxvf /opt/db-backups/db-archive.tar.gz -C .
mv /var/lib/mysql /var/lib/mysql-old
mkdir /var/lib/mysql
mv ~/var/lib/mysql/* /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl restart mysql

More Related Content

Similar to Mysql2

Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdanOrneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdanAnar Godjaev
 
Oracle database architecture
Oracle database architectureOracle database architecture
Oracle database architecture
Hızlan ERPAK
 
Fiziksel Standby Database Kurulum
Fiziksel Standby Database KurulumFiziksel Standby Database Kurulum
Fiziksel Standby Database KurulumAnar Godjaev
 
DATABASEI ARCHIVE MODA ALMA
DATABASEI ARCHIVE MODA ALMADATABASEI ARCHIVE MODA ALMA
DATABASEI ARCHIVE MODA ALMAAnar Godjaev
 
Stored procedure
Stored procedureStored procedure
Stored procedureoktaygokgol
 
Redologlar ve Yöneti̇mi̇
Redologlar ve Yöneti̇mi̇Redologlar ve Yöneti̇mi̇
Redologlar ve Yöneti̇mi̇Anar Godjaev
 
Oracle11g
Oracle11gOracle11g
Oracle11g
Ensar Yurt
 
Database Vault / Verinin Güvenliği
Database Vault /  Verinin GüvenliğiDatabase Vault /  Verinin Güvenliği
Database Vault / Verinin GüvenliğiAnar Godjaev
 
Instance ve Media Bozukluklarını Inceleme
Instance ve Media Bozukluklarını IncelemeInstance ve Media Bozukluklarını Inceleme
Instance ve Media Bozukluklarını IncelemeAnar Godjaev
 
Mysql nedir ve nasıl kullanılır
Mysql nedir ve nasıl kullanılırMysql nedir ve nasıl kullanılır
Mysql nedir ve nasıl kullanılır
sibug
 
Recovery Manager (RMAN)
Recovery Manager (RMAN)Recovery Manager (RMAN)
Recovery Manager (RMAN)Anar Godjaev
 
Yeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12cYeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12c
Özgür Umut Vurgun
 
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
atifceylan
 
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Anar Godjaev
 
DatabaseStartup&Shutdownshutdownshıtdown.pptx
DatabaseStartup&Shutdownshutdownshıtdown.pptxDatabaseStartup&Shutdownshutdownshıtdown.pptx
DatabaseStartup&Shutdownshutdownshıtdown.pptx
MehvesDemirel
 
Pwnlydays - Linux 101
Pwnlydays - Linux 101Pwnlydays - Linux 101
Pwnlydays - Linux 101
canyoupwn.me
 
Caffe kılavuzu
Caffe kılavuzuCaffe kılavuzu
Caffe kılavuzu
Birol Kuyumcu
 
Streaming replication
Streaming replicationStreaming replication
Streaming replication
AliGralp1
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden GateAnar Godjaev
 

Similar to Mysql2 (20)

Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdanOrneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
Orneklere Oracle 11gR2 ve Genel Kavramlar Isimli kitabdan
 
Oracle database architecture
Oracle database architectureOracle database architecture
Oracle database architecture
 
Fiziksel Standby Database Kurulum
Fiziksel Standby Database KurulumFiziksel Standby Database Kurulum
Fiziksel Standby Database Kurulum
 
DATABASEI ARCHIVE MODA ALMA
DATABASEI ARCHIVE MODA ALMADATABASEI ARCHIVE MODA ALMA
DATABASEI ARCHIVE MODA ALMA
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Redologlar ve Yöneti̇mi̇
Redologlar ve Yöneti̇mi̇Redologlar ve Yöneti̇mi̇
Redologlar ve Yöneti̇mi̇
 
Oracle11g
Oracle11gOracle11g
Oracle11g
 
Database Vault / Verinin Güvenliği
Database Vault /  Verinin GüvenliğiDatabase Vault /  Verinin Güvenliği
Database Vault / Verinin Güvenliği
 
Instance ve Media Bozukluklarını Inceleme
Instance ve Media Bozukluklarını IncelemeInstance ve Media Bozukluklarını Inceleme
Instance ve Media Bozukluklarını Inceleme
 
Mysql nedir ve nasıl kullanılır
Mysql nedir ve nasıl kullanılırMysql nedir ve nasıl kullanılır
Mysql nedir ve nasıl kullanılır
 
Recovery Manager (RMAN)
Recovery Manager (RMAN)Recovery Manager (RMAN)
Recovery Manager (RMAN)
 
Raid technologies
Raid technologiesRaid technologies
Raid technologies
 
Yeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12cYeni başlayanlar i̇çin Oracle 12c
Yeni başlayanlar i̇çin Oracle 12c
 
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
DBA ve Geliştiriciler İçin Başarımı Artırıcı Öneriler - PostgreSQL Konferansı...
 
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
 
DatabaseStartup&Shutdownshutdownshıtdown.pptx
DatabaseStartup&Shutdownshutdownshıtdown.pptxDatabaseStartup&Shutdownshutdownshıtdown.pptx
DatabaseStartup&Shutdownshutdownshıtdown.pptx
 
Pwnlydays - Linux 101
Pwnlydays - Linux 101Pwnlydays - Linux 101
Pwnlydays - Linux 101
 
Caffe kılavuzu
Caffe kılavuzuCaffe kılavuzu
Caffe kılavuzu
 
Streaming replication
Streaming replicationStreaming replication
Streaming replication
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden Gate
 

More from ergün elvan bilsel

Güvenli İstemci Yönetim Sistemi
Güvenli İstemci Yönetim SistemiGüvenli İstemci Yönetim Sistemi
Güvenli İstemci Yönetim Sistemi
ergün elvan bilsel
 
Güvenli İstemci Yönetim Sistemi
Güvenli İstemci Yönetim SistemiGüvenli İstemci Yönetim Sistemi
Güvenli İstemci Yönetim Sistemi
ergün elvan bilsel
 
Single mod
Single modSingle mod
Pam time
Pam timePam time
Gemi Stabilitesi
Gemi StabilitesiGemi Stabilitesi
Gemi Stabilitesi
ergün elvan bilsel
 
Pendik sulzer
Pendik sulzerPendik sulzer
Pendik sulzer
ergün elvan bilsel
 
Use of lng
Use of lngUse of lng
Renewable energy on modern ships
Renewable energy on modern shipsRenewable energy on modern ships
Renewable energy on modern ships
ergün elvan bilsel
 
Impa sunumu
Impa sunumuImpa sunumu
Impa sunumu
ergün elvan bilsel
 

More from ergün elvan bilsel (9)

Güvenli İstemci Yönetim Sistemi
Güvenli İstemci Yönetim SistemiGüvenli İstemci Yönetim Sistemi
Güvenli İstemci Yönetim Sistemi
 
Güvenli İstemci Yönetim Sistemi
Güvenli İstemci Yönetim SistemiGüvenli İstemci Yönetim Sistemi
Güvenli İstemci Yönetim Sistemi
 
Single mod
Single modSingle mod
Single mod
 
Pam time
Pam timePam time
Pam time
 
Gemi Stabilitesi
Gemi StabilitesiGemi Stabilitesi
Gemi Stabilitesi
 
Pendik sulzer
Pendik sulzerPendik sulzer
Pendik sulzer
 
Use of lng
Use of lngUse of lng
Use of lng
 
Renewable energy on modern ships
Renewable energy on modern shipsRenewable energy on modern ships
Renewable energy on modern ships
 
Impa sunumu
Impa sunumuImpa sunumu
Impa sunumu
 

Mysql2

  • 1. MySQL/MariaDB Notları 1. MariaDB/ MySQL Loglarına Genel Bakış 2. MySQL/MariaDB'yi Yedeklemeklerine Genel Bakış
  • 2. MariaDB/ MySQL Loglarına Genel Bakış Bu dokümanda, farklı logların ve logları kaydetmenin nasıl etkinleştirileceği, nasıl devre dışı bırakılacağına ilişkin genel bir bakış sunulmaktadır. Hata Logları • Her zaman etkindir. • Genellikle /var dizini altında bulunan bir dosyadır, ancak bazı dağıtımlar bunu başka dizinlere taşıyabilir. • Tüm kritik hatalar burada kaydedilir. Resim 1 de örnek olarak mariadb konfigurasyon dosyasında, log dosyalarının dizinlerinin yeri belirtilmiştir. Genel Sorgu Logu • general_log ile etkin konuma getirilir. • Tüm sorguları bir dosyaya veya tabloya kaydeder. • Sorguları ayıklamak veya denetlemek için kullanışlıdır. • general_log değerini 1 olarak ayarlayarak aktif hale getirilir 0 değeri girilerek devre dışı bırakabilirsiniz. Resim 1
  • 3. Resim 2 de mariadb konfigurasyon dosyanın içinde genel sorgu loglarını kaydedileceği dizni görüyorsunuz. Mevcut “#” işaretini kaldırarak genel sorgu loglarını dosyaya kaydedilmesini sağlayabilirsiniz. Logları mysql in içindeki tablolara kaydetmek için; SET global general_log = 1; SET global log_output = 'table'; Resim 3 de örnek olarak gösterilmiştir. Resim 2 Resim 3
  • 4. Kayıt edilen logları: select * from mysql.general_log; komutu ile görüntülenebilir. Resim 4 de örnek olarak logların bir görüntüsü alınmıştır. Logların dosyada tutulması isteniyor ise ; SET global log_output = 'FILE'; SET global general_log_file='/dizin/dosya.log'; SET global general_log = 1; Resim 4
  • 5. Resim5 de örnek olarak yukarıdaki komutlar çalıştırılmıştır. /opt dizini altında oluşturduğumuz mysql.log dosyasının örnek bir görüntüsü resim 6 da gösterilmiştir. Yavaş Sorgu Logu Yavaş sorgular veritabanı performansını ve genel sunucu performansını etkileyebilir.MySQL'deki yavaş sorgu logu özelliği, önceden tanımlanmış bir zaman sınırını aşan sorguları loga kaydetmenizi sağlar.Bu, verimsiz veya zaman alıcı sorguları bulma görevini büyük ölçüde basitleştirir. Yavaş sorgu loglarını etkinleştirmek için; SET GLOBAL slow_query_log = 'ON'; Devredışı bırakmak için; SET GLOBAL slow_query_log = 'OFF'; Resim 5 Resim 6
  • 6. Resim 7 de örnek olarak gösterilmiştir. Yavaş sorgu logu için ayarlayabileceğiniz ek seçenekler vardır: Varsayılan olarak, yavaş sorgu günlüğü etkin olduğunda, çalışması 10 saniyeden uzun süren herhangi bir sorguyu loga kaydeder. Bu aralığı değiştirmek için, X'i saniye cinsinden zamanla değiştirerek aşağıdaki komutu yazın : SET GLOBAL long_query_time = X ; Resim 8 de örnek olması için 5 saniyeye ayarlanmıştır. Log dizini veya dosya adını değiştirmek için, aşağıdaki komutu yazın, yolu dosyanın yoluyla ve dosya adını logun dosya adının adıyla değiştirin: SET GLOBAL slow_query_log_file = '/dizin/dosya'; Resim 9 da örnek olarak /opt dizinindeki yavassorgu.log dizine yol gösterilmiştir. Resim 7 Resim 8 Resim 9
  • 7. Yavaş sorgu logu düzgün çalıştığını doğrulamak için; SELECT SLEEP (y); y değeri belirlediğiniz değerden fazla olması gerekir. Resim 10 da y değeri 10 olarak belirlenmiştir. Resim 11 de örnek olarak yavassorgu.log dosyası içinde çalıştırdığımız sorgunun kaydı gözükmektedir. Resim 10 Resim 11
  • 8. MySQL/MariaDB'yi Yedeklemeklerine Genel Bakış MySQL ve MariaDB, bir veritabanı veya veritabanı sistemi yedeği oluşturma işlemini basitleştirmek için mysqldump yardımcı programını içerir. Bu aracı yalnızca veritabanı işleminiz erişilebilir ve çalışıyorsa kullanabilirsiniz. Veritabanınıza herhangi bir nedenle erişilemiyorsa, bunun yerine verilerinizi içeren dosya sistemi yapısının bir kopyası olan fiziksel bir yedekleme oluşturabilirsiniz. Bu dokümanda sırası ile mysqldump yardımı ile full backup, table bakup, Cron ile Yedeklemeleri Otomatikleştirme ve fiziksel yedekleme gösterilecektir. mysqldump Komutunun Genel Sözdizimi • mysqldump -u [kullanıcı adı] -p [varitabanı ismi] > [dosya adı]-$(date +%F).sql • mysqldump yedekleme işlemine başlamadan önce bir parola ister. • Veritabanının boyutuna bağlı olarak tamamlanması biraz zaman alabilir. • Veri tabanı yedeklemesi, komutun çalıştırıldığı dizinde oluşturulacaktır. • -$(date +%F) dosya adına bir zaman damgası ekler. Tüm bir Veritabanı Yönetim Sisteminin (DBMS) yedeğini oluşturun: mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$ (date +%F).sql -u root -p
  • 9. --single-transaction : Veritabanının tamamını kilitlemek yerine, bu, mysqldump'un işlem sırasında mevcut durumdaki veritabanını okumasını ve tutarlı bir veri dökümü yapmasını sağlar. --quick : Büyük tabloları, tüm tabloyu bellekte sığacak kadar RAM olmasını gerektirmeyen bir şekilde okur. --lock-tables=false :Bu, mysqldump süresince tüm tabloları kilitleyerek canlı bir ortamda kullanılmasını kötü bir seçenek haline getirir. Bu durumu önlemek için örnekte canlı bir ortamda false durumuna getirilmiştir. Resim 12 de örnek olarak veritabanının yönetim sisteminin yedeği oluşturulmuştur. Belirli bir veritabanını yedekleyin. elvan_eğitim veritabı yerine yedeklemek istediğiniz veritabanının adı ile değiştirin : mysqldump -u root -p elvan_eğitim --single-transaction --quick --lock-tables=false > elvan_eğitim-backup-$(date +%F).sql Resim 13 de örnek olarak elvan_eğitim veritabının yedeği alınmıştır. Resim 12 Resim 13
  • 10. Herhangi bir veritabanından tek bir tablosunu yedeklemek. Örnekte django_admin_log tablosu, elvan_egitim veritabanından yedeği alınmıştır: mysqldump -u root -p --single-transaction --quick --lock-tables=false elvan_eğitim django_admin_log > elvan_eğitim-django_admin_log-$(date +%F).sql Resim 14 de örnek olarak elvan_eğitim veritabanından django_admin_log tablosunun yedeği alınmıştır. Cron ile Yedeklemeleri Otomatikleştirme /etc/crontab Veritabanı yedeklemelerini düzenli olarak zamanlamak için komutlar eklenebilir . Yedeklemeyi gerçekleştirecek MySQL root kullanıcısının giriş bilgilerini saklamak için bir dosya oluşturun. Resim 15 de örnek olarak /home/erdem/.myconfig.cnf dosyası oluşturulmuş ve bilgiler girilmiştir. Resim 14 Resim 15
  • 11. Kimlik bilgileri dosyasının izinlerini kısıtla: chmod 600 .mylogin.cnf Cron iş dosyasını oluşturun. Aşağıda her gün saat 01: 00'de tüm veritabanı yönetim sistemini yedeklemek için örnek bir cron işi verilmiştir: 0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/erdem/.my.cnf -u root --single- transaction --quick --lock-tables=false --all-databases > full-backup-$(date +%F).sql Resim 16 da cron.daily dizinin içine mysqldump dosyası oluşturulmuştur. Home dizini altındaki erdem kullanıcı dizinin altına oluşturduğumuz örnek .mylogin.cnf dosyasında mySQL root kullanıcısı ve şifresini tutmaktadır. MariaDB/MySQL için Fiziksel Yedek Mysqldump tercih edilen yedekleme yöntemi olsa da, sadece veritabanı sunucusu erişilebilir olduğunda ve çalışıyorken çalışır. Veritabanı başlatılamazsa veya ana bilgisayar sistemine erişilemiyorsa, veritabanı doğrudan kopyalanabilir. 1. mysql servisini durdurun: systemctl stop mysql 2. Veritabanı dizininizi bulun. /var/lib/mysql/ Çoğu sistemde olması gerekir, ancak bu dizin yoksa /etc/mysql/my.cnf, veri dizinine giden yolu inceleyin . Resim 16
  • 12. Resim 17 örnek olarak Pardus 17.1 üzerine kurulu bir mariadb 10.1.38 veriyonuna sahip veritabanı konfigürasyonu /etc/mysql/mariadb.conf.d/50-server.cnf dizininde bulunmaktadır. Datadir ise veritabanı dizinini belirtmektedir. 3.Yedeklerinizi saklamak için bir dizin oluşturun.Örnek olarak /opt/db-backups dizini kullanılmıştır, bunu ihtiyaçlarınıza göre değiştirebilirsiniz: mkdir /opt/db-backups 4.MySQL'in veri dizinini bir depolama konumuna kopyalayın. Cp, rsync gibi komutlarda kullanılabilir daha güvenilir bulduğumuz tar komutu ile sıkıştırıp kopyalama işleminde gerçekleştireceğiz. tar cfvz /opt/db-backups/db-$(date +%F).tar.gz /var/lib/mysql/* 5.MySQL hizmetini yeniden başlatın: systemctl restart mysql Resim 17
  • 13. Geri Yükleme 1.DBMS yedeklemesinin tamamını geri yüklenmek. Sizden MySQL root kullanıcı şifresini girmeniz istenecek: Bu veritabanı sistemindeki tüm mevcut verilerin üzerine yazılacak mysql -u root -p < full-backup.sql 2.Tek bir veritabanı geri yüklemek.Verileri içeri aktarmak için boş veya eski bir hedef veritabanı zaten mevcut olmalı ve komutu çalıştırdığınız MySQL kullanıcısı bu veritabanına yazma erişimine sahip olmalıdır: mysql -u [username] -p db1 < db1-backup.sql 3.Tek bir tabloyu geri yüklemek, verileri almak için hazır bir hedef veritabanına sahip olmalısınız: mysql -u dbadmin -p db1 < db1-table1.sql 4. Fiziksel bir yedek alınma durumunda veritabanını durdurup mevcut dosyaları datadir dizininde bahsedilen yere kopyalamak ve dosyaların izinlerini ayarlayıp veritabanı yeniden başlatılır. systemctl stop mysql tar zxvf /opt/db-backups/db-archive.tar.gz -C . mv /var/lib/mysql /var/lib/mysql-old mkdir /var/lib/mysql mv ~/var/lib/mysql/* /var/lib/mysql
  • 14. chown -R mysql:mysql /var/lib/mysql systemctl restart mysql