22 Kasım 2015
Linux'de(CentOS) Shell(SSH) Üzerinden MySQL BackUp İş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
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.
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.
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)
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"
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder
Makaleye Yorum ve Sorularınızı Bırakabilirsiniz.