我在 mysql 中收到此警告,
[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets)
Run Code Online (Sandbox Code Playgroud)
我经历过谷歌几个主题,并根据一些建议,我增加了max_allowed_packet
从128 to 512 to 1024
仍然相同的行为。
我使用的Drupal 7,和是有很多BLOB数据类型的,但1024 Mb
的max_allowed_packet
应该是足够的在我看来。
任何其他解决方法如何克服此警告?
编辑:
添加了一些设置作为@Rolando 的建议/答案,我仍然收到相同的警告。
我的 mysql 配置如下所示:
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1024M
table_open_cache = 128
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 192K
# Query cache disabled
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 100
thread_concurrency = 10
tmp_table_size = 128M
max_heap_table_size = 128M
log_error = /var/log/mysql/mysql-error.log
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log_warnings = 2
server-id = 1
binlog-format = row
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
log_bin = mysql-bin
log-slave-updates
relay-log=mysqld-relay-bin
expire_logs_days = 10
max_binlog_size = 100M
innodb_data_home_dir = /var/db/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/db/mysql
innodb_buffer_pool_size = 8G
character-set-server = utf8
#innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 2047M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 8
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DIRECT
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
default-character-set = utf8
[mysql]
default-character-set = utf8
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 32M
[mysqlhotcopy]
interactive-timeout
[mysqld_save]
syslog
Run Code Online (Sandbox Code Playgroud)
我的应用程序只使用 InnoDB,但很少有像 mysql 这样的数据库,标准 mysql 安装附带的只有使用 MyISAM 引擎类型的数据库,我想这应该不是我的问题。
如您所见,我也有复制,复制服务器中的警告也是相同的,其配置与此相同。
Rol*_*DBA 14
我很高兴你说你的所有数据都是 InnoDB,所以我可以回答如下:如果max_allowed_packet 最大为 1G 并且你仍然有问题,那么实际上只有两个地方可以查看:
我在大约 2 年前提出过类似的问题
Aug 01, 2011
: max_allowed_packet 对数据库的备份和恢复有什么影响?Apr 20, 2011
: MySQL 在插入大文件时出现“内存不足”错误。这个文件大小限制是从哪里产生的?您需要增加 InnoDB 事务日志。以下是安全增加innodb_log_buffer_size和innodb_log_file_size的步骤:
步骤 01:将这些添加到 /etc/my.cnf
[mysqld]
innodb_log_buffer_size = 32M
innodb_log_file_size = 2047M
Run Code Online (Sandbox Code Playgroud)
步骤 02:在 mysql 中运行它
mysql> SET GLOBAL innodb_fast_shutdown = 0;
Run Code Online (Sandbox Code Playgroud)
步骤 03:关闭 mysql
service mysql stop
Run Code Online (Sandbox Code Playgroud)
步骤 04:将旧原木移到一边
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
Run Code Online (Sandbox Code Playgroud)
步骤 05:启动 mysql
service mysql start
Run Code Online (Sandbox Code Playgroud)
就是这样。
InnoDB 基础设施现在应该有足够的日志空间用于不同大小的 BLOB。
试一试 !!!
归档时间: |
|
查看次数: |
95486 次 |
最近记录: |