无法将max_allowed_pa​​cket大小设置为2G

时间:2020-02-27 19:49:05

标签: linux mariadb

我的mariadb10.2数据库不允许我将max_allowed_pa​​cket大小设置为2G。它在my.cnf文件中设置,但在我怀疑时仍保留在1G。我需要2G的mysqldump才能工作。它可以正常工作,直到发生意外的重启。

my.cnf file[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
ssl = true
ssl-cert = /opt/certs/mysql/client-cert.pem
ssl-key = /opt/certs/mysql/client-key.pem

[isamchk]
key_buffer_size = 16M

[mysqld]
basedir = /usr
bind-address = *
datadir = /mnt/mariadb/data/db
expire_logs_days = 10
innodb_buffer_pool_size = 4G
innodb_file_per_table = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 2G
innodb_stats_on_metadata = 0
key_buffer_size = 16M
log-error = /var/log/mariadb/mariadb.log
log_warnings = 4
max_allowed_packet = 2G
max_binlog_size = 100M
max_connections = 151
myisam_recover = BACKUP
pid-file = /var/run/mariadb/mariadb.pid
plugin-load = auth_pam.so;auth_socket.so
port = 3306
query_cache_limit = 1M
query_cache_size = 16M
skip-external-locking
socket = /var/lib/mysql/mysql.sock
sql-mode = STRICT_ALL_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
ssl = true
ssl-ca = /opt/certs/mysql/ca.pem
ssl-cert = /opt/certs/mysql/server-cert.pem
ssl-key = /opt/certs/mysql/server-key.pem
thread_cache_size = 8
thread_stack = 256K
tmpdir = /tmp
user = mysql

[mysqld_safe]
log-error = /var/log/mariadb/mariadb.log
nice = 0
socket = /var/lib/mysql/mysql.sock

[mysqldump]
max_allowed_packet = 2G
quick
quote-names

尝试临时设置时输出

MariaDB [(无)]>设置全局max_allowed_pa​​cket = 2147483684; 错误1231(42000):变量'max_allowed_pa​​cket'不能设置为'2147483684'的值

我的备份已使用下载的automysqlbackup脚本用完了cron。所有的var都由人偶管理,我已暂时禁用它们以尝试再次进行此工作。

2 个答案:

答案 0 :(得分:1)

您必须找到另一种备份方法,因为无法将max_allowed_pa​​cket设置为该值。

The doc指出最大为1GB。

您确定需要那么大的价值吗?该值应与最大的Blob一样大,而不是数据库的大小。 斑点太大可能很难处理。

答案 1 :(得分:0)

(我将从多个角度解决您的问题。您可能没有意识到实际上有多少个问题。)

说明。因此,您的行比max_allowed_packet(因此mysqldump)允许的最大值大吗?

选择。您甚至可以SELECT行吗?如果没有,那么您的泡菜更大。

备份。有关其他备份方法,请参考https://dba.stackexchange.com/questions/20/how-can-i-optimize-a-mysqldump-of-a-large-database/2853#2853。或https://dba.stackexchange.com/questions/161708/mysql-database-backup/161886#161886

OOM 。你有多少RAM?我希望它至少为8GB。否则,您将威胁要耗尽RAM。

其他设置。如果可以使数据包限制起作用,请记住innodb_log_file_size必须至少是该大小的10倍。 (目前只有2G。)

回退。这是给开发人员的一个论据...如果将通过网络服务器向最终用户提供“ vid”(“视频”?),那么通过存储将更加简单(并解决了1GB的限制) 链接到视频文件的链接。然后使用将直接到达文件的<img ...>(或其他任何值)。这将绕过数据库,使事情变得更快,更简单。

分组。我曾经被迫存储巨大的东西-甚至超过4GB。我的解决方案是将大数据(任意)分成50KB的块,并具有2个表-其中一个包含元信息,一个具有根据需要存储所有块的行数。凌乱的代码,凌乱的数据库,愚蠢的设计。哦,我遇到了其他一些限制。 Apache的文件大小最大。