Mysql Ekspor konfigurasi saat ini ke file

11

Kami kehilangan file my.cnf kami dan bertanya-tanya apakah ada cara untuk mengekspor salinan dari instance mysql yang sedang berjalan.

Terima kasih!

samspot
sumber

Jawaban:

16

Tiga (3) Opsi

OPSI 1: Dari dalam klien mysql

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

Ini akan menangkap semua opsi ke dalam file teks.

OPSI 2: Dari baris perintah Linux

ps -ef | grep mysqld | grep -v grep

Ini akan menampilkan opsi mysqld dimulai dengan set dari mysqld_safe

OPSI 3: Tanyakan Server Secara Langsung

mysqld --help --verbose

Di bagian bawah layar 'mysqld --help --verbose', Anda akan melihat pengaturan saat ini mysqld diambil dari my.cnf atau secara default adalah.

RolandoMySQLDBA
sumber
-1 Maaf, tapi ini tidak masuk akal. Mengapa Anda membuang SHOW VARIABLES ke file teks, lalu memeriksa daftar proses dan tidak melakukan apa-apa dengan hasilnya, lalu mengatakan bacakan bendera bantuan ke mysqld?
Coops
@ Kop - Mereka adalah tiga hal yang terpisah. Yang pertama menangkap SHOW VARIABLES dalam file teks. Yang kedua memungkinkan Anda melihat opsi apa yang ditentukan oleh /etc/init.d/mysql pada startup mysql. Yang ketiga memungkinkan Anda melihat di bagian bawah layar apa mysqld saat ini beroperasi dengan. Terserah samspot untuk melakukan pekerjaan kaki pengaturan opsi-opsi di /etc/my.cnf dari tampilan ini. Haruskah saya menulis sesuatu untuk mengotomatisasi dan membuat ulang /etc/my.cnf?
RolandoMySQLDBA
Baris pembuka Anda adalah "lakukan semua hal berikut" yang menyarankan Anda memberikan panduan langkah demi langkah untuk mencapai jawaban atas pertanyaan. Anda juga tidak menjelaskan apa yang dilakukan setiap langkah, atau bagaimana itu menjawab pertanyaan, menambah kebingungan! :-)
Coops
Maaf atas kebingungan yang disebabkan oleh cara saya menulis jawaban saya awalnya.
RolandoMySQLDBA
Meskipun meregenerasi my.cnf akan menjadi kasus terbaik (saya berharap mysql bisa melakukan ini), ini adalah info yang sangat bagus bagi kami untuk pulih. Saya telah mencoba googling untuk informasi ini tetapi yang bisa saya temukan hanyalah artikel tentang mendukung database. Terima kasih!
samspot
3

Instruksi ini untuk persediaan mariadb pada centos 7.1.

Berikut ini cara mem-backup atau mereplikasi pengaturan mesin saat ini ke instalasi baru, sekarang atau masa depan.

Pada mesin dari mana kita ingin menyalin pengaturan, kita dapat menjalankan:

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

Di komputer lain, kita dapat menginstal mariadb-server dan menjalankan:

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

Lalu kami menempatkan kedua file ke dalam satu direktori, yang dalam contoh ini adalah "/ a /".

Lalu kita jalankan:

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

Jika tidak ada output, maka kedua file tersebut identik. Yang berarti bahwa semua pengaturan, pada kedua mesin, pada standarnya.

Jika ada beberapa output, maka beberapa baris tidak akan berlekuk, sementara beberapa baris akan berlekuk.

Baris yang tidak di indentasi hanya ada di file pertama, yang di sini adalah /a/mysql_current_settings.txt.

Baris indentend hanya ada di file kedua, yang di sini adalah /a/mysql_default_settings.txt.

Sekarang kita tahu semua pengaturan, kecuali untuk beberapa pengaturan yang diatur pada baris perintah yang memulai mysqld. Pengaturan ini dapat berasal dari file /etc/my.cnf, atau /etc/my.cnf.d/*, atau skrip khusus, atau alias, dll. Dalam kasus apa pun, kita dapat melihatnya dengan perintah berikut:

ps -ef | grep mysqld

Sekarang kita tahu sangat sedikit pengaturan yang harus kita ubah pada instalasi baru untuk mengkonfigurasinya sebagai yang lama.


Berikut ikuti beberapa detail lainnya.

Pada centos 7.1, perintah berikut menunjukkan semua pengaturan saat ini, kecuali untuk beberapa pengaturan yang ditetapkan pada baris perintah yang memulai mysqld:

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

Secara total, ini menunjukkan:

di bagian pertama, pengaturan yang bisa kita gunakan sebagai parameter pertama setelah "mysqld" ketika kita memulainya;

di bagian kedua, pengaturan ditetapkan pada waktu kompilasi;

di bagian ketiga, pengaturan saat ini.

Bahkan jika baris terakhir dari outputnya mengatakan: untuk melihat nilai apa yang digunakan server MySQL, ketik:

    mysqladmin variables -uroot -p

perintah itu tidak menunjukkan, fe, bind-address, bahkan jika kita mengubahnya di /etc/my.cnf dan restart mysql.

Juga perintah berikut ini menunjukkan banyak pengaturan tetapi tidak "bind-address":

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

Perhatikan bahwa, pada centos 7.1, mysqld tidak dalam $ PATH.

penyelamat
sumber
2

Inilah cara favorit saya untuk menghasilkan my.cnf saat ini:

{ 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

Namun, ini tidak bekerja dengan andal untuk Mac OS X.

Ini akan menghasilkan log variabel bersih, berkomentar, siap untuk mengimpor ke my.cnf Anda.

Sumber asli: http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html

Ryan
sumber
Beberapa catatan: 1. bsdmainutils perlu diinstal 2. Peringatan: ia menulis versi klien mysql, bukan server
gadelat
Untuk versi server perintahnya adalah mysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'. Tidak yakin itu penting karena saya pikir klien dan server diinstal bersama. Apa tujuan {{{1dan 1}}}?
beppe9000