MariaDB Nedir? MySQL Üzerine Nasıl Yapılandırılır?

DigitalOcean WordPress kurulumunda MySQL veritabanı sunucusu otomatik olarak yüklenmekte. Peki, MariaDB ile değiştirmek istersek ne yapmalıyız? “Neden böyle bir gereksinim duyalım ki?” diye sorduğunuzu duyar gibiyim. Bu sorunun cevabı için öncelikle MariaDB nedir bunu açıklamalıyım.

MariaDB Nedir?

MariaDB, GNU Genel Kamu Lisansı altında serbest olarak kullanılabilen, MySQL’in yaratıcısı olan Monty Widenius‘un MySQL’in kodunu çatallayıp (fork) “çoğunlukla” MySQL ile aynı komutları, arayüzleri ve API’leri destekleyecek şekilde geliştirmeye başlanan (MariaDB 5.2 >= MySQL 5.2), toplulukla iç içe hızlı ve verimli şekilde geliştirilmeye devam edilen MySQL ilişkisel veritabanı yönetim sistemidir. Tabi geliştirmelerle birlikte farklı yaklaşımlar da sürümlerle birlikte sunulmaya başlandı. Detaylı bir değerlendirme için MariaDB versus MySQL – Features sayfasını inceleyebilirsiniz. Ancak, özetlemek gerekirse;

MySQL

  • InnoDB: Gelişmiş MVCC (Multiversion Concurrency Control) yapısıyla standart transaction destekli depolama motorudur.
  • Federated: Uzak MySQL veritabanı sunucularına replication ya da cluster teknolojilerine gerek durmadan erişim sağlayıp local tek bir veritabanı yaratmak için kullanabiliyor. Uzak erişimler ve dağıtık yapılar için uygun. Artık geliştirilmiyor.

MariaDB

  • XtraDB: Percona tarafından geliştirilen, InnoDB ile geriye dönük uyumlu ve yerine kullanılabilmesine ek olarak daha çok özellik sunan depolama motorudur.
  • FederatedX: Federated ile geriye dönük uyumlu ve yerine kullanabilen, yeni özelliklerle birlikte iyileştirilmeye ve geliştirilmeye devam edilen depolama motoru.
  • Aria: MariaDB 5.1 ile birlikte ön tanımlı olarak sunulmaya başlanan, internal on-disk tablolarla MyISAM tablo formatı yerine kullanılan, hem atomik hem transaction tabloları için ön tanımlı seçim haline gelmesi hedeflenen tablo tipi.
  • PBXT: MariaDB 5.3‘e kadar ön tanımlı olarak sunulmasına karşın barındırdığı sorunlar nedeniyle aktif bir şekilde geliştiril(e)mediği için MariaDB 5.5 pasifleştirilen bir tablo tipi.
  • OQGraph (Open Query Graph): Hiyerarşik (tree structures) ve karmaşık grafların (complex graphs / birçok yönde ve çok sayıda bağlantı içeren düğümler) kullanılmasına olanak tanıyan hesaplama motoru.
  • SphinxSE: MariaDB yerleşik full-text aramalara alternatif olarak veri saklanması ve aranması için Sphinx arama motorunu (the Sphinx daemon) kullanmaya olanak tanıyan bir depolama motoru.

E-Posta Bültenine Kayıt Olmak İster misin?

E-posta listesine katılarak yeni yazılardan haberdar olabilirsin.

Veritabanı motoru sıralamasında hızlı bir yükseliş yakalayan, Wikipedia tarafındanda tercih edilen MariaDB‘nin kod yapısı ile ilgili bir karşılaştırma için SQL Server ile MariaDB Kod Yapısı Karşılaştırma başlıklı yazıyı önerebilirim.

Bu kadar bilgi ve karşılaştırmanın ardından MySQL’den MariaDB’e geçiş ve sıfırdan MariaDB kurulumu ile ilgili detaylara geçebiliriz.

MySQL üzerine MariaDB Kurulumu

Öncelikle, bir sonraki aşamada sürecin sorunsuz ilerlediğini görebilmemiz için tabloları listeleyelim ve yedekleyelim. Bu işlemde veritabanı, tablolar ve kullanıcılarınızın silineceğini bilmelisiniz. Bu nedenle yedekleme yapmış olmanız önemli. Ara ara karşılaşabileceğiniz olası yaygın durumlara karşı açıklamalar ekleyeceğim. Açıklama dışı bir sorun söz konusu olursa yorum olarak paylaşmanız durumunda yardımcı olmaya çalışırım.

SSH bağlantımızı sağlayarak başlayalım.

ssh root@sunucu-ip-adresi

WordPress kurulumu aşamasında MySQL şifreleriniz root ve wordpress kullanıcılar için ayrı ayrı olmak üzere /root/.digitalocean_password dosyasında saklanmaktadır. Bu dosyayı nano ile görüntüleyip bir kenara not etmenizde fayda var. Ben iTerm ile sürecin tamamını tek bir seferde görebilmeniz için ekranı parçalara bölerek iletiyorum. Evet, şifreleri görüntüleyelim o halde.

nano /root/.digitalocean_password

Komut sonrasında açılacak olan dökümanda 2 satır halinde ilki root, ikinci wordpress kullanıcısına ait olmak üzere şifrelerinizi görebilirsiniz.

root_mysql_pass="****"
wordpress_mysql_pass="***"

