Score:1

ข้อผิดพลาด MySQL / ความเสียหายหลังจากอัปเดต WordPress

ธง cn

เมื่อวานฉันอัปเดตเว็บไซต์ Wordpress เป็น WordPress เวอร์ชันล่าสุด (6.0) และอัปเดตปลั๊กอินอื่นๆ อีกหลายตัวเป็นเวอร์ชันล่าสุดหลังจากการอัปเดตดูเหมือนว่าทุกอย่างจะทำงานได้ดี ฉันจึงปิดใช้งานหน้าการบำรุงรักษาของฉัน หลายชั่วโมงต่อมา เซิร์ฟเวอร์ MySQL ระยะไกลของฉัน (ใช้สำหรับฐานข้อมูล WP) ขัดข้อง และเช้านี้ WebServer (Nginx) ของฉันไม่สามารถเชื่อมต่อกับฐานข้อมูลได้

ฉันคืนค่าเซิร์ฟเวอร์ที่ใช้งานจริงจากการสำรองข้อมูล และฉันได้แนบวอลุ่มที่อาจเสียหายจากเซิร์ฟเวอร์ MySQL เข้ากับอินสแตนซ์ใหม่ MySQL ไม่เริ่มทำงาน และฉันได้ตรวจสอบบันทึกแล้ว แต่บันทึกเหล่านี้อยู่เหนือระดับความเชี่ยวชาญของฉัน

ด้านล่างนี้เป็นบันทึกสองส่วน ครั้งแรกที่อธิบายถึงการทุจริตที่อาจเกิดขึ้น? ฉันเพิ่ม innodb_force_recovery = 6 ลงในไฟล์ CNF ของฉัน และนั่นทำให้ MySQL เริ่มทำงาน แต่ฉันไม่รู้จริงๆ ว่าหมายความว่าอย่างไร แปลว่ามีการทุจริตแน่นอน 100% แล้วถ้ามี จะหาสาเหตุได้อย่างไร / ที่ไหน?

ส่วนที่สองมีข้อผิดพลาดของบัฟเฟอร์พูล ซึ่งง่ายกว่าเล็กน้อยสำหรับฉันที่จะเข้าใจ ฉันแสดงความคิดเห็นเกี่ยวกับการตั้งค่า innodb_buffer_pool_size ในไฟล์ CNF ของฉัน แต่นั่นไม่มีผลกับ MySQL ที่เริ่มต้นโดยไม่ได้ตั้งค่า innodb_force_recovery เป็น 6

ฉันหวังว่าจะมีคนอธิบายข้อผิดพลาดและเป็นไปได้ว่าจะหาสาเหตุได้อย่างไร

MySQL8.0.29 R6G.Large (2 คอร์ แรม 16GB) บัฟเฟอร์พูล: 12000M

ส่วนที่ 1:

