当前位置: 首页 > news >正文

seo推广网站番禺人才网官方网站信息公布

seo推广网站,番禺人才网官方网站信息公布,备案个人可以做视频网站,重庆住房和城乡建设厅网站首页最近一个统计系统的大表需要加字段#xff0c;表的引擎是myisam#xff0c;表大小在3亿#xff0c;物理文件在106G。想想都蛋疼。那么这种情况下怎么把字段撸上去呢? 1. 首先想到了《高性能MySQL》提到的直接更改表结构文件#xff08;frm#xff09;#xff0c;但是在经…最近一个统计系统的大表需要加字段表的引擎是myisam表大小在3亿物理文件在106G。想想都蛋疼。那么这种情况下怎么把字段撸上去呢? 1. 首先想到了《高性能MySQL》提到的直接更改表结构文件frm但是在经过测试以后发现提示表损坏了需要repair只好放弃了。 2. 使用pt-online-schema-change刚开始跑没有问题后面在凌晨发现影响业务了也只好放弃了。 3. 最近GitHub开源的gh-ost属于新鲜玩意还没有研究只好放弃。 4. 创建新表load数据最后rename表。前提是表只有insert表是myisam引擎   最后使用了第四种方案把字段加上了。那么下面就来详细说说第三种方案。 我们假设要把tb_yayun表加两个字段uidage。 老表业务在使用的表 mysql show create table tb_yayun\G *************************** 1. row ***************************Table: tb_yayun Create Table: CREATE TABLE tb_yayun (id int(11) NOT NULL AUTO_INCREMENT,name char(20) DEFAULT NULL,enter_time datetime NOT NULL,PRIMARY KEY (id),KEY enter_time (enter_time) ) ENGINEMyISAM DEFAULT CHARSETutf8 1 row in set (0.00 sec) 环境准备 1. 一台空闲的服务器没跑业务安装了mysql实例的。在该服务器上面创建新表。 mysql show create table tb_yayun_new\G *************************** 1. row ***************************Table: tb_yayun_new Create Table: CREATE TABLE tb_yayun_new (id int(11) NOT NULL AUTO_INCREMENT,name char(20) DEFAULT NULL,enter_time datetime NOT NULL,uid int(11) DEFAULT NULL,age int(11) DEFAULT NULL,PRIMARY KEY (id),KEY enter_time (enter_time) ) ENGINEMyISAM DEFAULT CHARSETutf8 1 row in set (0.00 sec)2. 在线上服务器导出tb_yayun表的数据这里有一个技巧不需要全部导出截止到某一天就行。可以用下面下面命令 mysql -uroot -p -q -s -e use test;select *,, from tb_yayun where enter_time 2016-08-01 00:00:00 /data/tb_yayun.txt3. 把导出的文件拷贝到上面提到的空闲服务器导入时间会很长我当时导入3亿的表花了6小时 LOAD DATA INFILE /data/tb_yayun.txt INTO TABLE tb_yayun_new; 4. 和开发确定一个切换时间我们的数据都是先入队列所以是可以暂停一会儿写入的。和开发确定好一个时间以后比如要在2016-08-02 15:00:00以后切换那么此时还需要做下面工作。还需要补一次数据因为新表的数据只导入到了2016-08-01 00:00:00。所以再次从线上服务器导数据。 mysql -uroot -p -q -s -e use test;select *,, from tb_yayun where enter_time 2016-08-02 00:00:00 and enter_time 2016-08-02 15:00:00 /data/02_tb_yayun.txt 再次拷贝到空闲的服务器导入 LOAD DATA INFILE /data/02_tb_yayun.txt INTO TABLE tb_yayun_new; 5. 当导入完成以后把tb_yayun_new表的物理文件拷贝到线上服务器。MYDMYIfrm注意权限。如果线上有1主3从那么4台服务器都需要拷贝。拷贝完成以后执行flush tables然后每台服务器检查表是否正常。limit一下或者count一下都行。 6. 通知开发停止写入一般是把程序停止一会儿。具体时间不会超过10分钟。当开发说已经停了导入数据的程序以后我们要看看老表是否还有数据写入对于myisam表来说直接count看条数是否有变化就行。如果没有数据写入以后。执行下面的命令 1再次从老服务器导数据我们需要把数据补一致。(线上服务器) mysql -uroot -p -q -s -e use test;select *,, from tb_yayun where enter_time 2016-08-02 15:00:00 /data/15_tb_yayun.txt 2load数据到tb_yayun_new注意会导致从库延时具体延时多久看导入的数据大小 LOAD DATA INFILE /data/15_tb_yayun.txt INTO TABLE tb_yayun_new; 3对比新表老表数据是否一致。如果操作没有错误的话数据肯定是一致的。新表tb_yayun_new老表tb_yayun进行count确认。4老表进行rename操作 alter table tb_yayun rename to tb_yayun_old_20160802; 5新表rename操作 alter table tb_yayun_new rename to tb_yayun;   7. 通知开发那边开启数据导入程序。至此大表加字段完成。   总结 上面提到的方法有非常大的局限性比如必须是myisam表该表只有insert还有就是业务能够忍受5-10分钟没有最新数据。对于前台业务当然无法忍受不过如果是公司的统计系统或者内部人员使用。则完全没问题影响非常小沟通到位就行。  转载于:https://www.cnblogs.com/gomysql/p/5747545.html
http://wiki.neutronadmin.com/news/435397/

相关文章:

  • 网站建设的相关新闻能利用双股铜芯电话线做网站吗
  • 电子商务网站建设教程 pdfc 博客网站开发教程
  • 帮忙做任务网站手机网页视频怎么下载
  • 免费下载简历模板网站小程序开发教程图书
  • 专业建设信息化网站资源计生网站生育文明建设
  • 网站策划书的撰写流程?惠州网络营销
  • 遵化市城乡建设局网站 上的网站app
  • 外贸俄罗斯俄语网站制作外国高端网站设计
  • 十大小说网站排名动态logo在线制作
  • 网站开发入哪个会计科目哪个网站可以做水果销售代理
  • 苏州网站维护简单的个人网站
  • 网站全站建设开题报告范文汕头第一网
  • 艾迪网络专业的网站建设公司搜狗推广登录
  • 天津seo网站管理企业对电子商务网站的建设
  • 建设个人网站需要备案吗商城网站的模块设计
  • 重庆企业网站推广方案金华做网站公司
  • seo建站教学高端网站开发有哪些
  • 深圳网站建设..fwa 网站 欣赏
  • 中国住房和城乡建设部网站造价师注册建筑培训网成绩查询
  • 辽阳专业网站开发公司图片网址生成器
  • 做自媒体网站需要注册什么公司企业展厅设计公司盛世笔特
  • 国家和住房城乡建设部网站首页做购物车的网站
  • 网站开发设计与实现免费做长图网站
  • 郴州网站优化网上购物系统功能模块
  • 网站ui设计兼职网页制作心得2000字
  • 坑梓网站建设方案wordpress 完整主题下载地址
  • 商城的网站设计重庆定制型网站建设
  • 免费软件下载网站app动漫设计与制作软件下载
  • 傻瓜式建网站域名系统
  • 自己的网站怎么做砍价天津正规网站建设调试公司