我在 mysql 中收到此警告,
[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets)
我在谷歌浏览过几个主题,根据一些建议,我max_allowed_packet从128 to 512 to 1024仍然相同的行为中增加了。
max_allowed_packet
128 to 512 to 1024
我正在使用 Drupal 7,是的,有很多 blob 数据类型,但1024 Mb在max_allowed_packet我看来应该足够了。
1024 Mb
任何其他解决方法如何克服此警告?
编辑:
添加了一些设置作为@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
我的应用程序只使用 InnoDB,但很少有像 mysql 这样的数据库,标准 mysql 安装附带的只有使用 MyISAM 引擎类型的数据库,但我想这不应该是我关心的问题。
如您所见,我也有复制,复制服务器中的警告也相同,其配置与此相同。
我很高兴你说你所有的数据都是 InnoDB,所以我可以回答如下:如果max_allowed_pa cket 在 1G 时达到最大值并且你仍然遇到问题,那么实际上只有两个地方可以查看:
您需要增加 InnoDB 事务日志。以下是安全增加innodb_log_buffer_size和innodb_log_file_size的步骤:
步骤 01:将这些添加到/etc/my.cnf
/etc/my.cnf
[mysqld] innodb_log_buffer_size = 32M innodb_log_file_size = 2047M
步骤02:在mysql中运行
mysql> SET GLOBAL innodb_fast_shutdown = 0;
步骤 03:关闭 mysql
service mysql stop
Step 04 : 把旧的原木移到一边
mv ib_logfile0 ib_logfile0.bak mv ib_logfile1 ib_logfile1.bak
步骤05:启动mysql
service mysql start
而已。
InnoDB 基础设施现在应该有足够的日志空间来存储不同大小的 BLOB。
试试看 !!!