我无法通过导出/导入将我的第一代迁移到第二代。
当我尝试导入.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)
值得注意的是我的数据库有触发器。这是第二代谷歌云存储不允许的吗?如何将数据恢复到这个新实例?
答案 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