我无法通过导出/导入的方式将第一代移植到第二代。
当我尝试导入.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)
值得注意的是,我的数据库确实具有触发器。这是第二代Google云存储上不允许的吗?如何将数据还原到该新实例?
最佳答案
(1)如果目标第二代CloudSQL数据库已经有数据库,则要在导入或重新导入第一代CloudSQL数据库之前将其删除(如果您反复进行测试,则很有用)。接下来的2条语句创建一个文件,其中要删除所有DB,然后删除它们。
mysql -u tisadmin -p -h IP_ADDRESS_2nd_Gen_CloudSQL_DB -e“显示数据库” | grep -v数据库| grep -v mysql | grep -v information_schema | grep -v performance_schema | gawk'{print“ drop database” $ 1“;选择sleep(0.1);”}'> dbsToBeDropped.sql
mysql -u tisadmin -p -h IP_ADDRESS_2nd_Gen_CloudSQL_DB
(2)更新CloudSQL第二代引擎,使其具有您在第一代中拥有的特权
gcloud身份验证登录
gcloud config设置项目[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
关于mysql - 从第一代Google Cloud SQL迁移到第二代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39309186/