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