Mysql DB엔진 변경 후 문제 입니다.
본문
안녕하세요~ 초보 개발자 입니다.
현재 운영하던 mysql 엔진을 InnoDB 로 변경 하였습니다.
속도 저하가 너무 심해서 문제 입니다.
my.cnf 파일 셋팅을 했는데, 셋팅 값이 적용이 안되는 느낌입니다.
설정 파일 한번 봐주시고 도움 부탁드립니다.
[mysqld]
#datadir=/var/lib/mysql
datadir =/var/lib/mysql/idb
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
default-storage-engine=InnoDB
#default-table type
default-table-type=InnoDB
#character-set
character-set-server = utf8
default-character-set = utf8
collation-server = utf8_general_ci
init-connect = SET collation_connection = utf8_general_ci
init-connect = SET NAMES utf8
character-set-client-handshake = FALSE
skip-character-set-client-handshake
skip-name-resolve
#max_connections = 300
wait_timeout = 300
#innodb setting
innodb_data_home_dir = /var/lib/mysql/idb
innodb_data_file_path=ibdata1:1500M;ibdata2:1500M;ibdata3:1500M;ibdata4:1000M:autoextend:max:2000M
innodb_file_per_table = 0
innodb_log_group_home_dir = /var/lib/mysql/idb
innodb_log_arch_dir = /var/lib/mysql/idb
innodb_buffer_pool_size = 15G
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 256M
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DSYNC
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_thread_concurrency = 0
innodb_write_io_threads = 64
max_connections = 1000
#slow_query_log = 1
#slow_query_log_file = /var/log/mysql/mysql-slow.log
#long_query_time = 5
#log_slow_rate_limit = 1
#log_slow_verbosity = query_plan
#log_slow_admin_statements
#log_queries_not_using_indexes = on
log-slow-queries = /var/log/mysql/mysql-slow.log
long_query_time= 3
쿼리로 innodb 셋팅값 불렀을때 입니다.
mysql> SHOW VARIABLES LIKE 'innodb%';
+-----------------------------------------+------------------------+
| Variable_name | Value |
+-----------------------------------------+------------------------+
| innodb_additional_mem_pool_size | 1048576 |
| innodb_autoextend_increment | 8 |
| innodb_buffer_pool_awe_mem_mb | 0 |
| innodb_buffer_pool_size | 8388608 |
| innodb_checksums | ON |
| innodb_commit_concurrency | 0 |
| innodb_concurrency_tickets | 500 |
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir | |
| innodb_adaptive_hash_index | ON |
| innodb_doublewrite | ON |
| innodb_fast_shutdown | 1 |
| innodb_file_io_threads | 4 |
| innodb_file_per_table | OFF |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_flush_method | |
| innodb_force_recovery | 0 |
| innodb_lock_wait_timeout | 50 |
| innodb_locks_unsafe_for_binlog | OFF |
| innodb_log_arch_dir | |
| innodb_log_archive | OFF |
| innodb_log_buffer_size | 1048576 |
| innodb_log_file_size | 5242880 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_max_dirty_pages_pct | 90 |
| innodb_max_purge_lag | 0 |
| innodb_mirrored_log_groups | 1 |
| innodb_open_files | 300 |
| innodb_rollback_on_timeout | OFF |
| innodb_support_xa | ON |
| innodb_sync_spin_loops | 20 |
| innodb_table_locks | ON |
| innodb_thread_concurrency | 8 |
| innodb_thread_sleep_delay | 10000 |
| innodb_use_legacy_cardinality_algorithm | ON |
+-----------------------------------------+------------------------+
innodb_buffer_pool_size 값등이 전혀 적용이 안되는것 같습니다.
참고로 서버 메모리가 64G 이여서 15G 로 설정 하였습니다.
또 다른 특이 사항은 그전 운영일때는
datadir=/var/lib/mysql 여기 였고,
InnoDB 변경후 datadir=/var/lib/mysql/idb 로 바깠습니다.
때문에, /var/lib/mysql 디렉토리에 그전에 사용하던
ibdata1, ib_logfile0, ib_logfile1 파일과, mysql, 데이터베이스폴더 가 아직 존재 합니다.
(무서워서 삭제는 못했습니다.)
부디 초보에게 가르침을 부탁드립니다.
답변 2
서버내 폴더 복사를 하지 마시고 디비를 덤프해서 올려보세요..
파일 복사까지 하려면 ibdata1, ib_logfile0, ib_logfile1 내용까지 전부 복사되야 합니다..
폴더이름을 바꿔놓으시고
사이트 확인해서 이상없으시면 지우셔도 무관합니다..