MySql Backup

MySql Backup

Mysql’de backup almak iÇin birkaÇ farklı yöntem vardır.Bence en populer olan
yöntemlerden bahsedeceğim bu makalemde.

MysqlDump komutu ile backup almak,
Mysql’in geliştirdiği MysqlAdministrator tool’unu kullanarak backup almak,
SqlYog programını kullanarak backup almak,
En riskli ama hızlı olan mysql data dosyalarını kopyalayarak backup almak.

Mysql Administrator ve SqlYog programlarını kullanarak backup almayı daha sonraki
makalelerde anlatmak istiyorum.Bu makalede sadece mysqldump komutunu kullanarak
backup alamayı anlatacağım.Mysql data dosyalarını kullanarak backup almayı da detaylı
olarak başka bir makalede anlatacağım.

mysqldump:

systax:
mysqldump -h (ip adresi) -u (db username) -p (db password) (dbname) > (path)

Ürnek:
Host : 88.155.44.66
user name : deneme
password : 123456
Database name : personel

mysql dump -h 88.155.44.66 -u deneme -p 123456 personel > hometayfurbackuppersonel.dump

personel.dump olarak istediğiniz ismi verebilirsiniz.

Yukarıdaki örnekle personel database’inin full backupını almış olacaksınız. Bu işlem
sırasında anlık olarak hangi tablonun backup’ı alınıyorsa o tablo lock lanır.

Ürnek: Bu örnekte ise sadece tek bir tablonun backup’ını alacağız.

Host : 88.155.44.66
user name : deneme
password : 123456
Database name : personel
Tablo name : maas

mysql dump -h 88.155.44.66 -u deneme -p 123456 personel maas > hometayfurbackuppersonel_maas.dump

şimdi backupımızı aldıktan sonra , bu backuplarını tekrar nasıl geri yükleyeceğimizi görelim.

Backup Restore İşlemi:

mysql -u (db username) -p (db password) (db name) < (path/source)
Ürnek: Backup’ını aldığımız personel.dump dosyasını tekrar geri yükleyelim.

Host : 88.155.44.66
user name : deneme
password : 123456
Database name : personel

mysql -u deneme -p 123456 personel < hometayfurbackuppersonel.dump Yukarıdaki komut satırını Çalıştırdığımızda personel.dump dosyasını tekrar iÇeri atmış olacağız. Bir sonraki makaleler de görüşmek dileğiyle. Tayfur BÖLER Database Administrator

Database Terimleri

Database Terimleri,

Sql Server:(Bu Mysql Server da olabilir,Mssql Server da,Oracle Server da vs vs.):
Üzerinde yukarıda saydığım veritabanlarından herhangibirinin kurulu olduğu
server’a veya normal pc ye sql server denir.

Veritabanı: Verilerin mantıklı bir şekilde, belirli bir düzenle ilişkisel olarak tutulduğu ve
Veritabanı->Tablolar->Kolonlar hiyerarşisine sahip veriler topluluğudur.

Tablo: Verilerin satır ve sutunlar şeklinde tutulduğu yapıya denir.

Kolon,Sutun: Tablonun iÇindeki dikeyliklere sutun denir,

Satır:Tablonun iÇindeki yataylıklara satır denir.

İndex:Tablo iÇindeki dataların hızlı erişim iÇin belli algoritmalarla sıralanmasına index denir.

İnsert:Tablolara veri eklenmesine denir.

Delete:Tablodaki verinin silinmesine denir.

Truncate : Tablodaki tüm verilerin silinmesine denir. Bir farkıda truncate edilmiş bir tabloda auto incremant bir kolon varsa
bu kolon tekrar 1 den saymaya başlar.

Update :
Tablodaki verilerin değiştirilmesine denir. Aslında update işlemi bir verinin silinip yerine yenisinin konması işlemidir.
Yani update = delete + insert

Unique:

Bir alani Unique yaptiginizda onu essiz yapmis olursunuz. Mesela email alanini unique yaptiginizda ikinci kez ayni emaili eklemek istediginizde vt hata verecekdir. Her eklenen email bir kez eklene bilir ve veritabaninda böylelikle tekdir.

