Myqldump/Myqlpump-添加数据库异常- MYSQL 8.0 PHPMYADMIN

uqdfh47h  于 2023-01-05  发布在  PHP
关注(0)|答案(1)|浏览(232)

我目前正在尝试创建一个脚本来转储MYSQL数据库,以添加D-7或D-1服务器(备份服务器)
我使用MYSQL 8.0-mysqlPUMP(而不是dump),因为它有一个--exclude-databases变量。但是,当我尝试重新导入转储时,会出现一个小问题,因为所有请求(Create,Atler,Add column,drop ...)都是随机递增的,我经常收到错误,原因如下:
第1140行出现错误1075(42000):表定义不正确;只能有一个自动列,并且必须将其定义为键
我签入转储文件,列AUTO-INCREMENT已经在PRIMARY KEY上。
在8.0之前,我使用mysqldump,但是排除数据库的方法真的很难。
下面是将数据库从"A"(生产服务器)导出/导入到"B"(备份D-1服务器)的脚本:

REM Today date in variables
For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%a-%%b-%%c)

REM Export rights and users from Server A
mysqldump -h ServerA_IP  --port=3306 --user=importuser --password=xxxxxxxxx --opt mysql user --result-file "D:\DumpsToImport\dump mysql users.sql" 
mysqldump -h ServerA_IP  --port=3306 --user=importuser --password=xxxxxxxxx --opt mysql db --result-file "D:\DumpsToImport\dump mysql db.sql" 

REM Export Database except 5 from Server A
mysqlpump -h ServerA_IP  --port=3306 --exclude-databases=mysql,performance_schema,information_schema,sys,phpmyadmin --add-drop-table --user=importuser --password=XitbLxxxxxxxxx L5r8 > D:\DumpsToImport\dump-MySQL03-%mydate%.sql

REM Import rights and users to Server B
mysql -h ServerB_IP  --port=3306 --user=importuser --password=xxxxxxxxx mysql < "D:\DumpsToImport\dump mysql users.sql"
mysql -h ServerB_IP --port=3306 --user=importuser --password=xxxxxxxxx mysql < "D:\DumpsToImport\dump mysql db.sql" 

REM Reset rights
mysql -h ServerB_IP --port=3306 --user=importuser --password=xxxxxxxxx -e "FLUSH PRIVILEGES" 

REM Import DUMP .sql to Server B
mysql -h ServerB_IP --port=3306 --user=importuser --password=xxxxxxxxx < "D:\DumpsToImport\dump-MySQL03-%mydate%.sql"

此脚本可以完美地创建DUMP.sql。
下面是我以前使用的脚本,但不再工作在MYSQL 8.0 REM导出数据库除了5从服务器A是我想使用的部分:

REM Export Database except 5 from Server A

for /f "delims=" %%A in ('mysql -h mysql02.francelink.net -u dumpuser -pxxxxxxxxx -e "SELECT GROUP_CONCAT(schema_name SEPARATOR '\" \"') FROM information_schema.schemata WHERE schema_name NOT IN ('mysql','performance_schema','information_schema')"') do @set tablestodump=%%A

mysqldump -h ServerA_IP -udumpuser -pxxxxxxxxxxx --opt --databases "%tablestodump%" --result-file "D:\DumpsToImport\dump-MySQL02-%mydate%.sql"

这部分没有正确工作,也许是因为我在Mysql Server 8.0
你知道我可以改变什么吗?

kq0g1dla

kq0g1dla1#

我使用的是旧脚本,但我更改了用户importuser的所有权限,它可以正常工作
Mysqlpump可用于转储数据库,但不能在以下情况下重新导入

相关问题