Mysql Geçerli yapılandırmayı bir dosyaya aktar


11

My.cnf dosyamızı kaybettik ve şu anda çalışan mysql örneğinden bir kopyayı dışa aktarmanın bir yolu olup olmadığını merak ediyorduk.

Teşekkürler!

Yanıtlar:


16

Üç (3) Seçenek

SEÇENEK 1: MySQL istemcisi içinden

mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt

Bu, tüm seçenekleri metin dosyasına kaydeder.

SEÇENEK 2: Linux komut satırından

ps -ef | grep mysqld | grep -v grep

Bu mysqld ile başlayan seçenekleri mysqld_safe'den ayarlandığı gibi gösterecektir

SEÇENEK 3: Doğrudan Sunucuya Sorun

mysqld --help --verbose

'Mysqld --help --verbose' ekranının alt kısmında, mysqld uygulamasının my.cnf'den yüklendiğini veya varsayılan olarak ayarlandığını göreceksiniz.


-1 Üzgünüm, ama bu hiç mantıklı değil. Neden DEĞİŞKENLERİ GÖSTER bir metin dosyasına döküyorsunuz, daha sonra işlem listesini açıyor ve sonuçlarıyla hiçbir şey yapmıyorsunuz, sonra mysqld'e yardım bayrağını okuyorsunuz?
Coops

@Coops - Üç ayrı şey. Birincisi, bir metin dosyasında DEĞİŞKENLERİ GÖSTER seçeneğini yakalar. İkincisi, mysql başlangıcında /etc/init.d/mysql tarafından hangi seçeneklerin belirtildiğini görmenizi sağlar. Üçüncüsü, ekranın alt yarısında mysqld'in şu anda neyle çalıştığını görmenizi sağlar. Bu ekranlardan /etc/my.cnf içinde bu seçenekleri ayarlama işini yapmak samspot'a kalmış. /Etc/my.cnf otomatikleştirmek ve yeniden oluşturmak için bir şey yazmalıydım?
RolandoMySQLDBA

Açılış çizginiz, "aşağıdakilerin tümünü yapın" sorusunu yanıtlamak için adım adım bir kılavuz sağlamanızı önerir. Ayrıca, her adımın ne yaptığını veya soruyu nasıl cevapladığını, karışıklığa ekleyerek açıklamıyorsunuz! :-)
Coops

Cevabımı orijinal olarak yazma şeklimden kaynaklanan karışıklıklar için özür dilerim.
RolandoMySQLDBA

My.cnf yenilemek en iyi durumda (mysql bunu yapabilir umuyordum) olsa bile, bu kurtarmak için gerçekten harika bir bilgi. Bu bilgi için googling denedim ama bulabildiğim tek şey veritabanını yedekleme hakkında makaleler vardı. Teşekkürler!
samspot

3

Bu talimatlar centos 7.1 hisse senedi için geçerlidir.

Aşağıda, bir makinenin mevcut ayarlarının şimdiki veya gelecekteki yeni bir kuruluma nasıl yedekleneceği veya çoğaltılacağı anlatılmaktadır.

Ayarları kopyalamak istediğimiz makinede şunları çalıştırabiliriz:

/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt

Başka bir makineye mariadb-server'ı kurabilir ve çalıştırabiliriz:

/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt

Sonra her iki dosyayı da bir dizine koyarız, bu örnekte "/ a /" olur.

Sonra koşuyoruz:

comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)

Çıktı yoksa, iki dosya aynıdır. Bu, her iki makinedeki tüm ayarların varsayılan değerde olduğu anlamına gelir.

Bazı çıktılar varsa, bazı satırlar girintili olmayacak, bazı satırlar girintili olacaktır.

Girintili olmayan satırlar yalnızca /a/mysql_current_settings.txt olan ilk dosyada bulunur.

Girinti satırları yalnızca burada /a/mysql_default_settings.txt olan ikinci dosyada bulunur.

Artık mysqld'yi başlatan komut satırında ayarlanan bazı ayarlar dışında tüm ayarları biliyoruz. Bu ayarlar /etc/my.cnf veya /etc/my.cnf.d/* dosyalarından veya özel bir komut dosyası veya bir diğer ad vb. Gelebilir. Her durumda, bunları aşağıdaki komutla görebiliriz:

ps -ef | grep mysqld

Şimdi yeni bir kurulumda eskisi olarak yapılandırmak için değiştirmek zorunda olduğumuz çok az ayarı biliyoruz.


İşte diğer detayları takip edin.

Centos 7.1'de, aşağıdaki komut mysqld'yi başlatan komut satırında ayarlanan bazı ayarlar dışında tüm geçerli ayarları gösterir:

/usr/libexec/mysqld --help --verbose

Toplamda şunu gösterir:

ilk bölümde, başlattığımızda "mysqld" den sonra ilk parametre olarak kullanabileceğimiz ayarlar;

ikinci bölümde, ayarlar derleme zamanında yapılır;

üçüncü bölümde, geçerli ayarlar.

Çıktının son satırı şunu söylüyor olsa bile: çalışan bir MySQL sunucusunun hangi değerleri kullandığını görmek için şunu yazın:

    mysqladmin variables -uroot -p

Bu komut, /etc/my.cnf dosyasında değiştirip mysql'yi yeniden başlatsak bile, fe, bind-address komutunu göstermez.

Ayrıca aşağıdaki komut birçok ayarı gösterir ancak "bağlama adresi" göstermez:

mysql -uroot -p -e"SHOW VARIABLES;"

Centos 7.1'de mysqld'in $ PATH değerinde olmadığını unutmayın.


2

Geçerli bir my.cnf oluşturmak için benim en sevdiğim yol:

{ echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `mysql -V|sed 's,^.*\(V.*\)\, for.*,\1,'` - By: `logname`@`hostname -f` on `date +%c`\n##"; for l in {a..z}; do echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" | sed 's,\t,^= ,' | column -ts^ | tr "\n" '@' | eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") | eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") | tr '@' "\n" | sed 's,^,# ,g'; done; echo -e "#\n##\n# MYSQL VARIABLES }}}1"; } | tee ~/mysql-variables.log

Ancak, bu Mac OS X için güvenilir bir şekilde çalışmaz.

Bu, my.cnf'nize aktarmaya hazır, temiz bir değişken günlüğü çıkarır.

Orijinal kaynak: http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html


Bazı notlar: 1. bsdmainutils kurulmalıdır 2. Uyarı: sunucu değil, mysql istemcisinin sürümünü yazar
gadelat

Sunucu sürümü için komut mysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'. Hem istemci hem de sunucu birlikte yüklendiğini düşünüyorum çünkü önemli değil. Amacı {{{1ve amacı nedir 1}}}?
beppe9000
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.