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 tanımına bakmalıyız.

AA

MariaDB

MariaDB, GNU Genel Kamu Lisansı altında serbest olarak kullanılabilen, MySQL’in yaratıcısı olan Monty Widenius1'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 sistemidir2.

Tabi geliştirmelerle birlikte farklı yaklaşımlar da sürümlerle birlikte sunulmaya başlandı3. Ancak, özetlemek gerekirse4; 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 kullanabiliyor5. Uzak erişimler ve dağıtık yapılar için uygun. Artık geliştirilmiyor.
XtraDB
Percona6 tarafından geliştirilen, InnoDB ile geriye dönük uyumlu7 ve yerine kullanılabilmesine ek olarak daha çok özellik sunan depolama motorudur8.
FederatedX
Federated ile geriye dönük uyumlu ve yerine kullanabilen, yeni özelliklerle birlikte iyileştirilmeye ve geliştirilmeye devam edilen depolama motoru9.
Aria
MariaDB 5.110 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ına11 karşın barındırdığı sorunlar nedeniyle aktif bir şekilde geliştiril(e)mediği için MariaDB 5.5]12 pasifleştirilen bir tablo tipi13.
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 motoru14.
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 motoru15 16.

Veritabanı motoru sıralamasında hızlı bir yükseliş yakalayan, Wikipedia tarafından da tercih edildiğini belirtmekte fayda var17.

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 muhtemel18. 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 gerekecektir19.

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şlayabiliriz20. Elbette öncelikle başta server ve client olmak üzere araçları silecek ve yerlerine MariaDB’ye ait olanları yükleyeceğiz21.

sudo apt-get remove --purge mysql*
sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get remove dbconfig-mysql
sudo apt-get dist-upgrade

Silme işleminin ardından yapılandırma aşamasına geçebiliriz. MariaDB > Setting up MariaDB Repositories sayfası üzerinden22 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. Öncelikle /etc/ klasörü içerisinde bir nedenden dolayı kalan bir mysql klasörü olma ihtimalini göz önünde bulundurarak bu klasörü silelim.

rm -R /etc/mysql

Güncel sürümü key tanımlayıp yüklemek isterseniz aşağıdaki dağıtımı indirerek devam edebilirsiniz.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] ftp://ftp.ulak.net.tr/pub/MariaDB/repo/10.3/ubuntu bionic main'
sudo service mariadb restart

Ya da apt-get içeiriğindeki yayınlanmış son paketi indirebiliriz.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mariadb-server mariadb-client #"apt search mariadb" ile güncel bilgi alabilirsiniz.
sudo service mariadb restart

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

Olası Karşılaşılabilecek Sorunlar

Kurulum23, yükleme24 ve yapılandırma25 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 muhtemel26. Hata almamışsanız klasör içeriğinde mariadb conf dosyası olup olmadığına bakalım. Her durumda hatayı düzeltmemiz gerekiyor27 28 29 30.

/etc/init.d/mysql stop; mysqld_safe --skip-grant-tables &
mysql -uroot
sudo mysql_secure_installation
mysql_upgrade -p
sudo service mariadb restart

Şimdi tekrar bir durum kontrolü yapalım.

service mariadb 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 'yeni-sifreniz';
SET PASSWORD FOR 'wordpress'@'localhost' = PASSWORD('yeni-sifreniz');
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.


  1. Monty says 
  2. MariaDB 
  3. MariaDB versus MySQL - Features. MariaDB 
  4. Binnur Kurt. (2016). Hangi MySQL Sunucusunu Kullanmalıyım? 
  5. The FEDERATED Storage Engine. MySQL 5.7 Reference Manual 
  6. Percona and the MariaDB Foundation. Percona 
  7. InnoDB and XtraDB. MariaDB 
  8. About XtraDB 
  9. What is the FederatedX storage engine? MariaDB 
  10. Changes & Improvements in MariaDB 5.1. MariaDB 
  11. Changes & Improvements in MariaDB 5.3. MariaDB 
  12. Changes & Improvements in MariaDB 5.5. MariaDB 
  13. About PBXT. MariaDB 
  14. OQGRAPH. MariaDB 
  15. Javacii. (2017). Sphinx ,Apache Solr, Elasticsearch ve karşılaştırması 
  16. About SphinxSE. MariaDB 
  17. Recep Serit. (2013). Wikipedia MySQL'den MariaDB'ye Geçiyor. BilişimLife 
  18. alix. (2016). MariaDB installd but wan't start. CentOS 
  19. Connecting to MariaDB. MariaDB 
  20. How to Drop-In replace MySQL with MariaDB?. AskUbuntu 
  21. Ahmet Melih Başbuğ. (2015). MariaDB Galera Cluster Kurulumu 
  22. Setting up MariaDB Repositories. MariaDB 
  23. Vultr (2014). Install MariaDB on Ubuntu 14.04 
  24. MariaDB. (2014). How to migrate from MySQL to MariaDB on Linux in five steps 
  25. Upgrading from MySQL to MariaDB. MariaDB 
  26. What to Do if MariaDB Doesn't Start. MariaDB 
  27. problem while starting mariadb server?. MariaDB 
  28. Ashish Sood. (2015). [SOLVED] Mariadb failed restart everytime. CentOS 
  29. J. Mays. (2020). How to Install MariaDB 5.5 on Ubuntu 14.04 LTS. Liquid Web 
  30. Hydra Starmaster. (2015). Ubuntu 15.10 mysql error 1524 - unix_socket. AskUbuntu