如果我想要更改一个NOT NULL列以允许空值,对于我来说,在我的数据库从服务器上运行该ALTER TABLE
是否安全,等待它赶上来,然后将其提升为主?
当你从“NOT NULL”到“NULL”时,这应该是好的。 这是我会做的:
mysql> STOP SLAVE SQL_THREAD;
mysql> START SLAVE SQL_THREAD;
然后在主人身上运行:
mysql> SET SQL_LOG_BIN=FALSE;
mysql> SET SQL_LOG_BIN=TRUE;
[1] MySQL复制在从机的两个线程中运行。 I / O线程将复制数据从主机复制到从机。 SQL线程在从服务器上执行SQL,执行INSERT / UPDATE / DELETE /等。 你可以停止每个线程独立于另一个。
[2]这仅影响您所在的会话,而不影响生产应用程序的其他连接。 您正在指示MySQL不要将您运行的任何命令添加到bin日志中进行复制。 您需ALTER TABLE
以便您的ALTER TABLE
不复制到从属,因为它已经在那里运行。
我刚刚读完一篇关于使用MMM改写大型表格的文章 ,看起来好像能解决您的问题,假设您正在使用或可以设置MMM。