我真的需要一些 mysql 专业知识。我是 mysql 的新手,在过去的 1 周内,我看到我的数据库发生了一些服务器崩溃。
我在 Ubuntu 上使用 mysql 5.1.36。这是一个专用的 mysql 服务器,具有双核和 4GB 内存和 40GB SSD。
日志错误是:
120413 23:57:15 [Note] Plugin 'FEDERATED' is disabled.
120413 23:57:15 [Warning] option 'innodb-autoextend-increment': unsigned value 2000 adjusted to 1000
120413 23:57:15 InnoDB: Initializing buffer pool, size = 2.9G
120413 23:57:15 InnoDB: Completed initialization of buffer pool
120413 23:57:16 InnoDB: Started; log sequence number 0 44234
120413 23:57:16 [Note] Event Scheduler: Loaded 0 events
120413 23:57:16 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.58-1ubuntu1-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
120414 0:00:25 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=e2-relay-bin' to avoid this problem.
120414 0:00:25 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='', master_port='3306', master_log_file='', master_log_pos='4'. New state master_host='', master_port='3306', master_log_file='mysql-bin.000043', master_log_pos='87039427'.
120414 0:58:37 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='', master_port='3306', master_log_file='mysql-bin.000043', master_log_pos='87039427'. New state master_host='', master_port='3306', master_log_file='mysql-bin.000043', master_log_pos='87846901'.
120414 2:20:34 InnoDB: ERROR: the age of the last checkpoint is 241588252,
InnoDB: which exceeds the log group capacity 241588224.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.
Run Code Online (Sandbox Code Playgroud)
My.cnf 如下。
default-storage-engine=innodb
default-table-type=innodb
key_buffer = 384M
max_allowed_packet = 64M
thread_stack = 256K
thread_cache_size = 16
max_heap_table_size = 64M
myisam_sort_buffer_size = 64M
join_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 3M
tmp_table_size = 64M
# Innodb changes
innodb_additional_mem_pool_size = 16M
innodb_autoextend_increment = 2000
innodb_buffer_pool_size = 3000M #As current Db is around 1.2G.
innodb_file_per_table
innodb_data_file_path = ibdata1:512M;ibdata2:512M:autoextend
innodb_flush_log_at_trx_commit = 2 #For more reliablity use 1
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 8M
innodb_log_file_size = 128M #Transaction Log up to 1/4 Buffer Pool
innodb_thread_concurrency = 16
#innodb_force_recovery = 2
#innodb_read_io_threads = 8
#innodb_write_io_threads = 8
innodb_lock_wait_timeout = 50
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
max_connections = 400
table_cache = 1024M
thread_concurrency = 16
Run Code Online (Sandbox Code Playgroud)
任何我可以改变的建议。
Rol*_*DBA 27
乍一看,我会说你的 innodb_log_file_size 太小了。做两件事应该更大:
以下是您现在应该做的事情,看看它是否有帮助:
步骤 01) 在 /etc/my.cnf 中更改以下内容
[mysqld]
innodb_log_buffer_size = 32M
innodb_buffer_pool_size = 3G
innodb_log_file_size = 768M
Run Code Online (Sandbox Code Playgroud)
步骤 02) service mysql stop
步骤 03) rm -f /var/lib/mysql/ib_logfile*
步骤 04) service mysql start
这将重建以下文件
试一试 !!!
我已经更新了我的其他帖子,但错过了这个
ButtleButkus刚刚发表评论于2013-07-03 07:18:56 EDT
在删除之前将 ib_logfile* 复制到另一个位置进行备份是否可取?
由于里面可能有未完成的交易数据,这里是应该做的
步骤 01) 在 /etc/my.cnf 中更改以下内容
[mysqld]
innodb_log_buffer_size = 32M
innodb_buffer_pool_size = 3G
innodb_log_file_size = 768M
Run Code Online (Sandbox Code Playgroud)
步骤 02) mysql -uroot -p -e"SET GLOBAL innodb_fast_shutdown = 0;"
步骤 03) service mysql stop
步骤 04) rm -f /var/lib/mysql/ib_logfile*
步骤 05) service mysql start
我补充说SET GLOBAL innodb_fast_shutdown = 0;。那有什么作用?它强制 InnoDB 从所有 InnoDB 移动部件中完全清除事务更改,包括事务日志(ib_logfile0、ib_logfile1)。因此,无需备份旧的 ib_logfile0、ib_logfile1。如果删除它们让您感到紧张,请执行步骤 04
mv /var/lib/mysql/ib_logfile* ..
Run Code Online (Sandbox Code Playgroud)
将旧日志放入/var/lib. 如果重新创建日志成功并且mysqld启动,则可以删除旧日志。
我已经使用这个功能一年了。我已经更新了我的其他帖子以反映这一点......
May 20, 2013: Innodb 每个表空间一个文件May 05, 2013:移动 ib_logfile1 和 ib_logfile0 文件后的问题Jan 10, 2013:查找并修复 InnoDB 索引损坏Dec 17, 2012: MySQL 启动/停止Feb 16, 2011:如何安全地更改 MySQL innodb 变量“innodb_log_file_size”?(最后更新)Feb 04, 2011: MySQL InnoDB - innodb_file_per_table 的缺点?(最后更新)Oct 29, 2010: Howto: 清理 mysql InnoDB 存储引擎?(作为步骤 03 添加Jun 04, 2013)如果我还有其他较旧的帖子我没有提到innodb_fast_shutdown,请告诉我,以便我可以更新它。再次感谢ButtleButkus。
| 归档时间: |
|
| 查看次数: |
46588 次 |
| 最近记录: |