InnoDB: เราจงใจสร้างกับดักความจำ
InnoDB: ส่งรายงานข้อผิดพลาดโดยละเอียดไปที่ http://bugs.mysql.com
InnoDB: หากคุณได้รับข้อผิดพลาดหรือข้อขัดข้องซ้ำๆ
InnoDB: ทันทีหลังจากเริ่มต้น mysqld อาจมี
InnoDB: ความเสียหายในพื้นที่ตาราง InnoDB โปรดดูที่
InnoDB: http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html
InnoDB: เกี่ยวกับการบังคับให้กู้คืน
18:49:04 UTC - mysqld ได้รับสัญญาณ 6 ;
เป็นไปได้มากว่าคุณพบข้อผิดพลาด แต่ข้อผิดพลาดนี้อาจเกิดจากฮาร์ดแวร์ทำงานผิดปกติ
ตัวชี้เธรด: 0xfffc28000b20
พยายามย้อนรอย คุณสามารถใช้ข้อมูลต่อไปนี้เพื่อค้นหา
ที่ mysqld ตาย หากคุณไม่เห็นข้อความหลังจากนี้ แสดงว่ามีบางอย่างเกิดขึ้น
ผิดมหันต์...
stack_bottom = fffc488565f0 thread_stack 0x100000
/usr/sbin/mysqld(my_print_stacktrace(char const* ที่ไม่ได้ลงชื่อ, long ที่ไม่ได้ลงชื่อ)+0x44) [0x1d0e2a4]
/usr/sbin/mysqld(print_fatal_signal(int)+0x28c) [0xe3278c]
/usr/sbin/mysqld(my_server_abort()+0xa0) [0xe32920]
/usr/sbin/mysqld(my_abort()+0x14) [0x1d08244]
/usr/sbin/mysqld(ut_dbg_assertion_failed(char const*, char const*, unsigned long)+0x290) [0x1f79ba0]
/usr/sbin/mysqld() [0x1f7c42c]
/usr/sbin/mysqld(page_copy_rec_list_end_no_locks(buf_block_t*, buf_block_t*, unsigned char*, dict_index_t*, mtr_t*)+0x2dc) [0x1ec1dec]
/usr/sbin/mysqld(page_copy_rec_list_end(buf_block_t*, buf_block_t*, unsigned char*, dict_index_t*, mtr_t*)+0x300) [0x1ec2270]
/usr/sbin/mysqld(btr_compress(btr_cur_t*, บูล, mtr_t*)+0x624) [0x1fa53f4]
/usr/sbin/mysqld(btr_cur_pessimistic_delete(dberr_t*, bool, btr_cur_t*, unsigned int, bool, unsigned long, unsigned long, unsigned long, unsigned long, mtr_t*, btr_pcur_t*, purge_node_t*)+0x1cc) [0x1fb130c]
/usr/sbin/mysqld() [0x1f02bf8]
/usr/sbin/mysqld(row_purge_step(que_thr_t*)+0x4f4) [0x1f05364]
/usr/sbin/mysqld(que_run_threads(que_thr_t*)+0x578) [0x1ece5e8]
/usr/sbin/mysqld(srv_worker_thread()+0x21c) [0x1f3184c]
/usr/sbin/mysqld(std::thread::_State_impl<std::thread::_Invoker<std::tuple<Detached_thread, void (*)()> > >::_M_run()+0xd4) [0x1e85774]
/usr/sbin/mysqld() [0x244623c]
/lib64/libpthread.so.0(+0x722c) [0xffffab1ec22c]
/lib64/libc.so.6(+0xd2e5c) [0xffffaaa99e5c]

พยายามรับตัวแปรบางอย่าง
ตัวชี้บางตัวอาจไม่ถูกต้องและทำให้การถ่ายโอนข้อมูลถูกยกเลิก
ข้อความค้นหา (0): รหัสการเชื่อมต่อ (รหัสเธรด): 0
สถานะ: NOT_KILLED

หน้าคู่มือที่ http://dev.mysql.com/doc/mysql/en/crashing.html ประกอบด้วย
ข้อมูลที่จะช่วยให้คุณทราบว่าอะไรเป็นสาเหตุของความผิดพลาด
2022-05-25T18:49:04.565524Z 0 [คำเตือน] [MY-010918] [เซิร์ฟเวอร์] 'default_authentication_plugin' เลิกใช้แล้วและจะถูกลบออกในรุ่นต่อไป โปรดใช้การยืนยันตัวตน_นโยบายแทน
2022-05-25T18:49:04.565544Z 0 [ระบบ] [MY-010116] [เซิร์ฟเวอร์] /usr/sbin/mysqld (mysqld 8.0.29) เริ่มต้นเป็นกระบวนการ 6679
2022-05-25T18:49:04.571539Z 1 [ระบบ] [MY-013576] [InnoDB] การเริ่มต้น InnoDB ได้เริ่มขึ้นแล้ว
2022-05-25T18:49:05.807854Z 1 [ระบบ] [MY-013577] [InnoDB] การเริ่มต้น InnoDB สิ้นสุดลงแล้ว
2022-05-25T18:49:06.622221Z 0 [ระบบ] [MY-010229] [เซิร์ฟเวอร์] กำลังเริ่มต้นการกู้คืนข้อผิดพลาด XA...
2022-05-25T18:49:06.625449Z 0 [ระบบ] [MY-010232] [เซิร์ฟเวอร์] การกู้คืนข้อขัดข้อง XA เสร็จสิ้น
2022-05-25T18:49:07.251794Z 0 [คำเตือน] [MY-010068] [เซิร์ฟเวอร์] ใบรับรอง CA ca.pem ลงนามด้วยตนเอง
2022-05-25T18:49:07.251829Z 0 [ระบบ] [MY-013602] [เซิร์ฟเวอร์] ช่อง mysql_main กำหนดค่าให้รองรับ TLS ขณะนี้รองรับการเชื่อมต่อที่เข้ารหัสสำหรับช่องนี้
2022-05-25T18:49:07.272581Z 0 [ระบบ] [MY-011323] [เซิร์ฟเวอร์] ปลั๊กอิน X พร้อมสำหรับการเชื่อมต่อ ที่อยู่ผูก: '::' พอร์ต: 33060, ซ็อกเก็ต: /var/run/mysqld/mysqlx.sock
2022-05-25T18:49:07.272631Z 0 [ระบบ] [MY-010931] [เซิร์ฟเวอร์] /usr/sbin/mysqld: พร้อมสำหรับการเชื่อมต่อ เวอร์ชัน: '8.0.29' ซ็อกเก็ต: '/var/lib/mysql/mysql.sock' พอร์ต: 3306 MySQL Community Server - GPL
2022-05-25T18:49:07.347411Z 0 [ข้อผิดพลาด] [MY-012687] [InnoDB] [FATAL] Rec offset 99, cur1 offset 4038, cur2 offset 16004
2022-05-25T18:49:07.347449Z 0 [ข้อผิดพลาด] [MY-013183] [InnoDB] การยืนยันล้มเหลว: page0page.cc:502:ib::fatal triggered thread 281457662619536

ส่วนที่ 2:

หน้าคู่มือที่ http://dev.mysql.com/doc/mysql/en/crashing.html ประกอบด้วย
ข้อมูลที่จะช่วยให้คุณทราบว่าอะไรเป็นสาเหตุของความผิดพลาด
2022-05-26T12:27:29.518146Z 0 [คำเตือน] [MY-010918] [เซิร์ฟเวอร์] 'default_authentication_plugin' เลิกใช้แล้วและจะถูกลบออกในรุ่นต่อๆ ไป โปรดใช้การยืนยันตัวตน_นโยบายแทน
2022-05-26T12:27:29.518165Z 0 [ระบบ] [MY-010116] [เซิร์ฟเวอร์] /usr/sbin/mysqld (mysqld 8.0.29) เริ่มต้นเป็นกระบวนการ 17135
2022-05-26T12:27:29.524074Z 1 [ระบบ] [MY-013576] [InnoDB] การเริ่มต้น InnoDB ได้เริ่มขึ้นแล้ว
2022-05-26T13:20:40.613066Z 0 [คำเตือน] [MY-010918] [เซิร์ฟเวอร์] 'default_authentication_plugin' เลิกใช้แล้วและจะถูกลบออกในรุ่นต่อๆ ไป โปรดใช้การยืนยันตัวตน_นโยบายแทน
2022-05-26T13:20:40.613087Z 0 [ระบบ] [MY-010116] [เซิร์ฟเวอร์] /usr/sbin/mysqld (mysqld 8.0.29) เริ่มต้นเป็นกระบวนการ 1086
2022-05-26T13:20:41.866918Z 1 [ระบบ] [MY-013576] [InnoDB] การเริ่มต้น InnoDB เริ่มต้นขึ้นแล้ว
2022-05-26T13:20:49.824464Z 0 [คำเตือน] [MY-012681] [InnoDB] page_aligned_alloc mmap(137232384 ไบต์) ล้มเหลว; เออร์โน 12
2022-05-26T13:20:49.844869Z 0 [คำเตือน] [MY-012681] [InnoDB] page_aligned_alloc mmap(137232384 ไบต์) ล้มเหลว; เออร์โน 12
2022-05-26T13:20:49.961232Z 1 [ข้อผิดพลาด] [MY-012956] [InnoDB] ไม่สามารถจัดสรรหน่วยความจำสำหรับบัฟเฟอร์พูล
2022-05-26T13:20:49.961279Z 1 [ข้อผิดพลาด] [MY-012930] [InnoDB] การเริ่มต้นปลั๊กอินถูกยกเลิกโดยมีข้อผิดพลาด ข้อผิดพลาดทั่วไป
2022-05-26T13:20:49.962080Z 1 [ข้อผิดพลาด] [MY-010334] [เซิร์ฟเวอร์] ไม่สามารถเริ่มต้น DD Storage Engine
2022-05-26T13:20:49.962240Z 0 [ข้อผิดพลาด] [MY-010020] [เซิร์ฟเวอร์] การเริ่มต้นพจนานุกรมข้อมูลล้มเหลว
2022-05-26T13:20:49.962355Z 0 [ข้อผิดพลาด] [MY-010119] [เซิร์ฟเวอร์] กำลังยกเลิก
2022-05-26T13:20:49.966630Z 0 [ระบบ] [MY-010910] [เซิร์ฟเวอร์] /usr/sbin/mysqld: การปิดระบบเสร็จสมบูรณ์ (mysqld 8.0.29) MySQL Community Server - GPL

