我有一个名为db.sql
的文件;该文件包含一个数据库的数据.我想将此数据导入到新建立的主/副本 struct 中名为db
的数据库中.
我使用mysql -u USER -p'PASS' db < db.sql
命令将数据库导入主服务器.导入后,数据成功插入master
服务器,但没有插入replica
服务器.(尽管如此,工作中没有错误)
我判断了db.sql
文件的内容,其中包括:
SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED='server-1:1-376,
server-2:1-2086154';
#end of the file
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
我知道原因是禁用binlog
,但我有三个问题:
- 我有很多备份文件是通过这种方式导出的;如何将它们导入到我现在的
master
服务器中,然后它就会进入replica
服务器.(我认为如果我删除这些行,它会解决我的问题,但有没有办法直接用MySQL来做呢?) - 对于新导出的备份,如何以可以直接导入的方式防止此问题?下面的脚本生成
db.sql
文件.
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
mysql ${MYSQL_CONN} -ANe"STOP SLAVE" 2> /dev/null
mysqldump ${MYSQL_CONN} --single-transaction --quick ${DB_NAME} 2> /dev/null > ${OUTPUT_PATH}/db.sql
mysql ${MYSQL_CONN} -ANe"START SLAVE" 2> /dev/null
- 备份文件来自具有不同
GLOBAL.GTID_PURGED
的不同主/副本;这是否会导致任何问题?如果是,如何解决?