我目前正在尝试创建一个脚本来转储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
你知道我可以改变什么吗?
1条答案
按热度按时间kq0g1dla1#
我使用的是旧脚本,但我更改了用户importuser的所有权限,它可以正常工作
Mysqlpump可用于转储数据库,但不能在以下情况下重新导入