Primary Key:

PR ide unique gibidir bir alani essiz yapar ama farki bir tabloda sadece birtane primary key olmasidir. Pr olarak secilen alanlar otomatikmen not null olarak secilir.Genelde id alanlarinda kullanilir.

View: Sanal tabloda denilebilir. Bildiğiniz gibi veritabanı tablolardan oluşur.Tabloların kesişimi ve
birleşiminden oluşan yapıya denir.View lar veri tutmaz sadece tabloların görümünü tutar.

Ürnek Vererek AÇıklarsak:

Personel Tablosu

id adi soyadi
1 tayfur böler
2 ahmet taş


Adres Tablosu

id adres telefon
1 maslak 2223233
2 tuzla 3454355

şimdi bu iki tabloyu aşağıdaki sorgu ile birleştirerek adı ,soyadı ,adres bilgilerini Çekelim.

select personel.adi,personel.soyadi,adres.adres from personel
inner join adres on adres.id=personel.id;


Gelen Data:

adi soyadi adres
tayfur böler maslak
ahmet taş tuzla

şimdi bu sorguyu view haline getirelim.Viewımızın adıda iletişim olsun.

create view iletisim as
select personel.adi,personel.soyadi,adres.adres from personel
inner join adres on adres.id=personel.id;

şimdi de adı,soyadi,adres bilgisini viewımızdan Çekelim.

select * from iletisim;

Gelen Data:

adi soyadi adres
tayfur böler maslak
ahmet taş tuzla

Gördüğünüz gibi view kullanımı oldukÇa basit ve pratiktir.Bir nevi sanal bir tablo oluşturmuş olduk.
(Sonraki makalelerimde view konusunu detaylı anlatacağım)

Procedure: Database serverlarda saklanan sql ifadeleri denilebilir. Dışarıdan belli parametreler alabilen
ve sanki bir programlama dili gibiymiş if,case,while gibi deyimleri kullanabildiğimiz oldukÇa hızlı Çalışan
sql programcıklarıdır.
(Sonraki makalelerimde Procedure konusunu detaylı anlatacağım)

Trigger:
Kelime anlamı tetikleyici demektir. Tablolar üzerinde gerÇeklerşen bir işlemin başka bir işlemi
tetiklemesini sağlayan sql ifadeleri topluluğuna trigger denir.Kesinlikle kullanılması gerekir.
(Sonraki makalelerimde Trigger konusunu detaylı anlatacağım. )

Bir sonraki makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

CHAR() Veri Tipi ile VARCHAR() Veri Tipi Arasındaki Farklar

CHAR() Veri Tipi ile VARCHAR() Veri Tipi Arasındaki Farklar,

Veri tipleri performans aÇısından oldukÇa önemlidir. Oluşturduğumuz kolonlarda veri tiplerini seÇerken
oldukÇa dikkatli olmak gerekir ve amaca en uygun veri tipini seÇmek gerekir.

1- Char veritipi 0 ile 255 karakter arasında veri tutabilirken, Varchar veritipi MySQL v5,03 ten itibaren 0 ile 65,535 karakter arasında veri tutabilmektedir.

2- Char veritipi, tanımlandığı kadar kapasitenin tamamını kullanır. Ürnek olarak siz 5 karakterlik bir alan tanımlamışsanız, bu alana 2 karakter bile girmiş olsanız, geriye kalan sağdan 3 karakterlik alan boşluk karakteri ile doldurulur. Varchar veritipi ise değişken bir yapıya sahiptir ve tanımlanan karakter katarına kadar olan boyutta değişkenlik gösterebilir.

3- Char veritipinin kullanım alanı olarak sabit uzunluklu veri yapıları gösterilebilir. (Ürn: telefon numaraları, kredi kartı no vb.) Varchar ise değişken uzunluklu veri yapıları iÇin uygundur. (Ürn: isim, mail vb.)

