Bu yazıda, MySQL/MariaDB veritabanı performansını izlemek için Ubuntu’da PMM’nin (Percona Monitoring and Management) nasıl kurulacağını okuyacaksınız .
Percona İzleme ve Yönetim (PMM) Özellikleri
Percona, açık kaynaklı veritabanı çözümleri sağlayıcısıdır. PMM özellikleri:
- Ücretsiz ve açık kaynak. PMM, istemci-sunucu modelini kullanır. İstemci ve sunucu yazılımı kendi donanımınıza yüklenir.
- MySQL/MariaDB, PostgreSQL, MongoDB ve ProxySQL’i destekler, böylece tüm açık kaynak veritabanlarınızı tek bir yerden izleyebilirsiniz.
- MySQL/MariaDB için InnoDB, XtraDB ve MyRocks depolama motorlarını destekler.
- MongoDB için WiredTiger, MMAPv1, InMemory ve RocksDB depolama motorlarını destekler.
- Sorgu analitiği ve metrik izleyicileri.
- Genel veritabanı güvenlik sorunları için kontroller çalıştırmanızı sağlar
- Veri güvenliğini artırmak için beklenmeyen veritabanı sorgularını kolayca belirleyin.
- Percona XtraDB Kümesini destekler.
PMM’yi kullanmak için, sunucu bileşenini merkezi bir sunucuya kurmanız, ardından istemci bileşenini izlemek istediğiniz MySQL/MariaDB sunucunuza kurmanız gerekir. İstemci, performans istatistiklerini sunucuya gönderir. Yalnızca bir MySQL/MariaDB sunucunuz varsa, hem sunucu hem de istemci bileşeni yükleyebilirsiniz.
Adım 1: Docker’ı Ubuntu 22.04/20.04 Sunucusuna Kurun
PMM sunucu bileşeni bir Docker görüntüsü olarak dağıtılır, bu nedenle Docker’ı yüklememiz gerekiyor.
Docker, Ubuntu yazılım deposuna dahildir. Ancak en son sürüme sahip olduğumuzdan emin olmak için onu Docker’ın APT deposundan yüklememiz gerekiyor. Ubuntu sunucunuza Docker deposu eklemek için aşağıdaki komutu çalıştırın.
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) kararlı" | sudo tee /etc/apt/sources.list.d/docker.list
Ardından, APT’nin kurulum sırasında paket bütünlüğünü doğrulayabilmesi için Docker GPG anahtarını Ubuntu sistemine aktarmak için aşağıdaki komutu çalıştırın.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Ve bu depo, tüm yazılım havuzlarının kullanmasını önerdiğim HTTPS bağlantısını kullandığı için, apt-transport-https ve ca-certificates paketini de yüklememiz gerekiyor.
sudo apt install apt-transport-https ca-certificates
Son olarak, Ubuntu sisteminizdeki paket dizinini güncelleyin ve docker-ce’yi (Docker Community Edition) kurun.
sudo apt update sudo apt install docker-ce
Docker yüklendikten sonra Docker arka plan programı otomatik olarak başlatılmalıdır. Durumunu şu şekilde kontrol edebilirsiniz:
systemctl status docker
Çalışmıyorsa, arka plan şu komutla eğitim:
sudo systemctl start docker
Ve otomatik olarak devreye girmeyi etkinleştirin:
sudo systemctl enable docker
Docker kontrol sistemi edin.
docker -v
Adım 2: PMM Sunucu Bileşenlerini Kurun
PMM sunucusu için Docker veri birimi oluşturun.
sudo docker create -v /srv --name pmm-data percona/pmm-server:en son /bin/true
PMM sunucusu Docker kapsayıcısını çalıştırın.
sudo docker run -d -p 8000:80 -p 8443:443 --volumes-from pmm-data --name pmm-server --restart always percona/pmm-server:latest
Çalışan Docker kapsayıcılarını listeleyin.
sudo docker ps
pmm-server Docker konteynerinin çalıştığını bulmalısınız.
CONTAINER ID IMAGE COMMAND CREATED STATUS c9199659fdd9 percona/pmm-server:2 "/opt/entrypoint.sh" 9 seconds ago Up 8 seconds (healthy)
Artık PMM web tabanlı kontrol paneline https://server-ip:8443 üzerinden erişebilirsiniz. Varsayılan olarak, kendinden imzalı bir TLS sertifikası kullanır, bu nedenle web tarayıcınıza bir güvenlik istisnası eklemeniz gerekir.
- Firefox’ta Gelişmiş’e tıklayın ve Riski kabul et ve Devam’a tıklayın.
- Google Chrome’da Gelişmiş’i tıklayın ve sunucu-ip’nize (güvensiz) ilerleyin.
Varsayılan kullanıcı adı/parola admin:admin’dir. İlk girişten sonra yeni bir parola belirlemeniz gerekir. (Parola “/” karakteri içermemelidir, aksi takdirde PMM istemcisi PMM sunucusuna bağlanmada sorun yaşar.)
UFW güvenlik duvarını etkinleştirdiyseniz , PMM panosuna erişmek için 8443 numaralı TCP bağlantı noktasına izin vermeniz gerekir.
sudo ufw allow 8443/tcp
PMM kontrol paneli
Adım 3: MySQL/MariaDB Sunucunuza PMM İstemci Bileşenini Kurun
PMM istemcileri, Debian/Ubuntu için Deb paketi deposuna sahiptir.
PMM veri havuzu paketini indirin.
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
Paketi kurun.
sudo apt install ./percona-release_latest*.deb
Şimdi Percona deposu eklendi, yerel paket dizinini güncelleyin ve PMM istemcisini kurun.
sudo apt update sudo apt install pmm2-client
Aşağıdakilerle görebileceğiniz gibi, PMM aracısı otomatik olarak başlayacaktır:
systemctl status pmm-agent
Çalışıyorsa, şununla başlatabilirsiniz:
sudo systemctl enable pmm-agent --now
Ardından, aşağıdaki komutla istemciyi sunucuya bağlayın.
sudo pmm-admin config --server-insecure-tls --server-url=https://admin:admin_assword@your-server-ip:8443
Örnek çıktı:
Checking local pmm-agent status... pmm-agent is running. Registering pmm-agent on PMM Server... Registered. Configuration file /usr/local/percona/pmm2/config/pmm-agent.yaml updated. Reloading pmm-agent configuration... Configuration reloaded. Checking local pmm-agent status... pmm-agent is running.
Şimdi MySQL/MariaDB veritabanını izlemek için PMM istemcisini yapılandırmamız gerekiyor. MySQL/MariaDB konsolunda oturum açın.
sudo mysql -u root
veya
mysql -u root -p
İzleme için bir PMM kullanıcısı oluşturun.
CREATE USER 'pmm'@'localhost' IDENTIFIED BY 'secret_password' WITH MAX_USER_CONNECTIONS 10;
Gerekli izinleri verin.
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'pmm'@'localhost';
Değişiklikleri kayıt edin
FLUSH PRIVILEGES;
İşlem bitince çıkış yapabilirsiniz.
EXIT;
MySQL/MariaDB hizmetini PMM’ye eklemek için aşağıdaki komutu çalıştırın.
sudo pmm-admin add mysql --username=pmm --password=secret_password --query-source=perfschema
Örnek çıktı:
MySQL Service added. Service ID : /service_id/8597086d-828e-47aa-a74f-9c86918af208 Service name: linuxbabe.com-mysql Table statistics collection disabled (the limit is 1000, the actual table count is 2600).
Adım 4: MySQL/MariaDB Veritabanını İzleyin
MySQL/MariaDB’niz yavaşsa, yapmanız gereken ilk şey, veritabanı sunucusundaki yükü izleyen bir ölçüm olan QPS’yi (Sorgu/saniye) kontrol etmektir. Aşağıdaki ekran görüntüsünden de görebileceğiniz gibi, MariaDB veritabanı sunucularımdan biri ağır yük altında (saniyede yaklaşık 700 sorgu).
Ardından, bu SQL sorgularını analiz etmek için Sorgu Analizi (QAN) kullanmanız gerekecektir.
Birden çok veritabanı varsa, Sorgu Analizi paneli size hangi veritabanının en yoğun olduğunu gösterebilir.
MySQL/MariaDB’yi Çalıştırmak için Mükemmel Donanım Nedir?
- Veritabanınız büyükse ve uygulamanızı ölçeklendirmeniz gerekiyorsa en az 8 CPU çekirdeği hazırlayın.
- NVMe SSD’yi kullanın
- GÇ performansını artırmak için RAID kullanın.
- Ne kadar fazla RAM’e sahipseniz, veritabanından o kadar fazla veri bellekte tutulabilir, böylece disk erişiminden kaçınılır.
- Veritabanı performansını büyük ölçüde düşürecek takas alanı kullanmamalısınız.
Veri tabanı tasarımı
Donanımı seçtikten sonra, performanslı bir MySQL/MariaDB veritabanı için bir sonraki adım, geliştiricinin işi olan veritabanınızı nasıl tasarlayacağınızdır. Aşağıdaki faktörler dikkate alınmalıdır:
- Şema : Verilerin mümkün olduğu kadar hızlı alınabilmesi için sisteminizi tasarlayın.
- Veri türleri : Verimli disk depolaması için doğru veriyi seçin.
MySQL/MariaDB Performans Ayar Örneği
İşte /etc/mysql/mariadb.conf.d/50-server.cnf dosyamdaki InnoDB yapılandırması. Bu çok basit bir performans ayarıdır.
innodb_buffer_pool_size = 2048M innodb_buffer_pool_dump_at_shutdown = ON innodb_buffer_pool_load_at_startup = ON innodb_log_file_size = 512M innodb_log_buffer_size = 8M #Improving disk I/O performance innodb_file_per_table = 1 innodb_open_files = 400 innodb_io_capacity = 400 innodb_flush_method = O_DIRECT innodb_read_io_threads = 64 innodb_write_io_threads = 64 innodb_buffer_pool_instances = 3
- InnoDB arabellek havuzu boyutunun toplam RAM’in en az yarısı veya boş RAM’in %70’i olması gerekir. ( Not: Takas yapmaktan kaçınmalısınız.) InnoDB arabellek havuzu, MySQL/MariaDB için geçici bir bellek içi önbellektir, bu nedenle yeterli RAM’iniz varsa, parametreyi artırmalısınız. En iyi senaryo, tüm verilerinizin bellekte kalmasıdır, böylece disk erişimi ortadan kaldırılabilir.
- InnoDB günlük dosyası boyutunun arabellek havuzu boyutunun %25’i olması gerekir.
- InnoDB, Linux ve FreeBSD’de doğrudan IO kullanabilir.
- Okunan IO dizilerini ayarlayın ve IO dizisini maksimuma yazın (64)
- MariaDB’nin 3 InnoDB arabellek havuzu örneğini kullanmasını sağlayın. Örnek sayısı, sisteminizde (CPU çekirdek sayısı) * (çekirdek başına iş parçacığı) olmalıdır.
Değişiklikleri kaydettikten sonra MariaDB’yi yeniden başlatın.
sudo systemctl restart mariadb
mysqltuner’ı kullanma
mysqltuner, MySQL/MariaDB performans ayarı için bir komut dosyasıdır. Ubuntu deposundan yükleyin.
sudo apt install mysqltuner
Sonra kolayca çalıştırın
sudo mysqltuner
Veritabanı sunucunuzu analiz edecek ve önerilerde bulunacaktır. Örneğin, mysqltuner veri boyutumun 23.5G olduğunu tespit etti, bu nedenle innodb_buffer_pool_size’ı 23.5G’ye yükseltmem gerektiğini gösteriyor.
Yazının orijinalini buradan okuyabilirsiniz.