10 Temmuz 2016 Pazar

mysql külüstür

Son günlerde mysql replikasyon ve clusterları ile eğlenip duruyorken, ülkemizde çok fazla galere cluster eklentisiyle, master-master mysql cluster/replikasyon kullanılmadığını fark ettim.

Yolu buradan geçen mysql kullanıcılarına, tavsiyem standard replikasyonları bir tarafa bırakıp, percona extradb cluster veya mariadb'yi galere wsrep eklentisiyle kullanmalarını, en azından test etmelerini tavsiye ederim.

percona extradb cluster - master-master yapısında yüzlerce tablo, milyarlarca satır içeren tabloları rahatlıkla kullanabilirsiniz. Şu ana kadar sanal makineler üzerinde 500 milyon civarında satır içeren tablolarla test yaptım. Aktif olarakta kullanılmaktadır.  Sorun yok. Yeterki düzgün sql sorgusu yapın.



Ubuntu  LTS  16.04  üzerine kurulumuda oldukça basit.

Her hangi ilave repo kullanmadan standart ubuntu reposunu kullanabilirsiniz!
# apt-get install percona-xtradb-cluster-server
Bundan sonra;
                        /etc/mysql/percona-xtradb-cluster.conf.d/mysqld.cnf
dosyasını kendinize göre düzeltmeniz yeterli.


Aşağıdaki örneği inceleyebilirsiniz;

#cat mysqld.cnf
#
# The Percona XtraDB Cluster 5.6 configuration file.
#
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/percona-xtradb-cluster
tmpdir        = /tmp
lc-messages-dir    = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack        = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit    = 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#log_slow_queries    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
server-id        = 3
expire_logs_days    = 10
max_binlog_size         = 100M
binlog_do_db        = include_database_name
#binlog_ignore_db    = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in
# /var/lib/percona-xtradb-cluster.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/percona-xtradb-cluster
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
ssl-ca=/etc/mysql/cert/mysql-cacert.pem
ssl-cert=/etc/mysql/cert/mysql-server-cert.pem
ssl-key=/etc/mysql/cert/mysql-server-key.pem
#
# * Galera
#
# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so
#
# Add address of other cluster nodes here
wsrep_cluster_address=gcomm://10.255.255.51,10.255.255.52,10.255.255.53
#log_bin
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
#
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
#
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
#
# Node #3 address
wsrep_node_address=10.255.255.53
wsrep_node_name=10.255.255.53
#
# SST method
wsrep_sst_method=xtrabackup-v2
#
# Cluster name
wsrep_cluster_name=feza
#
# Authentication for SST method
wsrep_sst_auth="sstuser:sK7mlNeXE"

wsrep_certify_nonPK=1
wsrep_debug=1
wsrep_retry_autocommit=1
wsrep_auto_increment_control=1
wsrep_drupal_282555_workaround=0

#wsrep_provider_options="socket.ssl_key=/etc/mysql/cert/mysql-server-key.pem;socket.ssl_cert=/etc/mysql/cert/mysql-server-cert.pem.pem;socket.ssl_ca=/etc/mysql/cert/mysql-cacert.pem"

remzi@tashan:~$



1 Temmuz 2016 Cuma

Reklam

Bu gün reklam yapmak istiyorum.

Yıllar önce kullandığım


Turbo c++ geliştiren, Borland'ın devam embarcadero firmasını hatırlatayım dedim.

https://www.embarcadero.com/

https://www.idera.com/

Tabi kylix unutmuş değilim.

Linux üzerine uygulama geliştirenler embarcaderoya kylix'i sorabilirler. :-)

Belki soran olunca, Kylix tekrardan canlanır.

23 Haziran 2016 Perşembe

Solaris reklamı - virtualbox da çalışan solaris sisteminin diskinin kapasitesini artırmak

Uzun zamandan beri kullanıdığım solaris sanal makinesinin diskinin dolduğunu görünce, kapasiteyi artırayım diyerek artırdım.

Solaris 10 ve 11 de zfs ile disk kapasitesini artırmak  kolay ve 3-5 sn. bir işlem.

Öncelikle fiziksel disk kapasitesini virtualboxtan artırıyoruz.

remzi@tashan:/mnt/arsiv/vbox/solaris-installation-server$ VBoxManage modifyhd export.vdi --resize 250000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%




 

Fiziksel disk kapasite büyütülmüş ise, solaristen otomatik pool genişletmeyi aktif yaptığımızda zfs diskin büyüdüğünü görüyor ve kendisini yeni boyuta göre ayarlıyor.



Hepsi bu kadar.

Bu özellik raid yapıları içinde geçerlidir.
Örneğin 1 TB ile oluşturulmuş disk havuzlarındaki tüm diskleri sırasıyla 4 TB lik disklerle değiştirdikten sonra disk havuzunun kapasitesini aninda artırabilirsiniz.

Halen Solaris ve zfs test etmediyseniz,


Linkinden solarisi indirerek test edin derim.


 

28 Mayıs 2016 Cumartesi

Konsoldan ekran kartının durumunu öğrenme

ssh ile bilgisayarımıza veya sunucumuza bağlanarak ekran kartının durumunu öğrenmek istediğimizde;

remzi@i6100:~$ aticonfig --odgt  --odgc
aticonfig: This program must be run as root when no X server is active

yukarıdaki gibi hata mesajı alırız. Bundan kurtulmanın yolu, oldukça basit;

Öncelikle ekran çıktısını ekran kartına yönlediriyoruz ve her türlü isteği kabul etmesi için izin veriyoruz.


remzi@i6100:~$ export DISPLAY=:0
remzi@i6100:~$ xhost +
access control disabled, clients can connect from any host
remzi@i6100:~$ aticonfig --odgt  --odgc

Default Adapter - AMD Radeon (TM) R9 380 Series
                  Sensor 0: Temperature - 65.00 C

Default Adapter - AMD Radeon (TM) R9 380 Series
                            Core (MHz)    Memory (MHz)
           Current Clocks :    980           1425
             Current Peak :    980           1425
  Configurable Peak Range : [300-1200]     [150-1750]
                 GPU load :    100%
remzi@i6100:~$

Ekran kartımızın sıcaklığı 65 C derece ve %100 çalışıyor.





23 Nisan 2016 Cumartesi

Günün komutu - Linux sistemlerinde {2016.04.23} - ls (list directory contents)komutunu anlamak

linux kullanıpta ls komutunu bilmeyen yoktur.  Bununla birlikte çıktısını anlamakta zorluk yaşıyoruz. Bu zorluğu gidermek için, ls temel seviyede anlatmaya çalışacağım.



d   r w x   r - x   r - x   2   remzi   remzi    6 Nis 23 14:54 dizin
|    |   |  |   |  | |   |  |  |    |      |           |         Tarih                 İsim
|    |   |  |   |  | |   |  |  |    |      |        Dosyanın ait olduğu grup.
|    |   |  |   |  | |   |  |  |    |    Dosyanın Sahibi
|    |   |  |   |  | |   |  |  |   Dizin/Dosyaya birinci seviyede bağlantıların sayısı
|    |   |  |   |  | |   Dizin/Dosyanın sahibi veya grubu dışındakilere verilen  yetkiler
|    |   |  |   Dizin/Dosyanın bağlı olduğu gruba verilen yetkiler
|    Dizin/Dosyanın Sahibi
Dosyanın Tipi



Dosyanın tipi: Hemen dosyanın dipi olurmu dosya dosyadır demeyin. Linux/Unix sistemlerde oluyor. :)

Linuxteki dosya tipleri;

     -    : Her hangi bir şey belirtilmemişse, bizim bildiğimiz normal dosyadır.

     d   :  Dizin olduğunu belli eder.

     b   : Blok tipi dosyadır. Hardisklere baktığınızda görürsünüz.
             brw-rw---- 1 root disk 8, 0 Nis 23 13:00 /dev/sda

     c   : Aygıt dosyalarıdır.
            Linuxte, ses kartı, seri portlara bir dosyaya erişildiği gibi erişilir.


remzi@tashan:/tmp/umask$ ls -la /dev/ttyS0 /dev/snd/
crw-rw---- 1 root dialout 4, 64 Nis 23 08:54 /dev/ttyS0

/dev/snd/:
total 0
drwxr-xr-x   3 root root      280 Nis 23 08:54 .
drwxr-xr-x  24 root root     5140 Nis 23 12:53 ..
drwxr-xr-x   2 root root       60 Nis 23 08:54 by-path
crw-rw----+  1 root audio 116,  2 Nis 23 08:54 controlC0
crw-rw----+  1 root audio 116,  8 Nis 23 08:54 hwC0D0
crw-rw----+  1 root audio 116,  9 Nis 23 08:54 hwC0D1
crw-rw----+  1 root audio 116, 10 Nis 23 08:54 hwC0D3
crw-rw----+  1 root audio 116,  4 Nis 23 12:40 pcmC0D0c
crw-rw----+  1 root audio 116,  3 Nis 23 15:28 pcmC0D0p
crw-rw----+  1 root audio 116,  5 Nis 23 08:54 pcmC0D3p
crw-rw----+  1 root audio 116,  6 Nis 23 08:54 pcmC0D7p
crw-rw----+  1 root audio 116,  7 Nis 23 08:54 pcmC0D8p
crw-rw----+  1 root audio 116,  1 Nis 23 08:54 seq
crw-rw----+  1 root audio 116, 33 Nis 23 08:54 timer



     l   :  Sembolink link
             Böyle bir dosya/dizin vs. gerçekte yoktur, sadece orijinal dosya/kaynağı gösteren bir yol göstericisidir.

