mysqldump 使用 问题记录
报错一
语句如下:
mysqldump -h'192.168.11.31' -P3306 -uroot -proot --no-create-info --no-create-db --complete-insert --replace --skip-add-locks --skip-comments --skip-triggers --databases testdb > 2020-06-03 22:54:20_自动备份.sql
报错如下:
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'testdb' AND TABLE_NAME = '111';': Unknown table 'column_statistics' in information_schema (1109)
问题出现原因:
高版本的mysqldump(比如8.0版本)备份低版本mysqlserver(比如5.7版本),会报上述错误。这是由于高版本的mysqldump加入了“–column-statistics”并且默认状态为on.官方描述入下图:
所以正确的语句应该是:
mysqldump -h'192.168.11.31' -P3306 -uroot -proot --no-create-info --no-create-db --complete-insert --replace --skip-add-locks --skip-comments --skip-triggers --skip-column-statistics --databases testdb > 2020-06-03 22:54:20_自动备份.sql
或者是下面这段也可以:
mysqldump -h'192.168.11.31' -P3306 -uroot -proot --no-create-info --no-create-db --complete-insert --replace --skip-add-locks --skip-comments --skip-triggers --column-statistics=0 --databases testdb > 2020-06-03 22:54:20_自动备份.sql
报错 二
语句与上一致:
mysqldump -h'192.168.11.31' -P3306 -uroot -proot --no-create-info --no-create-db --complete-insert --replace --skip-add-locks --skip-comments --skip-triggers --databases testdb > 2020-06-03 22:54:20_自动备份2.sql
报错如下:
mysqldump: Got error: 1049: "Unknown database '22:54:20_自动备份2.sql'" when selecting the database
一开始看到这个错误,一头雾水。什么鬼?明明写的文件名称,怎么识别成database了?后来,仔细一想,是不是时间格式中间导致了sh解析错了?然后把文件名称用单引号包括进去,再次测试。好了,成功备份了数据库
完整语句如下:
mysqldump -h'192.168.11.31' -P3306 -uroot -proot --no-create-info --no-create-db --complete-insert --replace --skip-add-locks --skip-comments --skip-triggers --databases testdb > '2020-06-03 22:54:20_自动备份2.sql'
恢复数据库语句如下:
mysql -h192.168.11.31 -P3306 -uroot -proot -f < '2020-06-03 22:54:20_自动备份2.sql'
遇到问题记录一下,能帮助到遇到同样问题的朋友,就更好了。