22 Kasım 2015

Linux'de(CentOS) Shell(SSH) Üzerinden MySQL BackUp İşlemleri

BackUp MySQL Databases, Linux'de(CentOS) Shell(SSH) Üzerinden MySQL İşlemleri

Linux(CentOS) sunucular üzerinde MySQL veritabanı yedeğini almak, yedekleri restore etmek, sunucudaki her hangi bir Client'ın yedeğini almak, MySQL şifresini öğrenmek, MySQL servislerini başlatmak gibi temel Linux MySQL işlem komutlarını bu başlık altında toplayacağım.

1) SSH ile MySQL Kullanıcı Adı ve Şifresini Öğrenmek;

root@sunucu [~]# cat /root/.my.cnf

BackUp MySQL Databases, Linux'de(CentOS) Shell(SSH) Üzerinden MySQL İşlemleri

Genelde MySQL kullanıcı adı root olur. Sunucuya MySQL kurulumu yaparken kullandığımız User ve Password bilgileridir. Sunucunun kendi şifresi(SSH ile login olurken root şifresi) ile MySQL şifresi aynı değildir, bu ikisi bazen karıştırılıyor.

BackUp MySQL Databases, Linux'de(CentOS) Shell(SSH) Üzerinden MySQL İşlemleri

2) Sunucudaki tüm MySQL Database'leri listelemek için;

root@sunucu [~]# mysql -u root -p

Mysql şifresi ister, şifreyi giriniz;

mysql> show databases;

Sunucudaki tüm veritaban isimleri liste olarak ekrana gelecektir.

BackUp MySQL Databases, Linux'de(CentOS) Shell(SSH) Üzerinden MySQL İşlemleri

3) Sunucudaki Tüm Database'lerin yedeğini almak (Backup);

İlk olarak MySQL dizinine gidiyoruz;
root@sunucu [~]# cd /var/lib/mysql

Sunucudaki tüm Database'leri "all-db-yedek.sql" ismiyle yedekliyoruz;
root@sunucu [~]# mysqldump -u root -p --all-databases > all-db-yedek.sql

Aşağıdaki uyarıyı alırsanız bir sonraki komutu yazın;
Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

root@sunucu [~]#  mysqldump -u root -p --all-databases --events --ignore-table=mysql.event > all-db-yedek.sql

"all-db-yedek.sql" ismiyle aldığımız yedek dosyasını "all-db-yedek.tar.gz" olarak sıkıştırıyoruz;
root@sunucu [~]# tar cvzf all-db-yedek.tar.gz all-db-yedek.sql

"all-db-yedek.sql" ismiyle aldığımız yedeği siliyoruz;
root@sunucu [~]# sudo rm all-db-yedek.sql

"all-db-yedek.tar.gz" dosyamızı burakavcioglu Client'ın içine atıyoruz;
root@sunucu [~]# mv /var/lib/mysql/all-db-yedek.tar.gz /home/burakavcioglu/public_html

"all-db-yedek.tar.gz" dosyamızı indirmek için tam yetki veriyoruz;
root@sunucu [~]# chmod 777 /home/burakavcioglu/public_html/all-db-yedek.tar.gz

Tüm veritaban yedek dosyamızı domain.com/all-db-yedek.tar.gz yazarak tarayıcıdan indiriyoruz. Yada SSH üzerinden masa üstü bilgisayarınıza indirmek için aşağıdaki komutu kullanabilirsiniz.

root@sunucu [~]# wget http://domian.com/all-db-yedek.tar.gz

İndirme işlemi bittikten sonra "all-db-yedek.tar.gz" dosyamızı dizinden siliyoruz;

root@sunucu [~]# sudo rm all-db-yedek.tar.gz
root@sunucu [~]# rm -rf all-db-yedek.tar.gz (Bu komutta kullanılabilir)

BackUp MySQL Databases, Linux'de(CentOS) Shell(SSH) Üzerinden MySQL İşlemleri

4) Sunucudaki Herhangi Bir Sitenin Database yedeğini almak (Backup);

İlk olarak MySQL dizinine gidiyoruz;
root@sunucu [~]# cd /var/lib/mysql

Sunucudadaki Database listesine baktıktan sonra herhangi bir sitenin Database yedeğini almak için aşağıdaki kodu kullanabiliriz. Örnek Database adımız "database_name" olsun;

root@sunucu [~]# mysqldump -u root -p database_name > database_name.sql

Aşağıdaki uyarıyı alırsanız bir sonraki komutu yazın;
Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

root@sunucu [~]# mysqldump -u root -p database_name --events --ignore-table=mysql.event > database_name.sql

Yedek işleminden sonra üçüncü kısımda anlattığım dosyayı sıkıştırma, silme ve bir Client içine atıp indirme işlemlerini aynen uygulayabilirsiniz.

5) SSH Üzerinden Database geri yükleme(Restore) işlemi

İlk olarak sunucuya "sql" uzantılı Database yedeğini çekelim.
root@sunucu [~]# wget www.domain.com/database.sql

mysqldump -u [database_kullanici_adi] -p [database_adi] < database_yedek.sql

root@sunucu [~]# mysqldump -u db_username -p dbname < database.sql
veritabanı şifrenizi girdikten sonra sunucuya MySQL veritabanınız yüklenecektir.

6) SSH ve MySQL Üzerinden Bilgi Sorgulama

root@burak [~]# mysql -u root -p
Mysql şifresi ister, şifreyi giriniz;

mysql> show tables;
Veritabanlarındaki tüm tabloları listelemek için kullanılır.

mysql> SELECT user FROM mysql.user;
Tüm MySQL kullanıcılarını listelemek için kullanılır.

mysql> SELECT user, host FROM mysql.user;
Tüm Hostlara(IP) ait MySQL Username listelemek için kullanılır.

mysql> SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user;
Tüm Hostlara ait Mysql Username ve iletişim bilgilerini listelemek için kullanılır.

mysql> SELECT table_schema AS "Database name", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema;
Tüm MySQL Database boyutları, MB olarak.

7) Sunucudaki(cPanel) User(Client)'a ait MySQL Bilgileri

Sunucuda /home dizini altındaki bir Username(Client)'a ait Database Name ve Username bilgilerini öğrenmek için cat /var/cpanel/databases/username.json komutunu kullanabilirsiniz. Buradaki komutta username kısmına Client adını yazıyoruz.

root@sunucu [~]# cat /var/cpanel/databases/burakavcioglu.json

"dbusers": Veritabanı Kullanıcı Adı
"dbs": Veritabanı Adı

Veritabanlarının bulunduğu dizin;
root@sunucu [~]# cd /var/cpanel/databases

Sunucudaki tüm veritabanlarının JSON dosyaları;
root@sunucu [~]# find /var/cpanel/databases/ -name "*.json"

Hiç yorum yok:

Yorum Gönder