4- Ayrıca bir tabloda varchar veritipinde tek bir alan bile yer alsa, bu aynı tablodaki diğer char veritipi ile belirlenmiş alanlarında Varchar biÇiminde Çalışmasına neden olur.

Bir sonraki Makaleler de görüşmek dileğiyle.

Tayfur BÖLER
Database Administrator

Mysql Veri Tipleri

Mysql Veri Tipleri

Text Veri Tipleri:

CHAR( ) : Sabit 0 – 255 karakter.(adi char(5)–> diye bir tanımla yapıp bu alana 2 karakterlik bir veri girsenizde 5 byte alan ayrılır )
VARCHAR( ) : Değişken 0 – 255 karakter.(adi varchar(5)–> diye bir tanımla yapıp bu alana 2 karakterlik bir veri girseniz, 2 byte alan ayrılır )
TINYTEXT : En Fazla 255 karakter.
TEXT : En Fazla 65.535 karakter.
BLOB : En Fazla 65.535 karakter.
MEDIUMTEXT : En Fazla 16.777.215 karakter.
MEDIUMBLOB : En Fazla 16.777.215 karakter.
LONGTEXT : En Fazla 4.294.967.295 karakter.
LONGBLOB : En Fazla 4.294.967.295 karakter.

Numeric Veri Tipleri:

TINYINT( ) : -128 ,127 yada 0-255 UNSIGNED.
SMALLINT( ) : -32.768 ,32.767 yada 0 “ 65.535 UNSIGNED.
MEDIUMINT( ) : -8.388.608 , 8.388.607 yada 0 “ 16.777.215 UNSIGNED.
INT( ) : -2.147.483.648 , 2.147.483.647 yada 0 “ 4.294.967.295
BIGINT( ) : -9.223.372.036.854.775.808 , 9.223.372.036.854.775.807 yada 0 “ 18.446.744.073.709.551.615
FLOAT : KüÇük Noktalı sayı.
DOUBLE( , ) : Büyük Noktalı sayı.
DECIMAL( , ) : DOUBLE tipte string şeklinde saklanır.

Tarih ve Zaman Veri Tipleri:

DATE : YYYY-MM-DD
DATETIME : YYYY-MM-DD HH:MM:SS
TIMESTAMP : YYYYMMDDHHMMSS
TIME : HH:MM:SS

Diğer Veri Tipleri:

ENUM ( ) : Kullanıcı tanımlı liste tipi. Ür; ENUM(“E”,”H”)
SET : Küme Tipi. ENUM benzeri. Aynı anda birden fazla kayıt tutabilir.

Bir sonraki makelelerde görüşmek dileğiyle.

Tayfur BÖLER
Database Administrator

Mysql Kurulumu Linux Mandriva Üzerinde

Mysql Kurulumu Linux Mandriva Üzerinde.

Konsonldan;
1.Adım : su yazıp enter’ a bastıktan sonra root passwordunuzu girin.Böylece root userına geÇmiş olacaksınız.Ardından
2.Adım : mcc yazıp enter’a basın. Bastıktan sonra karşınıza Mandriva Control Center ekranı gelecektir.Buradan
Yazılım Kur & Kaldırdan mysql kelimesini aratın ve gelen mysql seÇeneğini işaretleyip devam deyin.
Mysql paketini kurmuş olacaksınız.
3.Adım :Daha sonra konsol’a geri dönüp sırasıyla aşağıdaki komutları Çalıştırın.Tabii root olmanız gerecektir.

/bin/hostname 127.0.0.1
rm -f /var/lib/mysql/mysql/
/bin/hostname 127.0.0.1
urpmi mysql


4.Adım :
/etc/init.d/mysqld start komutunu vererek Mysql’i start etmiş olacaksınız.
5.Adım : mysql -u root komutunu vererek Mysql’e bağlanabilirsiniz.

Bir sonraki makaleler de görüşmek dileğiyle.

Tayfur BÖLER
Database Administrator

Mysql Kurulumu Linux Debian Üzerinde

