云 Sql 从外部数据源迁移失败

Cloud Sql Migration Failure from External Datasource

我正在尝试在现有数据库上创建只读从属数据库。我设法导出了我的数据,将其放入存储桶中,删除了所有带有 DEFINER 子句的行并成功创建了一个副本数据库。

这是我的转储命令-

mysqldump --databases alphadb -h localhost -u root -p \
--hex-blob --skip-triggers --set-gtid-purged=OFF  \
--default-character-set=utf8mb4 > dump.sql

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

cat dump.sql | sed '/DEFINER=`root`@`localhost`/d'

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

我找到的所有解决此 1062 重复键错误的答案都建议如下:

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
SELECT SLEEP(5);
SHOW SLAVE STATUS\G

解决方案示例:

问题是我得到:

MySQL [alphadb]> stop slave;
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

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

我的问题是我接下来应该做什么? Google 的 Cloud Sql 不支持 SUPER 权限,但 STOP SLAVESTART SLAVE 需要 SUPER 权限。

编辑: 从 kurtisvg 的回复中的第二个 link 开始,我能够确定我缺少一些推荐的标志。解决方案是使用这些标志,格式如下

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 最后,如果 Google 的任何人看到这个,您的错误日志(除了提供不可能的建议之外)也会提供错误的命令。在上面的屏幕截图中,日志建议 SLAVE START 但正确的命令是 START SLAVE

我真的很期待将我的公司从现有的基础架构迁移到 GCP,但不幸的是没有实现这一目标的途径。

Cloud SQL 提供了有关如何执行此操作的分步说明。检查文档中的以下页面:

我在尝试相同的场景时遇到了相同的问题。 我从一开始就使用了第二个 link 的指南,但仍然一直出现重复输入错误。

唯一最终对我有用的是从导出过程中删​​除“--single-transaction”参数。这就是我的导出脚本的结束方式:

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