WordPress kurulum aşamasında buradaki wordpress_mysql_pass şifresiyle yapılandırdığı için şifreyi değiştirmeniz durumunda hem MySQL hem de WordPress düzenlemelerinde sorunlar yaşamanız muhtemel. Bu nedenle ayarların mümkün olduğu kadar yapılandırıldıkları halleriyle kalması önemli. MySQL erişimi ile wordpress kullanıcısı üzerinden veritabanı ve tablolara göz atmak isterseniz önce mysql erişimini başlatmanız gerekecektir.

mysql -u wordpress -p;

Komut sonrasında sizden kullanıcıya ait şifre istenecektir. .digitalocean_password dosyasında kayıtlı wordpress_mysql_pass‘a atanmış şifreyi girerek onaylayabilirsiniz. Evet, şifrede bir yanlışlık olmamışsa veritabanı ve tabloları görüntüleyebiliriz.

show databases;
use wordpress;
show tables;
quit;

Olası bir aksiliğe ve veri kaybına karşı temkinli olmak adına mysqldump -u [username] -p [database name] > [database name].sql komutu ile wordpress veritabanının bir kopyasını root dizine kayıt edelim.

cd ~
mysqldump -u wordpress -p wordpress > wordpress.sql;
ls -l

Evet, dizin içerisinde wordpress.sql dosyasını gördüysek yedekleme işlemi tamamlanmış demektir. Artık ön tanımlı olarak sunulan MySQL kurulumu üzerine MariaDB kurulumuna başlayabiliriz. Elbette öncelikle başta server ve client olmak üzere araçları silecek ve yerlerine MariaDB’ye ait olanları yükleyeceğiz.

sudo apt remove --purge mysql-server mysql-client mysql-common
sudo apt autoremove
sudo apt autoclean

Silme işleminin ardından yapılandırma aşamasına geçebiliriz. MariaDB > Setting up MariaDB Repositories sayfası üzerinden ben Ubuntu 17.04 dağıtımı üzerine 10.2 versiyonunu ULAKBIM üzerinden indirmeyi uygun gördüm. İlgili sayfadan uygun tercihlerle kendi indirme yolunuzu oluşturabilirsiniz. O halde indirme, kurulum ve yapılandırma işlemlerine başlayalım.

sudo apt install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386] ftp://ftp.ulak.net.tr/pub/MariaDB/repo/10.2/ubuntu zesty main'
sudo apt update
cd /etc/
rm -R mysql
sudo apt install mariadb-server
sudo apt install mariadb-client
/etc/init.d/mysql restart

Evet, wordpress kurulumunuzu kontrol edebilirsiniz. Sorunsuz bir şekilde çalıştığını görebilirsiniz.

Olası Karşılaşılabilecek Sorunlar

Kurulum, yükleme ve yapılandırma adımından sonra /etc/mysql/ erişiminde sorun yaşayabilirsiniz ya da mysql klasörü içerisinde mariadb conf. dosyası oluşturulamamış olabilir.

Kontrol için şu komutları kullanabilirsiniz.

cd /etc/
ls -d -l m*

Listede mysql var ise cd ile içeriğini görüntüleyelim. Hata almış olmanız muhtemel. Hata almamışsanız klasör içeriğinde mariadb conf dosyası olup olmadığına bakalım. Her durumda hatayı düzeltmemiz gerekiyor.

/etc/init.d/mysql stop
<a href="https://askubuntu.com/questions/705458/ubuntu-15-10-mysql-error-1524-unix-socket" rel="noopener" target="_blank">mysqld_safe --skip-grant-tables &</a>
mysql -uroot
sudo mysql_secure_installation
mysql_upgrade -p
/etc/init.d/mysql restart

Şimdi tekrar bir durum kontrolü yapalım.

/etc/init.d/mysql status

Yeniden Veritabanı ve Kullanıcı Oluşturmak

Veritabanı listesinde wordpress’i görememiş ya da wordpress kullanıcısı silinmiş olabilir. Kısaca veri kaybı yaşamış olabilirsiniz. Bu durumda root olarak veritabanına erişip tekrar kullanıcı ve veritabanı oluşturacağız.

mysql -u root -p;

Bu defa .digitalocean_password dosyasında kayıtlı root_mysql_pass şifresi ile giriş yapacağız. yeni-sifreniz alanına .digitalocean_password dosyasında yer alan wordpress_mysql_pass şifrenizi girerseniz wp-config.php içerisinde düzenleme yapmak zorunda kalmazsınız. Bağlantı sağlandıktan sonra uygulayacağımız komutlar şu şekilde:

CREATE DATABASE wordpress;
show databases;
select user from mysql.user;
SHOW GRANTS;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '<mark>yeni-sifreniz</mark>';
SET PASSWORD FOR 'wordpress'@'localhost' = PASSWORD('<mark>yeni-sifreniz</mark>');
select user from mysql.user;
GRANT ALL PRIVILEGES ON * . * TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
quit;

Veritabanı ve kullanıyı oluşturduğumuza göre yedeklediğimiz veritabanını mysql -u [username] -p newdatabase < [database name].sql; komutu ile içeri aktarabiliriz.

mysql -u wordpress -p wordpress < ~/wordpress.sql;

Evet, aşağı yukarı hepsi bu kadar. Umuyorumki sorunsuz bir şekilde süreç sonlanacaktır. Ek olarak süreci ve karşılaşılan durumları akış olarak görebilmeniz için video olarak da iletiyorum.

E-Posta Bültenine Kayıt Olmak İster misin?

E-posta listesine katılarak yeni yazılardan haberdar olabilirsin.

Leave a Reply