Mysql Kurulumu Linux Debian Server Üzerinde,

Kuruluma başlamadan önce stable deponuzu update etmekte fayda vardır.

1.Adım: apt-get update (Bu komut satırıyla debian stable depolarını güncellemiş olursunuz)

2.Adım: Bu adımda ise Mysql’in hangi paketlerinin deponuzda olduğunu görmek iÇin
apt-cache search {anahtar kelime} yani ‘mysql’ yazıp arattırdığınızda mysql paketlerini göreceksiniz.

3.Adım: apt-cache show {paket_adı} bu komut satırınıda Çalıştırdığınızda yazdığınız paketin
versiyonunu görürsünüz.
4.Adım: 2. ve 3. adımı yazmamın sebebi depodaki son Mysql sürümü kurmak istemeyebilirsiniz.İstediğiniz sürümü
kurabilmek iÇin 2. ve 3.adım sizlere yardım edecektir. Bu adımda asıl yapmamız gereken
apt-get install mysql-server mysql-client komut satırını Çalıştırmak.

Bu 4 adımdan sonra Mysql’iniz kurulmuş olacak.

Daha sonra;

/etc/init.d/ mysql start komutunu vererek Mysql serverınızı Çalışır duruma getirebilirsiniz.
/etc/init.d/ mysql stop komutunu vererek Mysql serverınızı stop durumuna getirebilirsiniz.
/etc/init.d/ mysql status komutunu vererek Mysql serverınızın Çalışıp, Çalışmadığını kontrol edebilirsiniz.

Kurduğunuz Mysql servera bağlanmak iÇin ise;

mysql -u root komut satırını girerek Mysql’e bağlanmış olursunuz.
Mysql ilk kurulduğunda root userının password’u yoktur. Mysql’e bağlandıktan root userına password vermeyi unutmayınız.

Daha sonraki makalelerde Mysql’e user oluşturma ve yetkilendirme konularını detaylı bir şekilde anlatacağım.

Bir sonraki makaleler de görüşmek dileğiyle.

Tayfur BÖLER
Database Administrator

Mysql Kurulumu Windows Üzerinde

Mysql Kurulumunu 2 platform üzerinde de (Windows ve Linux) inceleyeceğiz.

Windows üzerinde Mysql Kurulumu.

Kurmak istediğiniz Mysql versiyonuna karar verdikten sonra www.mysql.com
sitesinden indirin. Mysql windows üzerinde otomatik olarak c:Mysql klasörüne
kurulur.Bu klasör iÇinde de iki önemli klasör vardır /bin klasörü ve /data klasörü.
Kesinlikle bu klasörler üzerinde herhangi bir işlem yapmayın. Aksi bir durumda
datalarınızı kaybedebilirsiniz. Not:(Mysql’i denetim masasından kaldırsanız bile
buradaki data klasörü silinmez.) İndirdiğiniz zipli Mysql kurulum dosyasını aÇarak
standart windows a herhangi bir program kurarmış gibi yönergeleri okuyarak
kurabilirsiniz. Kurulumu bitirdikten sonra c:mysqlbin klasörünün altında mysqld.exe
ile mysql Çalıştırabilirsiniz.
Ama makinanızın her aÇılışında bu işlemi tekrarlamamak iÇin winmysqladmin.exe programını
Çalıştırın ve kullanıcı adı ve şifrenizi girin.Böylece ekranın sağ tarafında trafik lambasına benzer
simgenin Çıktığını göreceksiniz.Bu simgeye tıklayarak Mysql i stop ve start edebilirsiniz.

Böylece Mysql iniz Çalışır duruma geldi ama veri girişini nasıl yapacaksınız.Normalde Mysql
linux tabanlı bir veritabanı olduğu iÇin ilk kurulumda herhangi bir grafik arabirimi gelmez.
Bundan dolayı c:mysqlbinmysql.exe Çalıştırdığınızda karşınıza bir dos ekranı aÇılacaktır.

mysql>

