mysql数据库插表报错
图片.png在mysql导入数据时,报错信息如下:
error 1534 (HY000): writing one row to the row-based binary log failed
这是因为内存不足导致的binlog cache size不够不能写入binlog,导致语句无法执行
在配置文件中调整binlog_cache_size和max_binlog_cache_size参数的值,改大一点
binlog_cache_size = 128M(根据实际情况调大)
max_binlog_cache_size = 512M (根据实际情况调大)
binlog_cache_size参数:
binlog_cache_size
0.前提:
服务器配置了 log-bin
1.含义:
为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存。
2.作用:
提高记录bin-log的效率
3.属性:
参数:global
默认值:32768 -- 即 32K
范围:4096 .. 4294967295
4.大小选择:
a.根据业务:
没有什么大事务,dml也不是很频繁的情况下可以设置小一点,如果事务大而且多,dml操作也频繁,则可以适当的调大一点。
前者建议是1048576 --1M
后者建议是: 2097152 -- 4194304 即 2--4M
b.根据参数:
show global status like 'bin%';
上述语句我们可以得到当前 数据库binlog_cache_size的使用情况
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Binlog_cache_disk_use | ???
| Binlog_cache_use | ?????
Binlog_cache_disk_use表示因为我们binlog_cache_size设计的内存不足导致缓存二进制日志用到了临时文件的次数
Binlog_cache_use 表示 用binlog_cache_size缓存的次数
当对应的Binlog_cache_disk_use 值比较大的时候 我们可以考虑适当的调高 binlog_cache_size 对应的值
4.注意点:
a.max_binlog_cache_size 表示的是binlog 能够使用的最大cache 内存大小
当我们执行多语句事务的时候 所有session的使用的内存超过max_binlog_cache_size的值时
就会报错:“Multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage”
b.设置太大的话,会比较消耗内存资源;设置太小又会使用到临时文件即disk
5.配置
a.配置文件设置my.cnf
binlog_cache_size = 1M
b. set global binlog_cache_size = 1048576;
————————————————
版权声明:本文为CSDN博主「oO寒枫Oo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lxpbs8851/article/details/38455223
关于log-bin日志
基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;
作用:可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、MySQL的复制(主主数据库的复制、主从数据库的复制)
文件位置:默认存放位置为数据库文件所在目录下
文件的命名方式: 名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog)
状态的查看:mysql> show variables like '%log_bin%';
参考/转载:https://www.cnblogs.com/Christine-ting/p/10528613.html
参考/转载:https://blog.csdn.net/lxpbs8851/article/details/38455223
参考/转载:https://blog.csdn.net/cuichunchi/article/details/78857897
网友评论