我有一个mysqldump从一个服务器运行mysql Ver 14.14 Distrib 5.6.35, for Linux (x86_64) using EditLine wrapper
centos 6我试图将其导入到一个服务器运行mariadb mysql Ver 15.1 Distrib 10.1.22-MariaDB, for Linux (x86_64) using readline 5.1
这是运行Centos7
我经常得到这样的语法错误ERROR 1064 (42000) at line 4908: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '),('5051888098585',2512,131872,359,'Pending','completed','0','1','2016-03-15 17' at line 1
行号是随机出现的,如果我删除表并再次开始恢复,它可能会在该行之前或之后的某个点再次失败。有时它几乎会到达末尾。一个认为这是恒定的是该行总是一个大的插入查询。
这里类似的问题并不能解决我的问题,我已经完全重建了服务器,改变了多个mysqldump设置和我的.cnf设置,什么都没有改变。
当前my.cnf
[mysqld]
bind-address = ::
skip_name_resolve
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
max_allowed_packet = 1G
max_connections = 600
thread_cache_size = 16
query_cache_size = 64M
tmp_table_size= 512M
max_heap_table_size= 512M
wait_timeout=60
#Innodb Settings
innodb_file_per_table=1
innodb_buffer_pool_size = 25G
innodb_log_file_size = 2048M
innodb_flush_log_at_trx_commit = 0
innodb_file_format = Barracuda
innodb_flush_neighbors = 0
#Log
log-error =/var/log/error.log
tmpdir = /dev/shm
我已经尝试了几十种不同的导入和转储设置,但都不起作用。以下是最新的设置:为了垃圾场
mysqldump -u admin -p`cat /etc/psa/.psa.shadow` --master-data=2 db_name --default-character-set=utf8 -c -Q --result-file=dump.sql
对于进口
mysql -uadmin -p`cat /etc/psa/.psa.shadow` db_name < dump.sql
1条答案
按热度按时间soat7uwm1#
如果不覆盖它,
mysqldump
会生成大量的INSERT
语句,一次处理大量的行。在创建转储文件时,尝试在
mysqldump
上使用--net_buffer_length=8192
选项。它将生成较短的INSERT
语句。转储文件将较长,并且需要较长的恢复时间,但它实际上可能会运行到完成。如果这不起作用,并且您有时间,请尝试
--skip-opt
选项以跳过所有优化。标签:How to deal with enormous line lengths created by mysqldump