Bu konsolu kullanarak veri girişi ve hertürlü işlemi yapabilirsiniz. Büyük ihtimalle
siyah ekran sizlere sıkıcı gelecektir.Bu yüzden Mysql in kendi geliştirdiği
Mysql Query Browser ını www.mysql.com sitesinden indirip kullanabilirsiniz.Alternatif
olarak da birÇok firmanın ücretli veya ücretsiz geliştirdiği arayüzler mevcuttur.
(Benim tavsiyem kesinlikle sqlyog kullanmanızdır.)

Mysql Windows üzerindeki klasör yapısına gelince Makalenin başında da dediğim gibi
c:mysql klasörünün altında bin ve data klasörleri mevcuttur.bin klasöründe
yönetsel anlamda kullanılan .exe dosyaları mevcuttur.data klasörünün altında da
database lerimiz tutulur. İlk kurulumda data klasörünün altında mysql ve test
klasörleri otomatik olarak gelir.Bunlar birer veritabanlarını simgeler.Bunlardan önemli
olan mysql klasörüdür yani mysql database dir.Kesinlikle bu klasör üzerinde herhangi bir
işlem yapmayın zira bu klasörde database user bilgileri vs tutulur.Bir veritabanı iÇinde
oluşturduğumuz her tablo .frm,.myi ve .myd uzantılı üÇ dosya oluşacaktır.Bu dosyalara sadece
mysql tarafından okunabilir.

Genel olarak standart bir mysql kurulumu Windows İşletim sistemleri üzerinde bu şekildedir.

Bir sonraki makaleler de görüşmek dileğiyle.

Tayfur BÖLER
Database Administrator

Mysql ile Tanışma


MySQL
,dünyanın en yaygın kullanılan aÇık kaynaklı ,Çoklu iş parÇacıklı, Çoklu kullanıcılı ,
hızlı ve kullanışlı bir veritabanı yönetim sistemidir. UNIX, OS/2 ve Windows platformlarında Çalışmaktadır.
Kaynak kodu aÇık olan MySQL’in pek Çok platform iÇin Çalıştırılabilir ikilik kod halindeki indirilebilir
sürümleri de mevcuttur.
Ayrıca ODBC sürücüleri de bulunduğu iÇin birÇok geliştirme platformunda rahatlıkla kullanılabilir.
MySQL, tuttuğu tablolarla Çok kullanıcılı sistemlerde olan erişim hakları sorununu başarılı bir şekilde Çözmektedir.
MySQL’in 4.0 sürümü ile birlikte “transaction” desteği, 4.1 sürümüyle birlikte de alt sorgu desteği eklenmiştir.
www.mysql.com adresinden hem windows platformu iÇin hem de linux platformu kurulum dosyalarını indirebisiniz.

Mysql’in Çalıştığı İşletim Sistemleri:

* Windows
* Windows x64
* Linux (non RPM packages)
* Linux (non RPM, Intel C/C++ compiled, glibc-2.3)
* Red Hat Enterprise Linux 3 RPM (x86)
* Red Hat Enterprise Linux 3 RPM (AMD64 / Intel EM64T)
* Red Hat Enterprise Linux 3 RPM (Intel IA64)
* Red Hat Enterprise Linux 4 RPM (x86)
* Red Hat Enterprise Linux 4 RPM (AMD64 / Intel EM64T)
* Red Hat Enterprise Linux 4 RPM (Intel IA64)
* Red Hat Enterprise Linux 5 RPM (x86)
* Red Hat Enterprise Linux 5 RPM (AMD64 / Intel EM64T)
* Red Hat Enterprise Linux 5 RPM (Intel IA64)
* SuSE Linux Enterprise Server 9 RPM (x86)
* SuSE Linux Enterprise Server 9 RPM (AMD64 / Intel EM64T)
* SuSE Linux Enterprise Server 9 RPM (Intel IA64)
* SuSE Linux Enterprise Server 10 RPM (x86)
* SuSE Linux Enterprise Server 10 RPM (AMD64 / Intel EM64T)
* SuSE Linux Enterprise Server 10 RPM (Intel IA64)
* Linux x86 generic RPM (dynamically linked)
* Linux AMD64 / Intel EM64T generic RPM
* Linux Intel IA64 generic RPM
* Solaris (pkgadd packages)
* Solaris (TAR packages)
* FreeBSD (TAR packages)
* Mac OS X (package format)
* Mac OS X (TAR packages)
* HP-UX (depot packages)
* HP-UX (TAR packages)
* IBM AIX
* IBM i5/OS (SAVF packages)
* IBM i5/OS (TAR packages)
* Source

