【问题标题】:Migrating from 1st gen google cloud sql to second generation从第一代谷歌云 sql 迁移到第二代
【发布时间】:2017-03-08 03:44:57
【问题描述】:

我无法通过导出/导入将我的第一代迁移到第二代。

当我尝试导入 .sql 文件备份时,我收到此错误:

ERROR 1227 (42000) at line 28: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

我了解到我需要排除 mysql 数据库。这样做后,我会遇到此错误:

ERROR 1419 (HY000) at line 148: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

值得注意的是,我的数据库确实有触发器。这在第二代谷歌云存储上是不允许的吗?如何将我的数据恢复到这个新实例?

【问题讨论】:

  • 如果我从 .sql 文件中删除触发器,我可以导入数据。

标签: mysql google-cloud-platform google-cloud-sql


【解决方案1】:

(1) 如果目标第 2 代 CloudSQL 数据库已经有数据库,您希望在导入或重新导入第 1 代 CloudSQL 数据库之前删除它们(如果您重复测试此数据库很有用)。接下来的 2 个语句创建一个包含所有要删除的 DB 的文件,然后删除它们。

mysql -u tisadmin -p -h IP_ADDRESS_2nd_Gen_CloudSQL_DB -e "显示数据库" | grep -v 数据库 | grep -v mysql| grep -v 信息模式| grep -v performance_schema |gawk '{print "drop database " $1 "; select sleep(0.1);"}' > dbsToBeDropped.sql

mysql -u tisadmin -p -h IP_ADDRESS_2nd_Gen_CloudSQL_DB

(2) 更新 CloudSQL 第 2 代引擎以获得您在第 1 代中拥有的权限

gcloud 身份验证登录 gcloud 配置设置项目 [project-id] gcloud sql 实例补丁 [2ndGenCloudSQLInstance] --database-flags log_bin_trust_function_creators=ON

(3) 从带有标志的第一代 CloudSQL 实例导出

mysqldump -u tisadmin -p -h IP_ADDRESS_1st_Gen_CloudSQL_DB --hex-blob --skip-triggers --default-character-set=utf8 --databases "Channel_MASTER" "sequence" "dmm_old" "BusinessDataStandards" > dev-backup -20170307a.sql

(4) 导入第二代 CloudSQL

mysql -u tisadmin -p -h IP_ADDRESS_2nd_Gen_CloudSQL_DB

参考资料: https://cloud.google.com/sql/docs/mysql/import-export/creating-mysqldump-csv#mysqldump

DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 2023-03-09
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多