remzi@tashan:/tmp/umask$ ls -la
total 4
drwx------  3 remzi remzi  104 Nis 23 15:31 .
drwxrwxrwt 19 root  root  4096 Nis 23 15:28 ..
drwxr-xr-x  2 remzi remzi    6 Nis 23 14:54 dizin
lrwxrwxrwx  1 remzi remzi    5 Nis 23 15:09 dizinlink1 -> dizin
lrwxrwxrwx  1 remzi remzi    5 Nis 23 15:31 dizinlink2 -> dizin



     s  : Söket tipi dosyalar.
           Genelde servisler ve bazı aygıtlar haberleşmede söket tipi dosya kullanılırlar.

En güzel örnegi ise mysql dir. MySql tcp ile erişebileceğimiz gibi, söket ilede erişebiliriz. Yerelde söket kullanmak, tcp  göre daha avantajlıdır. Bi zahmet avantajları sizler araştırın. :)

remzi@tashan:~$ ls -la /var/run/mysqld/mysqld.sock
srwxrwxrwx 1 mysql mysql 0 Nis 23 15:39 /var/run/mysqld/mysqld.sock

remzi@tashan:/tmp/umask$ ls -la /dev/okiscand
srw-rw-rw- 1 root root 0 Nis 23 08:54 /dev/okiscand

remzi@tashan:/tmp/umask$ ls -la /var/lib/lxd/unix.socket
srw-rw---- 1 root lxd 0 Nis 23 08:43 /var/lib/lxd/unix.socket


ls  komutunu anlatmaya çalıştım. Daha fazla bilgi öğrenmek istiyorsanız, "man ls" "info ls" yardımcı olabilir.





Günün komutu - Linux sistemlerinde {2016.04.23} - umask - oluşturulan bir dosya ve dizinin sahiplik hakkı


Linux sistemlerinizde yeni bir dosya ve dizin oluşturduğunuzda, bunun sahiplik

yetkileri(erişim yetkileri) umask değerine göre verilir. Bu değer varsayılan olarak(genellikle) 022 dir.

umask 022 varsayılan değeriyle oluşturulan dizin ve dosyanın yetkileri;

drwxr-xr-x  2 remzi remzi    6 Nis 23 14:54 dizin
-rw-r--r--  1 remzi remzi    0 Nis 23 14:54 dosya

022 genel düşünce için iyi bir değer olsada, güvenlik nedeniyle (çoklu sistemlerde benim dosyamı benden ve/veya grubumdan başkası okumasın isteğiniz mevcutsa) tavsiye edilen bir değer değildir. 

Sadece dosya/dizini oluşturan kişinin bu dosyaya tam erişmesi istiyorsak, .bash_profile veya .bashrc dosyası içerisine  "umask 077" ilave etmemiz gerekiyor. Normalde terminalde "umask 077" komutu verdiğinizde umask değeriniz değişir. Fakat yeni bir oturum/terminal açtığınızda yapmış olduğunuz değişikliğin kaybolduğunu göreceksiniz! Bundan dolayı umask veya benzeri tanımlamaları .bash_profile dosyanızda yapmanızı tavsiye ederim.


umask 077;

-rw-------  1 remzi remzi    0 Nis 23 14:53 dosya
drwx------  2 remzi remzi    6 Nis 23 14:53 dizin


Sayıların ne anlamını aşağıdaki tablodan görebilirsiniz.




Umask Değeri
Dosya Yetkileri
Dizin Yetkileri
0
rw-
rwx
1
rw-
rw-
2
r--
r-x
3
r--
r--
4
-w-
-wx
5
-w-
-w-
6
--x
--x
7
--- (Yetki yok)
--- (yetki yok)


Linuxle eğlenceli ve güvenli günlere...

(Bilgisiz güvenlik olmaz :-D )

Uygulamanın Desteklediği Linux Dağıtımı ve Çekirdek Sertifikasyon Aralığı

Çekirdek Sertifikasyon Aralığı Linux Sistem Yönetimi “Asgarinin üzerindeyiz, sorun olmaz” Çekirdek sertifikasyonu ...