şu an Mysql 4.1 ,5.0 , 5.1 ,6.0 versiyonları mevcuttur.

Mysql 6.0 versiyonu; şu an Alpha durumundadır. Fakat yaptığım testler de birkaÇ küÇük bug haricinde herhangi bir probleme rastlamadım.
Denemenizde fayda vardır derim.
Mysql 5.1 ; release edilmiş en son sürümdür.Tamamen gönül rahatlığıyla kullanabilirsiniz.
Mysql 5.0 ; şu an iÇin en yaygın sürümdür.Üoğu linux serverların stable depolarında hala 5.0 mevcuttur.
Mysql 4.1 ; hala kullanan bir Çok firma ve web masterın olduğu bir sürümdür.Bu sürümde diğer sürümlere göre bayağı kısıtlıdır..

Not:
Daha sonraki makalelerimde Mysql sürüm farklılıklarını detaylı şekilde anlatacağım.

Sun, MySQL AB “yi tam 1 milyar dolar ( 1,000,000,000 $ ) karşılığında satın aldı. Bundan sonrası iÇin Mysql’e
yarı aÇık kaynaklı veritabanı diyebiliriz.

DB engine olarak Mysql,

Transaction Tablolar
Innodb,
Berkeley DB
Atomik Tablolar
Myisam,
Heap,
Merge’ı kullanır. En yaygın olarak Innodb ve Myisam kullanılır. Engine leri de ilerideki makalelerde detaylı olarak anlatacağım.

Mysql’in tutabileceği data büyükleri aklın sınırlarını cidden zorlayabilir.şöyle anlatayım sınır yok.
Yani serverınız kapasitesi ne ise tek bir tablonuzun büyüklüğüde o kadar olabilir. şu an iÇin bildiğim
kadarıyla tek dosya büyüklüğüne 16 TB ‘a ulaşabilen tek işletim sistemi solaris. Yani böyle bir makinanız var ise
Mysql de tek tablonuzun büyüklüğü 16 TB’a kadar Çıkabilir. Ama Mysql bunu da aşıyor tek tablo büyüklüğü
65,536 TB büyüklüğe Çıkabiliyor.:)
Biraz daha aklın sınırlarını zorlayalım linux da ext4 dosya sistemi 1 EB (Eksa Byte) ulaşabiliyorsa Mysql in
gücünün ne kadar ürkütücü olduğunu düşünün.

1024 GB = 1 TB (terabayt)
1024 TB = 1 PB (petabayt)
1024 PB = 1 EB (eksabayt)

Mysql 5.0 ile birlikte stored procedure,trigger desteği gelmiştir. View desteğide mevcuttur. Mysql Proxy ,
cluster ve memcache özellikleri mevcuttur.Tüm bu özellikleri detaylı bir şekilde anlatacağım. Tabi Proxy,
cluster ve memcache linux serverlar üzerinde kullanılabilir.

Indexleme, foreing key, full text search, optimize table, repair table, check table ve yetkilendirme özellikleri mevcuttur.
Veri tipleri olarak mssql, oracle ve pgsql den eksik kalan herhangi bir tarafı yoktur.ODBC driverlara sahip olduğu
iÇin hemen hemen bütün programlama dilleriyle rahatlıkla kullanılabilir. Ama tabiki php ve mysql arasında ki
müthiştir. Buna birde linux’u eklersek linux-php-mysql üÇlüsü Çok yüksek performans sağlamaktadır.

Diğer makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator