Menu

Tuesday, March 10, 2020

[Docker - MySQL] วิธีการหลีกเลี่ยงกรณีที่ไม่สามารถรัน mysql:5.7 container ได้ เนื่องจากมีข้อผิดพลาด "Operating system error number 22 in a file operation"
[Docker - MySQL] Workaround for mysql:5.7 Container Cannot Start Due to "Operating system error number 22 in a file operation"

เนื่องจากมีหลายโปรเจคที่ใช้ฐานข้อมูลเป็น MySQL ผมจึงรัน MySQL Docker ผ่านทาง Docker Compose (บน Docker Toolbox ของ Windows) เพื่อใช้เป็นฐานข้อมูล ซึ่งจะมีการตั้งค่าในส่วน mysql service ใน docker-compose.yml ตามด้านล่างนี้
mysql:
    container_name: mysqlserver
    image: mysql:5.7
    ports:
        - 3306:3306
    volumes:
        - ./mysql:/var/lib/mysql
อย่างไรก็ตาม ปัญหานึงที่ผมเจอ คือ Container ของ MySQL จะหยุดการทำงาน เมื่อรันไปสักพัก เมื่อตรวจสอบ Log ของ Container จะเจอ error ดังนี้
2020-03-06T08:39:40.454013Z 0 [ERROR] InnoDB: Operating system error number 22 in a file operation.
2020-03-06T08:39:40.454196Z 0 [ERROR] InnoDB: Error number 22 means 'Invalid argument'
2020-03-06T08:39:40.454258Z 0 [ERROR] InnoDB: File ./ib_logfile101: 'aio write' returned OS error 122. Cannot continue operation
2020-03-06T08:39:40.454584Z 0 [ERROR] InnoDB: Cannot continue operation.
จากการตรวจสอบเบื้องต้นยังไม่สามารถหาวิธีแก้ไขได้ แต่มีวิธีการหลีกเลี่ยง error ข้างต้นไม่ให้เกิดขึ้น  โดยแก้ไขการตั้งค่าในส่วน mysql service ใน docker-compose.yml ดังนี้
mysql:
    container_name: mysqlserver
    image: mysql:5.7
    ports:
        - 3306:3306
    # volumes:
    #     - ./mysql:/var/lib/mysql

No comments:

Post a Comment