BMS-HOSxP Community
HOSxP => HOSxP PCU => ข้อความที่เริ่มโดย: 24x7-Sevice ที่ มิถุนายน 23, 2013, 16:51:15 PM
-
Restore ข้อมูลลงใน CentOS แล้วมีปัญหา LOCK TABLES ต้องแก้ไขอย่างไร ?
Error ตามภาพที่แนบ
-
โพส my.cnf ให้ดูหน่อยครับ
-
[mysql]
default-character-set=tis620
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
#default-character-set=tis620
user = mysql
default-storage-engine = InnoDB
socket = /var/lib/mysql/mysql.sock
skip-name-resolve
transaction_isolation = READ-UNCOMMITTED
############################
##key_buffer - 64M for 1GB, 128M for 2GB, 256 for 4GB
key_buffer=64M
##join_buffer_size - 1M for 1GB, 2M for 2GB, 4M for 4GB
join_buffer=1M
##sort_buffer_size - 1M for 1GB, 2M for 2GB, 4M for 4GB
sort_buffer_size=1M
##read_buffer_size - 1M for 1GB, 2M for 2GB, 4M for 4GB
read_buffer_size=1M
##read_rnd_buffer_size - 768K for 1GB, 1536K for 2GB, 3072K for 4GB
read_rnd_buffer_size=768K
##myisam_sort_buffer_size - 32M for 1GB, 64M for 2GB, 128 for 4GB
myisam_sort_buffer_size=32M
############################
max_allowed_packet=32M
query_cache_size=128M
max_connections=1000
thread_stack=512K ## If can't RUN change 128K to 512K
#thread_cache_size=8
############################
innodb_buffer_pool_size = 500M
##innodb_log_file_size 5242880
# 1. innodb_log_file_size = 10M
innodb_additional_mem_pool_size = 20M
innodb_file_per_table = 1
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_thread_concurrency = 4
innodb_flush_method = O_DIRECT
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_io_capacity = 500
innodb_lock_wait_timeout = 60
#########################
innodb_lock_wait_timeout=50
innodb_support_xa=0
innodb_locks_unsafe_for_binlog=1
innodb_thread_concurrency=0
innodb_doublewrite=0
innodb_file_per_table
skip-character-set-client-handshake
##skip-locking
skip-external-locking
skip-name-resolve
big-tables
#########################
##innodb_data_file_path = ibdata1:10M:autoextend
innodb_data_file_path = ibdata1:20M:autoextend
log_error = /var/lib/mysql/error.log
log_queries_not_using_indexes = 1
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
[isamchk]
#key_buffer - 64M for 1GB, 128M for 2GB, 256M for 4GB
key_buffer=64M
#sort_buffer - 64M for 1GB, 128M for 2GB, 256M for 4GB
sort_buffer=64M
#read_buffer - 16M for 1GB, 32M for 2GB, 64M for 4GB
read_buffer=16M
#write_buffer - 16M for 1GB, 32M for 2GB, 64M for 4GB
write_buffer=16M
[myisamchk]
#key_buffer - 64M for 1GB, 128M for 2GB, 256M for 4GB
key_buffer=64M
#sort_buffer - 64M for 1GB, 128M for 2GB, 256M for 4GB
sort_buffer=64M
#read_buffer - 16M for 1GB, 32M for 2GB, 64M for 4GB
read_buffer=16M
#write_buffer - 16M for 1GB, 32M for 2GB, 64M for 4GB
write_buffer=16M
[mysqldump]
default-character-set=tis620
max_allowed_packet=16M
-
ที่ป้ายสีแดงไว้ใส่ # ข้างหน้าไว้ซักตัวฟังค์ชั่นซ้ำกันแล้วสั่ง restart service mysql จากนั้นทดสอบ restore ใหม่ครับ
[mysql]
default-character-set=tis620
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
#default-character-set=tis620
user = mysql
default-storage-engine = InnoDB
socket = /var/lib/mysql/mysql.sock
skip-name-resolve
transaction_isolation = READ-UNCOMMITTED
############################
##key_buffer - 64M for 1GB, 128M for 2GB, 256 for 4GB
key_buffer=64M
##join_buffer_size - 1M for 1GB, 2M for 2GB, 4M for 4GB
join_buffer=1M
##sort_buffer_size - 1M for 1GB, 2M for 2GB, 4M for 4GB
sort_buffer_size=1M
##read_buffer_size - 1M for 1GB, 2M for 2GB, 4M for 4GB
read_buffer_size=1M
##read_rnd_buffer_size - 768K for 1GB, 1536K for 2GB, 3072K for 4GB
read_rnd_buffer_size=768K
##myisam_sort_buffer_size - 32M for 1GB, 64M for 2GB, 128 for 4GB
myisam_sort_buffer_size=32M
############################
max_allowed_packet=32M
query_cache_size=128M
max_connections=1000
thread_stack=512K ## If can't RUN change 128K to 512K
#thread_cache_size=8
############################
innodb_buffer_pool_size = 500M
##innodb_log_file_size 5242880
# 1. innodb_log_file_size = 10M
innodb_additional_mem_pool_size = 20M
innodb_file_per_table = 1
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_thread_concurrency = 4
innodb_flush_method = O_DIRECT
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_io_capacity = 500
innodb_lock_wait_timeout = 60
#########################
innodb_lock_wait_timeout=50
innodb_support_xa=0
innodb_locks_unsafe_for_binlog=1
innodb_thread_concurrency=0
innodb_doublewrite=0
innodb_file_per_table
skip-character-set-client-handshake
##skip-locking
skip-external-locking
skip-name-resolve
big-tables
#########################
##innodb_data_file_path = ibdata1:10M:autoextend
innodb_data_file_path = ibdata1:20M:autoextend
log_error = /var/lib/mysql/error.log
log_queries_not_using_indexes = 1
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
[isamchk]
#key_buffer - 64M for 1GB, 128M for 2GB, 256M for 4GB
key_buffer=64M
#sort_buffer - 64M for 1GB, 128M for 2GB, 256M for 4GB
sort_buffer=64M
#read_buffer - 16M for 1GB, 32M for 2GB, 64M for 4GB
read_buffer=16M
#write_buffer - 16M for 1GB, 32M for 2GB, 64M for 4GB
write_buffer=16M
[myisamchk]
#key_buffer - 64M for 1GB, 128M for 2GB, 256M for 4GB
key_buffer=64M
#sort_buffer - 64M for 1GB, 128M for 2GB, 256M for 4GB
sort_buffer=64M
#read_buffer - 16M for 1GB, 32M for 2GB, 64M for 4GB
read_buffer=16M
#write_buffer - 16M for 1GB, 32M for 2GB, 64M for 4GB
write_buffer=16M
[mysqldump]
default-character-set=tis620
max_allowed_packet=16M
-
ทดสอบตามที่แนะนำแล้ว 3 รูปแบบ คือ
รูปแบบที่ 1
##innodb_file_per_table = 1
innodb_file_per_table
รูปแบบที่ 2
innodb_file_per_table = 1
##innodb_file_per_table
รูปแบบที่ 3
##innodb_file_per_table = 1
##innodb_file_per_table
ก็ยังขึ้น Error เหมือนเดิม...เลยส่งรูป Debug Report มาให้ดูเพิ่ม...
-
ลอง restore ใหม่แล้วยังครับ
ทดสอบตามที่แนะนำแล้ว 3 รูปแบบ คือ
รูปแบบที่ 1
##innodb_file_per_table = 1
innodb_file_per_table
รูปแบบที่ 2
innodb_file_per_table = 1
##innodb_file_per_table
รูปแบบที่ 3
##innodb_file_per_table = 1
##innodb_file_per_table
ก็ยังขึ้น Error เหมือนเดิม...เลยส่งรูป Debug Report มาให้ดูเพิ่ม...
-
Restart Mysql และ Restore ข้อมูลใหม่แล้ว ก็ยังขึ้น Error เหมือนเดิม.
[qote author=dotAtainer link=topic=30130.msg246714#msg246714 date=1372127029]
ลอง restore ใหม่แล้วยังครับ
ทดสอบตามที่แนะนำแล้ว 3 รูปแบบ คือ
รูปแบบที่ 1
##innodb_file_per_table = 1
innodb_file_per_table
รูปแบบที่ 2
innodb_file_per_table = 1
##innodb_file_per_table
รูปแบบที่ 3
##innodb_file_per_table = 1
##innodb_file_per_table
ก็ยังขึ้น Error เหมือนเดิม...เลยส่งรูป Debug Report มาให้ดูเพิ่ม...
[/quote]
-
จากปัญหาตรงนี้คง เป็นที่ตัวตาราง หรือไม่ก็ harddisk ครับ อาจมีความเสียหายของตารางนั้นๆครับ ตอน restore มันถามมีปุ่มให้กด continue แล้วมันวิ่งไปต่อรึป่าว ถ้าไปต่อก็กดๆ ข้าม error ไปจน เสร็จครับ แล้วไป query ดูไฟล์ที่ตารางที่มัน error ครับ ว่าดูได้ไหม ลอง repair ดู ถ้าเป็นตารางที่ข้อมูลนิ่งๆ เช่น user ให้ไปเอาอันก่อนหน้าที่มันจะขึ้น error มา restore ลงเฉพาะตารางนั้นๆครับ
*****เหตุที่พบ Error นี้น่าจะพบตอนที่ระหว่าง backup ข้อมูลมาแล้วนะครับ ลองนั่งเฝ้าแล้ว backup ดู พื้นที่ด้านล่างพอถึงตารางที่มีปัญหามันก็จะขึ้น #HY000 LOCK TABLES. มาก่อนละครับ ถ้าตอน restore มี ตอน backup ต้องมีครับ...มันเป็นผลต่อเนื่องกัน