ความช่วยเหลือใด ๆ จะดีมาก

อัปเดต: ฉันรัน mysqlcheck บนฐานข้อมูลที่ผิดพลาดและพบความเสียหาย ดูเหมือนว่าสาเหตุคือ WooCommerce?

นี่คือข้อผิดพลาดที่ mysqlcheck ส่งคืน:

การผลิต wp_wc_admin_note_actions
คำเตือน: InnoDB: B-tree ของดัชนีหลักเสียหาย
คำเตือน : InnoDB: ดัชนี 'note_id' มี 1,004 รายการ ควรเป็น 18446744073709551615
ข้อผิดพลาด: เสียหาย

แจ็ค

ua flag
ยื่นข้อบกพร่องที่ bugs.mysql.com -- ฉันไม่คิดว่า WP _directly_ เป็นฝ่ายผิด มีสิ่งอื่นเกิดขึ้นในเวลาเดียวกันหรือไม่? เช่น ไฟดับ ดิสก์ขัดข้อง ฯลฯ?
cn flag
เฮ้ริค ไม่ใช่ที่ฉันเคยพบ อย่างอื่นดูดีหมด ข้อบกพร่องจะไม่ส่งผลกระทบต่อการสำรองข้อมูลของฉันด้วย ซึ่งไม่มีปัญหาใดๆ ใช่ไหม วอลุ่มที่ได้รับผลกระทบทำงานบนอินสแตนซ์แยกต่างหากในโหมดการกู้คืน 6 เป็นเวลา 24 ชั่วโมงและไม่มีปัญหาใดๆ เพิ่มเติม มีวิธีตรวจสอบว่ามีตารางเสียหายและหรือสาเหตุหรือไม่?
ua flag
"สูงกว่าเงินเดือนของฉัน"
cn flag
ของผมก็เช่นกัน :) หวังว่าสมาชิกท่านอื่นจะมีไอเดียบ้างนะครับ ขอบคุณ
cn flag
@RickJames ดูเหมือนว่าจะเป็นการอัปเดต WooCommerce ที่ทำให้เกิดปัญหา ฉันทราบวิธีใช้ mysqlcheck และพบความเสียหายใน wp_wc_admin_note_actions ดูด้านบน ฉันอัปเดตโพสต์ของฉัน
ua flag
ตาราง Engine = MyISAM หรือไม่ ที่มีปัญหาการทุจริต. เปลี่ยนเป็น InnoDB
cn flag
เป็น innoDB ฉันไม่เคยใช้ MyISAM ฉันได้ติดต่อฝ่ายสนับสนุนของ WooCommerce และพวกเขากำลังตรวจสอบ
Wilson Hauck avatar
jp flag
แจ็ค คุณผ่าน innodb_force_recovery=1 แล้ว 2 แล้ว 3 หรือตรงไปที่ 6 ไหม Stepping เป็นวิธีการที่จัดทำเป็นเอกสารสำหรับข้อมูลที่กู้คืนได้มากที่สุดโดยมีปริมาณอันตรายน้อยที่สุด
cn flag
วิลสัน ไม่ ฉันแค่อ่านเอกสารหลังจากนั้น ฉันมีข้อมูลสำรองทั้งหมดก่อนที่จะเกิดความเสียหาย และฉันมีข้อมูลสำรองของเซิร์ฟเวอร์ที่เสียหายก่อนที่จะมีการบังคับกู้คืน ฉันได้คืนค่าเซิร์ฟเวอร์ที่เสียหายจากการสำรองและกู้คืนแล้ว 1 ไม่รีสตาร์ท แต่ 2 เริ่มใหม่ ฉันยังไม่สามารถสรุปสาเหตุให้แคบลงได้ WooCommerce กล่าวว่าไม่ใช่พวกเขาและไม่มีใครรายงานปัญหา มีความคิดเกี่ยวกับวิธีการหาสาเหตุ?
jp flag
เรากำลังพูดถึงปัญหาเดียวกันทุกประการ เรากำลังใช้งานเซิร์ฟเวอร์ MySQL 8.0.29 ประมาณ 300 เครื่อง ในช่วง 2 1/2 สัปดาห์ที่ผ่านมา เราพบปัญหานี้ในเซิร์ฟเวอร์ MySQL อย่างน้อยเก้าเครื่อง ซึ่งมักจะเกี่ยวข้องกับตารางที่คุณกล่าวถึง: wp_wc_admin_note_actions อย่างที่กล่าวไป เราก็เคยเห็นมันในโต๊ะอื่นๆ เช่นกัน ฉันได้สร้างเธรดในฟอรัม MySQL สำหรับสิ่งนี้: https://forums.mysql.com/read.php?22,704532,704532#msg-704532 ขออภัย ฉันไม่สามารถสร้างปัญหาซ้ำได้เลย แม้ว่าจะพยายามมามากแล้วก็ตาม ดูเหมือนว่าจะเกิดขึ้นแบบสุ่มจนถึงตอนนี้
cn flag
@user40974 น่าสนใจมาก! คุณมีปัญหาตั้งแต่อัปเกรด WordPress หรือ WooCommerce หรือไม่? ฉันกำลังวางแผนทำซ้ำสภาพแวดล้อมที่ใช้งานจริงและอัปเดตทีละรายการ โดยมีเวลา 24 ชั่วโมงระหว่างการอัปเดตแต่ละครั้ง และตรวจสอบฐานข้อมูลเพื่อหาความเสียหายก่อนที่จะอัปเดตครั้งต่อไป WooCommerce ดูเหมือนจะคิดว่าไม่ใช่พวกเขา ฉันไม่คิดว่ามันใช่ MySQL เนื่องจากฐานข้อมูล MySQL อื่นๆ ของฉันใช้เวอร์ชันเดียวกัน แต่ไม่ได้เชื่อมต่อกับ WordPress และอื่นๆ ไม่มีปัญหา
jp flag
@JackJohnstone53 ขออภัย ฉันมองเห็นสิ่งนี้จากมุมมองภายนอกเท่านั้น โดยทำงานเป็นผู้ดูแลระบบ ดังนั้นฉันมักจะสังเกตเห็นก็ต่อเมื่อมันสายเกินไป และไม่รู้ว่าลูกค้าของเราทำอะไรมาก่อน ดูเหมือนว่ามักจะเชื่อมต่อกับการอัปเกรด Woocommerce แต่อย่างที่พูดไปแล้ว ฉันได้เห็นสิ่งนี้เกิดขึ้นกับตารางปลั๊กอิน wordpress อื่น ๆ เช่นกัน ดังนั้นฉันเดาว่านั่นคือข้อบกพร่องของ MySQL ปลั๊กอินไม่ควรทำให้ฐานข้อมูล InnoDB เสียหายได้ ไม่ว่าข้อมูลนั้นจะมี/แก้ไขอย่างไรก็ตาม นอกจากนี้ยังเริ่มหลังจากการอัปเกรด 8.0.29
jp flag
ตารางอื่นที่เรามีสองกรณีนี้เรียกว่า "spbc_scan_results" ดูเหมือนว่าจะเกี่ยวข้องกับปลั๊กอินเวิร์ดเพรสนี้: https://de.wordpress.org/plugins/security-malware-firewall/
cn flag
@user40974 ฉันคิดเสมอว่าปลั๊กอินอาจทำให้ฐานข้อมูลเสียหายได้ แต่นั่นก็เกินความสามารถของฉัน ฉันจะติดตามการสนับสนุน WooCommerce และส่งลิงก์สำหรับเธรดและโพสต์ในฟอรัม MySQL ของคุณให้พวกเขา ฉันจะอัปเดตเธรดหากพบสิ่งใด ขอบคุณ!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา