如何将CodeIgniter数据库迁移至Google Cloud SQL及配置疑问
刚接触Google Cloud SQL确实会有点摸不着头脑,我来一步步帮你搞定数据库迁移和CodeIgniter配置的问题:
一、导出本地数据库并导入到Google Cloud SQL
既然没有phpMyAdmin,咱们用命令行工具来操作,这是最稳定可靠的方式:
1. 导出本地数据库
打开你的终端(Windows用CMD/PowerShell,Mac/Linux用Terminal),执行mysqldump命令导出数据:
mysqldump -u 本地数据库用户名 -p 本地数据库名 > database_backup.sql
执行后输入本地数据库的密码,回车后就会生成一个名为database_backup.sql的备份文件,里面包含你所有的表和数据。
2. 导入到Cloud SQL
有两种简单的方式,选你顺手的:
方式1:通过Google Cloud Console网页操作
- 登录Google Cloud控制台,找到你的Cloud SQL实例,进入导入页面
- 先把刚才的
database_backup.sql上传到Google Cloud Storage(如果文件很小,也可以直接选择本地文件上传;大文件建议先存到GCS) - 如果还没在Cloud SQL里创建目标数据库,先去数据库页面新建一个(名字可以和本地数据库一致,方便后续配置)
- 选择上传好的备份文件,指定目标数据库,点击导入等待完成即可
方式2:用gcloud命令行工具
如果已经安装了Google Cloud SDK,直接执行以下命令(记得先把备份文件上传到GCS存储桶):
gcloud sql import sql 你的Cloud SQL实例名 gs://你的GCS存储桶名/database_backup.sql --database=目标数据库名
二、获取Cloud SQL的连接信息(对应CodeIgniter的配置项)
这些信息都能在Cloud SQL控制台找到,别着急:
- 主机(hostname):
- 用公网连接:在实例的连接页面,找到公网IP,直接填这个IP地址
- 用更安全的Cloud SQL Proxy:填
127.0.0.1(Proxy会把本地端口转发到Cloud SQL实例)
- 用户名(username):默认是
root,如果你创建了自定义用户,就用对应的用户名 - 密码(password):是你创建Cloud SQL实例时设置的root密码;如果忘了,去控制台的用户页面重置即可
- 数据库名(database):就是你刚才导入数据时指定的数据库名称,或者你新建的那个数据库名
三、修改CodeIgniter的数据库配置文件
把你的database.php里的配置替换成Cloud SQL的信息就行,示例如下:
$active_group = 'default'; $query_builder = TRUE; $db['default'] = array( 'dsn' => '', 'hostname' => '你的Cloud SQL公网IP或者127.0.0.1(用Proxy时)', 'username' => 'root', // 替换成你的实际用户名 'password' => '你的Cloud SQL密码', // 替换成你的实际密码 'database' => '你的数据库名', // 替换成你的实际数据库名 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );
小提示:如果用Cloud SQL Proxy,需要先启动它,命令大概是这样的(根据你的系统下载对应版本的Proxy工具):
./cloud_sql_proxy -instances=你的Google Cloud项目ID:实例区域:实例名=tcp:3306
启动后本地的3306端口就会和Cloud SQL实例连通,此时hostname填127.0.0.1即可。
内容的提问来源于stack exchange,提问作者Emmanuel agahiu
相关产品推荐
相关产品推荐

