VMCD.ORG

Focus on database architecture

优化mysql ibdata*

Posted by admin on January 18th, 2012

由于此前的mysql salve服务器没有进行规划,一些参数都是使用的默认参数,导致innodb datafile 无限制增长,所以需要重新规划一下datafile空间的分配,以及其他参数的优化

version:

mysql>
mysql>
mysql> select version()
-> ;
+————+
| version() |
+————+
| 5.5.14-log |
+————+
1 row in set (0.02 sec)

mysql>

配置sysctl limit
[root@db-72 mysql]# cat /etc/security/limits.conf

# End of file

* soft nofile 131072
* hard nofile 131072

sysctl.conf 增加如下参数
[root@db-72 mysql]# cat /etc/sysctl.conf

skip-external-locking
key_buffer_size = 2G
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M

server-id= 2
read-only=1# 0 read/write 1 read only.
open_files_limit = 30000
max_connections=800
myisam_sort_buffer_size = 64M
bulk_insert_buffer_size = 32M
innodb_buffer_pool_size = 3G
innodb_additional_mem_pool_size = 120M
innodb_flush_log_at_trx_commit = 2
innodb_max_dirty_pages_pct = 80
innodb_lock_wait_timeout = 50
innodb_thread_concurrency = 0
innodb_data_file_path = ibdata1:19618M;ibdata2:8192M;ibdata3:10M:autoextend
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_log_buffer_size = 16M
innodb_open_files=1600

原来没有设置innodb_data_file_path 导致ibdata1膨胀到19G左右 需要对此进行限制:

[root@db-72 mysql]# ls -l |grep ib
-rwxrwxr– 1 mysql mysql 20612907008 Jan 18 12:54 ibdata1
-rwxrwxr– 1 mysql mysql 5242880 Jan 18 12:54 ib_logfile0
-rwxrwxr– 1 mysql mysql 5242880 Jan 18 12:46 ib_logfile1

首先move掉ib_logfile 对ibdata1 文件大小进行匹配 20612907008/1024/1024=19618M

innodb_data_file_path = ibdata1:19618M;ibdata2:8192M;ibdata3:10M:autoextend
innodb_log_file_size = 256M
innodb_log_files_in_group = 3

分配3个日志组,每个日志组大小256M

重启mysql 数据库

[root@db-72 mysql]# ls -l |grep ib
-rwxr-xr– 1 mysql mysql 20570963968 Jan 18 12:55 ibdata1
-rw-rw—- 1 mysql mysql 8589934592 Jan 18 11:38 ibdata2
-rw-rw—- 1 mysql mysql 10485760 Jan 18 11:38 ibdata3
-rw-rw—- 1 mysql mysql 268435456 Jan 18 12:55 ib_logfile0
-rwxr-xr– 1 mysql mysql 5242880 Jan 18 11:09 ib_logfile0.bak
-rw-rw—- 1 mysql mysql 268435456 Jan 18 11:12 ib_logfile1
-rwxr-xr– 1 mysql mysql 5242880 Jan 18 11:09 ib_logfile1.bak
-rw-rw—- 1 mysql mysql 268435456 Jan 18 11:12 ib_logfile2
[root@db-72 mysql]#

mysql> show slave status \g
+———————————-+————-+————-+————-+—————+——————+———————+————————+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+
| Slave_IO_State | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id |
+———————————-+————-+————-+————-+—————+——————+———————+————————+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+
| Waiting for master to send event | 10.0.0.71 | rep | 3306 | 60 | db-71-bin.001190 | 313977587 | db-72-relay-bin.003550 | 113788261 | db-71-bin.001190 | Yes | Yes | | | | | | | 0 | | 0 | 313977587 | 113788417 | None | | 0 | No | | | | | | 0 | No | 0 | | 0 | | | 1 |
+———————————-+————-+————-+————-+—————+——————+———————+————————+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+

重新start mysql 后 slave 迅速追上了 master

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>