首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改从服务器上的mysql表列,然后将其提升到主

更改从服务器上的mysql表列,然后将其提升到主
EN

Server Fault用户
提问于 2011-01-23 21:16:55
回答 2查看 1.3K关注 0票数 0

如果我想更改一个NULL列以允许null值,那么在我的DB从属服务器上运行那个ALTER TABLE,等待它赶上,然后将它提升为master是否安全呢?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2011-01-23 23:46:31

当您从"NULL“到”NULL“时,这应该是可以的。我会这样做:

  1. 停止从服务器上的从SQL线程1:mysql> STOP SLAVE SQL_THREAD;
  2. 启动从线程:mysql> START SLAVE SQL_THREAD;

然后在主人身上,跑:

  1. 禁用会话2:mysql> SET SQL_LOG_BIN=FALSE;的bin日志
  2. 把您的ALTER放在主程序上
  3. 重新启用会话的bin日志:mysql> SET SQL_LOG_BIN=TRUE;

1 MySQL复制在从服务器上的两个线程中运行。I/O线程将复制数据从主复制到从线程。SQL线程在从线程上执行该SQL,执行INSERT/UPDATE/DELETE/等操作。您可以独立地停止每个线程。

2只影响您所处的会话,而不影响来自生产应用程序的其他连接。您正在指示MySQL不要为复制而将运行到bin日志中的任何命令添加。您需要这样做,这样您的ALTER TABLE就不会复制到从服务器上,因为它已经在那里运行了。

票数 1
EN

Server Fault用户

发布于 2011-02-04 22:28:42

我刚刚读完了一篇关于使用MMM修改大型表的很棒的文章,它似乎可以解决您的问题,假设您正在使用或能够设置MMM。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/225900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档