Kategori arşivi: Programlama

Programlama hakkında türkçe bilgiler, ipuçları, kod örnekleri, örnek projeler, sorunlar ve çözümler, fikir alışverişi, düşünceler ve daha fazlası

Komut Satırı ile MySQL Yedek Alma İşlemi

Gelin size güzel bir şekilde SSH kullanarak MySQL yedek nasıl alınır anlatayım.Genelde herkes panel kullanma peşinde ama kullanmayan arkadaşları da düşünmek lazım İngilizcesi olmayabilir Google de Türkçe aratıyor ama sonuç bulamıyor ve kafayı yiyor olabilir.

İşte kafayı yemesini önlemeye çalışıyorum ben ve en son bu yöntemi 2 ay önce sunucumda kullanmıştım sonrasında ise unutuldu gitti makalesini de anca yazabiliyorum farkındayım uzattım dönelim konumuza öncelikli olarak mysqldump denen bir şeyimiz var sunucuda bu bizim için önemli kullanımı ise şu şekilde

mysqldump --opt -u [kullanici] -p[şifre] [database] > [backupdosyaadi.sql]
  • [kullanici] = Database kullanıcı adınız
  • [şifre] = o kullanıcı adının şifresi
  • [database] = yedek alınacak olan veritabanı adı
  • [backupdosyaadi] = yedeğin adı
  • [–opt] = ek bir şeyler yaptıracaksanız gelecek olan parametrelerin yeri

Şeklinde kolay bir kullanımı var oldukça da basit zaten görüyorsunuz.

mysqldump -u root -p gborriQw38XOgl#VfxeA2wgfj mertg > backup26.10.2014new.sql

root kullanıcısı olarak mertg den yedek alıyoruz. tüm databaseleri yedeklemeye çalışırsak

mysqldump -u root -p gborriQw38XOgl#VfxeA2wgfj --all-databases > backupalldb26.10new.sql

böyle almanın şöyle bir sıkıntısı var ne varsa içine doluşacak belirli bir yönerge vermediğiniz için sisteme atarken de o şekilde atılacak yani sonradan tekini çıkartayım gibi bir fırsatınız bulunmuyor.

sistemde bir kaç komut da var

  • –no-data = sadece veritabanını alır içerisindeki içeriğe dokunmaz
  • –add-locks = veritabanına LOCK TABLE ekleyerek yedek alınmasını sağlar
  • –add-drop-table = DROP TABLE ekler sıkıntı çıkmasın diye kullanmayın bence

komut satısı ile genel olarak böyle alınıyor diye biliyorum. Yanlışımız varsa iletin düzeltelim.

1Gb Sunucular için Mysql Optimizasyonu

1GB sunucunuz yada VPS iniz varsa ve sitenizi yayına sokmak istiyorsunuz ve mysqliniz sıkıntı çıkartıyor çöküyor,kitleniyor,şişiyor ve sorunlar yaşatmaya başladıysa size bu vereceğim ayarlar bir nebze olsun rahatlatmaya yarayacaktır.Ayrıca mysql tarafından sistem kaynaklarınızın daha efektif bir şekilde çalışmasına da olanak sağlayacaktır.

Öncelikle eski my.cnf dosyasının bir yedeğini alın ne olur ne olmaz diye bunun için

cp /etc/my.cnf /etc/my.cnf.old

bu sayede eski configlerinizi silmemiş olacaksınız sorun çıkarsa ismini my.cnf olarak değiştirmeniz yeterli olacaktır.

editleme işini yaparken istediğiniz editörü kullanabilirsiniz pico,vim,nano seçin birisini ben nano kullanacağım

nano /etc/my.cnf

nano editör sisteminizde kurulu değilse aşağıdaki komut ile kolaylıkla kurabilirsiniz.

yum install nano

İçerisini temizledikten hemen sonra aşağıdaki satırları ekliyoruz.

