เพิ่มขนาดบัฟเฟอร์พูล InnoDB


11

ฉันมีปัญหาในการตั้งค่าขนาดบัฟเฟอร์พูลและขนาดไฟล์บันทึกสำหรับ MySql InnoDB ฉันอยู่ไกลจากผู้เชี่ยวชาญ MySql แต่ได้อ่านไปแล้วและดูเหมือนว่าการเปลี่ยนแปลงนี้ฉันเพิ่งเพิ่มบรรทัดเหล่านี้ไปยัง /etc/mysql/my.cnf ของฉัน

# Set buffer pool size to 50-80% of your computer's memory
innodb_buffer_pool_size=2048M
innodb_additional_mem_pool_size=512M
#
# Set the log file size to about 25% of the buffer pool size
innodb_log_file_size=256M
innodb_log_buffer_size=128M

เซิร์ฟเวอร์มีหน่วยความจำประมาณ 7GB และใช้งานเว็บเซิร์ฟเวอร์ด้วยดังนั้นฉันคิดว่าตัวเลขเหล่านี้ควรเป็นจุดเริ่มต้นที่ใช้ได้ หลังจากบันทึกและรีสตาร์ทเซิร์ฟเวอร์อย่างไรก็ตามดูเหมือนว่าการเปลี่ยนแปลงจะมีผล ฉันลองใช้ Mysqltuner ซึ่งรายงานว่าบัฟเฟอร์พูลยังคงอยู่ที่ 16.0M มีความคิดอะไรที่ฉันกำลังทำผิดหรือเปล่า? แจ้งให้เราทราบหากคุณต้องการดูไฟล์กำหนดค่าเพิ่มเติม ขอบคุณ!


การกระจายอะไร คุณใช้แพ็คเกจของ distro หรืออย่างอื่น คุณจะเริ่ม MySQL อย่างไร กล่าวโดยย่อคือคุณติดตั้งอะไรติดตั้งอะไรและติดตั้งอย่างไร
navaho

เป็นหลอดไฟเริ่มต้นที่ด้านบนของเซิร์ฟเวอร์ Ubuntu x64
tgrosinger

มีไฟล์ปรับแต่งอื่นอยู่ใน / opt / lampp / etc ที่ฉันเชื่อว่ากำลังใช้งานอยู่
tgrosinger

คำตอบ:


7

ตรวจสอบให้แน่ใจเส้นที่อยู่ใน[mysqld]IE ส่วนหลังจากที่[mysqld]แต่ก่อนอื่น ๆเช่น[section][mysqldump]


พวกเขาอยู่ในส่วนที่ถูกต้องใน [mysqld] ก่อน [mysqldump]
tgrosinger

2

ตรวจสอบล็อกข้อผิดพลาด MySQL ของคุณสำหรับข้อมูลซึ่งมีแนวโน้มมากที่สุดที่ตั้งอยู่ใน/var/lib/mysqlนั้นเป็นระบบ 32 บิตพร้อมเคอร์เนล bigmem หรือไม่ ถ้าเป็นเช่นนั้นคุณไม่สามารถระบุที่อยู่เกิน 2GB สำหรับ MySQL

นอกจากนี้ - คุณจะต้องยืนยันจาก MySQL เกี่ยวกับขนาดบัฟเฟอร์พูล - 16MB ฟังดูเล็กน้อยโดยพิจารณาว่าค่าเริ่มต้นคือ 128M คุณสามารถยืนยันได้โดยพิมพ์ 'SHOW VARIABLES LIKE' innodb_buffer_pool_size 'ในเซสชัน MySQL สำหรับเซิร์ฟเวอร์นั้น ผลลัพธ์เป็นไบต์


ด้วยเหตุผลบางอย่างฉันไม่สามารถเข้าไปในไดเรกทอรีนั้นได้ ฉันสามารถดูได้เมื่อฉันทำ ls บน / var / lib แต่เมื่อฉันลองซีดีเข้าไปฉันได้รับ "สิทธิ์ถูกปฏิเสธ" ถ้าฉันลอง cd ในแบบ sudo มันก็บอกว่า "ไม่มีไฟล์หรือไดเรคทอรีนั้น" คิด? เป็นการติดตั้ง Ubuntu Server 64 บิต
tgrosinger

คุณควรโพสต์ my.cnf ของคุณ (/etc/my.cnf หรือ debian อาจเป็น /etc/mysql/my.cnf)
thinice

นอกจากนี้ - คุณจะต้องยืนยันจาก MySQL เกี่ยวกับขนาดบัฟเฟอร์พูล - 16MB ฟังดูเล็กน้อยโดยพิจารณาว่าค่าเริ่มต้นคือ 128M คุณสามารถยืนยันได้โดยพิมพ์ 'SHOW VARIABLES LIKE' innodb_buffer_pool_size 'ในเซสชัน MySQL สำหรับเซิร์ฟเวอร์นั้น ผลลัพธ์เป็นไบต์
thinice

1
sudo cdจะไม่ทำงานเพราะ sudo สร้าง subshell ด้วยสิทธิ์ที่ถูกต้องและปิดมันเมื่อเสร็จแล้วทำให้คุณอยู่ในตำแหน่งที่คุณเริ่มต้น ลองsudo -sแทน
Ladadadada

ดังนั้นเมื่อฉันใช้ SHOW VARIABLES LIKE ... มันบอกว่าขนาดบัฟเฟอร์พูลคือ 16777216 ซึ่งฉันเชื่อว่าในความเป็นจริง 16M นี่คือ my.cnf th: hastebin.com/binaqeforu.vala ขอบคุณมาก!
tgrosinger

2

innodb_buffer_pool_instancesในกรณีของปัญหาคือ

ตั้งแต่ฉันลดinnodb_buffer_pool_sizeขนาดมันก็น้อยกว่า 1GB ต่อหนึ่งครั้งดังนั้นมันจึงปัดเศษขึ้น

เมื่อฉันยังลดลงอินสแตนซ์ในที่สุดมันก็เปลี่ยนขนาดสระว่ายน้ำ !


0

อาจเป็นคุณเริ่ม mysql ด้วย --no-defaults หรือ (-no-defaults) ซึ่งทำให้ไม่โหลด config เลย มี --defaults-file (หรือ -default-file ไม่แน่ใจ) ซึ่งทำให้โหลดการตั้งค่าเฉพาะ ตรวจสอบด้วยว่านั่นคือการกำหนดค่าที่แตกต่างจากที่คุณแก้ไข

คุณสามารถลองเริ่มด้วย:

--innodb_buffer_pool_size=2048M --innodb_log_buffer_size=512M

หรือตรวจสอบพารามิเตอร์ที่คุณเริ่มต้นด้วยและดูว่าหนึ่งในนั้นทำให้การละเว้นการกำหนดค่า


ฉันจะดูได้อย่างไรว่ามันเริ่มต้นใน Ubuntu หรือไม่? ฉันคุ้นเคยกับการโค้งแล้วฉันจะเพิ่มมันลงในไฟล์ rc.d แต่ฉันไม่เห็นอะไรแบบนี้
tgrosinger

Arch ใช้ BSD Style Init ในขณะที่ Ubuntu ใช้ SysV Init ดังนั้นจึงมีไฟล์ใน /etc/init.d เพื่อเริ่มและอาจเป็นไฟล์ใน / etc / ค่าเริ่มต้นที่มีการตั้งค่าตัวเลือก โดยใช้บางสิ่งบางอย่างตามสายของ 'ps -ef | grep mysql 'คุณสามารถดูได้ว่ามีตัวเลือกใดบ้าง
juwi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.