首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自外部数据源的云Sql迁移失败

问来自外部数据源的云Sql迁移失败
EN

Stack Overflow用户
提问于 2019-09-13 13:16:14
回答 2查看 473关注 0票数 1

我正试图在现有数据库上创建一个只读从属程序。我成功地导出了我的数据,把它放入了一个桶中,删除了所有带有lines子句的行,并成功地创建了一个副本数据库。

这是我的弃尸命令-

代码语言:javascript
复制
mysqldump --databases alphadb -h localhost -u root -p \
--hex-blob --skip-triggers --set-gtid-purged=OFF  \
--default-character-set=utf8mb4 > dump.sql

这是我用来删除定义子句的命令-

代码语言:javascript
复制
cat dump.sql | sed '/DEFINER=`root`@`localhost`/d'

问题是,此后不久,我的日志中出现了错误:

​

​

我发现的处理这个1062重复键错误的所有答案都提示如下:

代码语言:javascript
复制
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
SELECT SLEEP(5);
SHOW SLAVE STATUS\G

解决办法实例:

问题是我得到了:

代码语言:javascript
复制
MySQL [alphadb]> stop slave;
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

我已经是根用户了,所以我不知道下一步应该做什么来解决错误,这样复制就可以继续了。从技术上讲,我甚至很乐意截断ci_sessions表,因为它对我来说并不重要,并且重置主键。但这是不可能的,因为数据库处于read-only模式(这也不是一个很好的解决方案,因为目标是使复制正常工作)

我的问题是我下一步该怎么做?谷歌的Cloud不支持SUPER特权,但是STOP SLAVE和START SLAVE需要超级特权。

编辑:来自kurtisvg的回复中的第二个链接,我能够确定我丢失了一些推荐的标志。解决方案是使用这些标志,格式如下

代码语言:javascript
复制
mysqldump \
    -h [MASTER_IP] -P [MASTER_PORT] -u [USERNAME] -p \
    --databases [DBS]  \
    --hex-blob  --skip-triggers  --master-data=1  \
    --order-by-primary --no-autocommit \
    --default-character-set=utf8mb4 --ignore-table [VIEW] \
    --single-transaction --set-gtid-purged=on

https://cloud.google.com/sql/docs/mysql/replication/replication-from-external最后,如果任何人从谷歌看到这一点,您的错误日志(除了提供不可能的建议)也提供错误的命令。在上面的屏幕截图中,日志显示为SLAVE START,但正确的命令是START SLAVE

我真的很期待将我的公司从其现有的基础设施上迁移到GCP上,但不幸的是,没有办法做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-13 20:13:52

Cloud有一步一步的指令来说明如何做到这一点。检查文档中的以下页面:

票数 2
EN

Stack Overflow用户

发布于 2020-07-06 08:59:24

在尝试相同的场景时,我处理的是同一个问题。我从一开始就使用了第二个链接中的指南,但始终存在重复的输入错误。

我最终想出的唯一办法就是从导出过程中删除“--单事务”参数。我的导出脚本是这样结束的:

代码语言:javascript
复制
mysqldump \
    -h 192.168.1.8 -P 3306 -u root -p \
    --databases db1 db2 db3 db4 \
    --hex-blob  --skip-triggers  --master-data=1  \
    --order-by-primary --no-autocommit \
    --default-character-set=utf8mb4 \
    --set-gtid-purged=on >mysqldump.sql
sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i mysqldump.sql
grep DEFINER mysqldump.sql
gzip mysqldump.sql
gsutil cp mysqldump.sql.gz gs://my-gs-storage/mysqldump-new.sql.gz
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57924357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档