[mysqld]
max_connections = 200
key_buffer = 32M
myisam_sort_buffer_size = 32M
join_buffer_size = 1M
read_buffer_size = 1M
sort_buffer_size = 2M
table_cache = 1024
thread_cache_size = 286
interactive_timeout = 25
wait_timeout = 1000
connect_timeout = 10
max_allowed_packet = 16M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1
tmp_table_size = 16M

[mysqld_safe]
open_files_limit = 8192

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M

local-infile=0

Şimdi biraz daha karmaşıklaştırmamız gerekecek optimizasyon işini tam olarak ve daha güzel bir şekilde yapabilmemiz için yardımda almamız hoş olurdu.Bu yüzden aşağıdaki betiği de sistemimizde çalıştıyoruz. Betiği tedarik etmek için tıklayın

chmod 777 mysqltuning.sh
service apache restart
service nginx restart
service mysqld restart

sistemimizde bulunan tüm servisleri yeniden başlatıyoruz. 24 saat veya 48 saat sonrasında

sh mysqltuning.sh

komutunu sisteme veriyoruz size çıktı verecek sizde my.cnf ayarlamalarınızı buna göre yapabilirsiniz.

SQL Veri Tipleri

SQL ortamında oluşturduğunuz tabloların her alanı her sütunu içerisinde saklanan verilerin haliyle bir veri tipinde tanımlanmış olması gerekmektedir. Burada C, C# ve asp.net deki veri tipleri gene burada da karşımıza çıkıyor. Gönül isterdi ki bunlardan kurtulalım

  • İnt = tam sayılar -2,147,483,648 ile 2,147,483,648 arasındaki değerleri almaktadır.
  • Float = büyük, küçük ve kesirli sayılar için kullanılır -1.79E+308 ile 1.79E+308 arasında değer alır.
  • Bigint = tam sayılar -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,808 arasındaki değerleri almaktadır.
  • Smallint = tam sayılar -32,768 ile 32,768 arasındaki değerleri almaktadır.
  • Tinyint = 0 ile 255 arasındaki değerleri almaktadır.
  • Bit = 0 ile 1 arasındaki değerlerini alır durum bilgisini saklamakta çok kullanılır.
  • Decimal = nasıl ifade etsem bilemedim -10^38 +1 ile 10^38 +1 arasında değerler almakta.
  • Money = aşırı şekildeki büyük sayıları tutmada kullanılır genelde parasal işlemlerde bu kullanılmaktadır. -922,337,203,685,477.5808 ve +922,337,203,685,477.5808 arasında değerler alır.
  • Smallmoney = parasal işlemlerde kullanılmaktadır ancak Money göre daha küçük değer saklamaktadır. -214,748.3648 ile +214,748.3648 arasında değer almakta
  • Datetime = tarih ve zaman tipindeki verileri saklamak için kullanılır. 1 ocak 1753 den 31 aralık 9999 kadardır.
  • Smalldatetime = tarih ve zaman tipindeki verileri saklamaktadır ancak datetime göre daha kısa bir süreyi kapsar 1 ocak 1900 den 6 Haziran 2079 kadardır.

String Veri Tipleri

  • Nvarchar (değer) = Veritabanların da en çok kullanılan veri tipidir text formatın da ki bilgileri saklamak için kullanılır. Ve parantez içerisine gireceğiniz değer ile kapasitesini belirlersiniz Örneğin : nvarchar(250) en fazla 4 bin karakter desteklenir.
  • Nchar (değer) = nvarchar ile tamamen aynıdır sadece verdiğiniz değerin altında veri girdiğinizde geri kalan verileri kendisi otomatik olarak tamamlamaktadır. En fazla 4 bin karekter desteklenir
  • Text = adından da anlaşılacağı üzere text tipindeki verileri saklar En fazla 2,147,483,647 karakteri destekler

Nvarchar ve nchar özellikle çince, arapça, Türkçe gibi diller için özel olarak tanımlanmış bir veri tipidir. İngilizce bir veritabanı uygulamamız olsaydı varchar ve char kullanılabilirdi ama Türkçe karekterler de sorun çıkmaması açısından nvarchar ve nchar kullanılması önerilir.