我们有一个包含大约4亿条记录的大型MySql表,它运行在google cloud sql版本1(MySql版本5.5)上。
现在google已经推出了新版本的cloud sql(MySql 5.6版),因此我们希望将数据库迁移到这个新的sql版本中。这个新版本仅适用于新实例。这意味着版本1在机器1上,版本2在机器2上。
在此过程中,我们也进行了少量架构更改,请检查以下内容。
旧架构
CREATE TABLE page_views_old (
domain varchar(50) DEFAULT NULL,
guid varchar(100) DEFAULT NULL,
sid varchar(100) DEFAULT NULL,
url varchar(2500) DEFAULT NULL,
ip varchar(20) DEFAULT NULL,
is_new varchar(20) DEFAULT NULL,
ref varchar(2500) DEFAULT NULL,
user_agent varchar(255) DEFAULT NULL,
stats_time datetime DEFAULT NULL,
country varchar(50) DEFAULT NULL,
region varchar(50) DEFAULT NULL,
city varchar(50) DEFAULT NULL,
city_lat_long varchar(50) DEFAULT NULL,
email varchar(100) DEFAULT NULL
)
新架构
CREATE TABLE page_views_new (
domain varchar(50) DEFAULT NULL,
guid binary(16) NOT NULL,
sid binary(16) NOT NULL,
url varchar(2500) DEFAULT NULL,
ip varbinary(16) NOT NULL,
is_new tinyint(4) NOT NULL,
ref varchar(2500) DEFAULT NULL,
user_agent varchar(255) DEFAULT NULL,
stats_time datetime DEFAULT NULL,
country char(2) NOT NULL,
region varchar(6) NOT NULL,
city varchar(50) DEFAULT NULL,
city_lat_long varchar(50) DEFAULT NULL,
email varchar(100) DEFAULT NULL,
id int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)
如上所述,我们将数据类型varchar更改为二进制,将varchar更改为varbinary,将varchar更改为tinyint,将ip更改为二进制等。所以我的问题是将这个数据库加载到新实例的最佳方法是什么。我在这里没有提到我们也需要添加一些索引。
我解决这个问题的方法
1.获取完整数据库的转储。
2.进入新实例。
3.使用alter table语句逐个修改列。
4.让它活着。
请问您能说明这种方法是否存在任何问题,并建议我采用最佳方法。请提及架构是否存在任何问题。
由于