เราสูญเสียไฟล์ my.cnf ของเราและสงสัยว่ามีวิธีการส่งออกสำเนาจากอินสแตนซ์ mysql ที่กำลังทำงานอยู่หรือไม่
ขอบคุณ!
เราสูญเสียไฟล์ my.cnf ของเราและสงสัยว่ามีวิธีการส่งออกสำเนาจากอินสแตนซ์ mysql ที่กำลังทำงานอยู่หรือไม่
ขอบคุณ!
คำตอบ:
ตัวเลือกสาม (3)
ตัวเลือก 1: จากภายในไคลเอนต์ mysql
mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt
วิธีนี้จะจับภาพตัวเลือกทั้งหมดลงในไฟล์ข้อความ
ตัวเลือก 2: จากบรรทัดคำสั่ง Linux
ps -ef | grep mysqld | grep -v grep
สิ่งนี้จะแสดงตัวเลือก mysqld ที่เริ่มต้นด้วยการตั้งค่าจาก mysqld_safe
ตัวเลือก 3: ถามเซิร์ฟเวอร์โดยตรง
mysqld --help --verbose
ที่ด้านล่างของจอแสดงผล 'mysqld --help --verbose' คุณจะเห็นการตั้งค่าปัจจุบัน mysqld โหลดจาก my.cnf หรือผิดนัด
คำแนะนำเหล่านี้สำหรับ mariadb ของหุ้นใน centos 7.1
ต่อไปนี้เป็นวิธีการสำรองหรือทำซ้ำการตั้งค่าปัจจุบันของเครื่องไปยังการติดตั้งใหม่นำเสนอหรือในอนาคต
บนเครื่องที่เราต้องการคัดลอกการตั้งค่าเราสามารถเรียกใช้:
/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt
ในเครื่องอื่นเราสามารถติดตั้ง mariadb-server และเรียกใช้:
/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt
จากนั้นเราจะใส่ทั้งสองไฟล์ไว้ในไดเรกทอรีเดียวซึ่งในตัวอย่างนี้คือ "/ a /"
จากนั้นเราก็เรียกใช้:
comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)
หากไม่มีเอาต์พุตแสดงว่าทั้งสองไฟล์เหมือนกัน ซึ่งหมายความว่าการตั้งค่าทั้งหมดบนเครื่องทั้งสองเป็นค่าเริ่มต้น
หากมีการส่งออกบางส่วนแล้วบางบรรทัดจะไม่เยื้องในขณะที่บางบรรทัดจะเยื้อง
บรรทัดที่ไม่มีการเยื้องจะปรากฏเฉพาะในไฟล์แรกซึ่งนี่คือ /a/mysql_current_settings.txt
บรรทัดเยื้องจะปรากฏเฉพาะในไฟล์ที่สองซึ่งนี่คือ /a/mysql_default_settings.txt
ตอนนี้เรารู้ว่าการตั้งค่าทั้งหมดยกเว้นการตั้งค่าบางอย่างซึ่งตั้งอยู่ในบรรทัดคำสั่งซึ่งเริ่ม mysqld การตั้งค่าเหล่านี้อาจมาจาก /etc/my.cnf หรือ /etc/my.cnf.d/* ไฟล์หรือสคริปต์ที่กำหนดเองหรือนามแฝง ฯลฯ ในกรณีใด ๆ เราสามารถดูได้ด้วยคำสั่งต่อไปนี้:
ps -ef | grep mysqld
ตอนนี้เรารู้การตั้งค่าน้อยมากที่เราต้องเปลี่ยนในการติดตั้งใหม่เพื่อกำหนดค่าให้เป็นแบบเก่า
ที่นี่ติดตามรายละเอียดอื่น ๆ
บน centos 7.1 คำสั่งต่อไปนี้แสดงการตั้งค่าปัจจุบันทั้งหมดยกเว้นการตั้งค่าบางอย่างซึ่งตั้งค่าในบรรทัดคำสั่งซึ่งเริ่ม mysqld:
/usr/libexec/mysqld --help --verbose
โดยรวมจะแสดง:
ในส่วนแรกการตั้งค่าที่เราสามารถใช้เป็นพารามิเตอร์แรกหลังจาก "mysqld" เมื่อเราเริ่มมัน
ในส่วนที่สองการตั้งค่าที่รวบรวมเวลา;
ในส่วนที่สามการตั้งค่าปัจจุบัน
แม้ว่าบรรทัดสุดท้ายของเอาต์พุตจะพูดว่า: เพื่อดูว่าเซิร์ฟเวอร์ MySQL ที่ใช้งานนั้นให้ค่าอะไรให้พิมพ์:
mysqladmin variables -uroot -p
คำสั่งนั้นจะไม่แสดง fe, bind-address แม้ว่าเราจะเปลี่ยนใน /etc/my.cnf และเริ่ม mysql ใหม่
คำสั่งต่อไปนี้ยังแสดงการตั้งค่าต่าง ๆ แต่ไม่ใช่ "bind-address":
mysql -uroot -p -e"SHOW VARIABLES;"
โปรดทราบว่าบน centos 7.1 mysqld ไม่ได้อยู่ใน $ PATH
นี่คือวิธีที่ฉันโปรดปรานในการสร้าง 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
อย่างไรก็ตามสิ่งนี้ไม่สามารถทำงานได้อย่างน่าเชื่อถือสำหรับ Mac OS X
การทำเช่นนี้จะแสดงผลบันทึกตัวแปรสะอาดแสดงความคิดเห็นพร้อมที่จะนำเข้าสู่ my.cnf ของคุณ
แหล่งต้นฉบับ: http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html
mysqld -V|sed 's,^.*\(V.*\)\ for.*,\1,'
สำหรับรุ่นเซิร์ฟเวอร์คำสั่งคือ ไม่แน่ใจว่าสำคัญเพราะฉันคิดว่าทั้งไคลเอนต์และเซิร์ฟเวอร์ติดตั้งพร้อมกัน มีจุดประสงค์อะไร{{{1
และ1}}}
?