从第一代谷歌云sql迁移到第二代

时间:2016-09-03 16:43:22

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

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

当我尝试导入.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)

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

1 个答案:

答案 0 :(得分:0)

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

mysql -u tisadmin -p -h IP_ADDRESS_2nd_Gen_CloudSQL_DB -e" show databases" | grep -v数据库| grep -v mysql | grep -v information_schema | grep -v performance_schema | gawk' {print" drop database" $ 1&#34 ;;选择睡眠(0.1);"}' > dbsToBeDropped.sql

mysql -u tisadmin -p -h IP_ADDRESS_2nd_Gen_CloudSQL_DB< dbsToBeDropped.sql

(2)更新CloudSQL第二代引擎以获得第一代的特权

gcloud auth登录 gcloud config set project [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" "序列" " dmm_old" " BusinessDataStandards" > DEV-备份20170307a.sql

(4)导入第二代CloudSQL

mysql -u tisadmin -p -h IP_ADDRESS_2nd_Gen_CloudSQL_DB< DEV-备份20170307a.sql

参考文献: 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