Odpowiedzi:
Trzy (3) opcje
OPCJA 1: Z poziomu klienta mysql
mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt
Spowoduje to przechwycenie wszystkich opcji do pliku tekstowego.
OPCJA 2: Z wiersza poleceń systemu Linux
ps -ef | grep mysqld | grep -v grep
Spowoduje to wyświetlenie opcji, które mysqld rozpoczęło od ustawionych w mysqld_safe
OPCJA 3: Zapytaj serwer bezpośrednio
mysqld --help --verbose
U dołu ekranu „mysqld --help --verbose” zobaczysz aktualne ustawienia mysqld załadowane z my.cnf lub domyślnie ustawione na.
Te instrukcje dotyczą akcji mariadb na centos 7.1.
Poniżej przedstawiono sposób tworzenia kopii zapasowej lub replikacji bieżących ustawień komputera do nowej instalacji, obecnej lub przyszłej.
Na komputerze, z którego chcemy skopiować ustawienia, możemy uruchomić:
/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt
Na innym komputerze możemy zainstalować serwer mariadb i uruchomić:
/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt
Następnie umieszczamy oba pliki w jednym katalogu, którym w tym przykładzie jest „/ a /”.
Następnie uruchamiamy:
comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)
Jeśli nie ma danych wyjściowych, oba pliki są identyczne. Co oznacza, że wszystkie ustawienia na obu komputerach są domyślne.
Jeśli jest jakiś wynik, to niektóre wiersze nie będą wcięte, a niektóre wiersze będą wcięte.
Linie bez wcięć są obecne tylko w pierwszym pliku, którym jest /a/mysql_current_settings.txt.
Linie wcięcia są obecne tylko w drugim pliku, którym jest /a/mysql_default_settings.txt.
Teraz znamy wszystkie ustawienia, z wyjątkiem niektórych ustawień, które są ustawione w wierszu poleceń, który uruchomił mysqld. Te ustawienia mogą pochodzić z plików /etc/my.cnf, /etc/my.cnf.d/*, niestandardowego skryptu lub aliasu itp. W każdym razie możemy je zobaczyć za pomocą następującego polecenia:
ps -ef | grep mysqld
Teraz znamy bardzo niewiele ustawień, które musimy zmienić w nowej instalacji, aby skonfigurować ją jako starą.
Oto kilka innych szczegółów.
Na centos 7.1 następujące polecenie pokazuje wszystkie bieżące ustawienia, z wyjątkiem niektórych ustawień, które są ustawione w linii poleceń, która uruchomiła mysqld:
/usr/libexec/mysqld --help --verbose
W sumie pokazuje:
w pierwszej części ustawienia, których możemy użyć jako pierwszego parametru po „mysqld”, kiedy go uruchamiamy;
w drugiej części ustawienia ustawione w czasie kompilacji;
w trzeciej części aktualne ustawienia.
Nawet jeśli w ostatnim wierszu danych wyjściowych jest napisane: aby zobaczyć, jakich wartości używa uruchomiony serwer MySQL, wpisz:
mysqladmin variables -uroot -p
to polecenie nie wyświetla, np., bind-address, nawet jeśli zmienimy go w /etc/my.cnf i zrestartujemy mysql.
Również następujące polecenie pokazuje wiele ustawień, ale nie „adres powiązania”:
mysql -uroot -p -e"SHOW VARIABLES;"
Zauważ, że w centos 7.1 mysqld nie ma w $ PATH.
Oto mój ulubiony sposób na wygenerowanie bieżącego my.cnf:
{ 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
Nie działa to jednak niezawodnie w systemie Mac OS X.
Spowoduje to wygenerowanie czystego dziennika zmiennych, skomentowanego, gotowego do zaimportowania do pliku my.cnf.
Oryginalne źródło: http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html
mysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'
. Nie jestem pewien, czy to ma znaczenie, ponieważ myślę, że zarówno klient, jak i serwer są zainstalowane razem. Jaki jest cel {{{1
i 1}}}
?