mysql主从架构中删除一台从服务器的流程步骤
因为要迁移(原因就不说了),从阿里云迁移至腾讯云,中途不能影响业务
并且时间也比较充足,所以我打算功能服务一并迁移过去,并且按服务器的数量开放功能模块
我的项目是在阿里云上的自建的mysql主从架构,因为是网站业务查询比写入要多
具体功能:
1主3从
1写3读
腾讯云这边上线功能并稳定运行了,所以阿里云这边就剔除一台
今天我打算删除一台mysql数据库的从服务器
进入步骤
我的mysql主服:
我这只显示删除的这台 其他的省略了
mysql> show processlist\G;
...
*************************** 2. row ***************************
Id: 8331160
User: xxxsync
Host: xx:39276
db: NULL
Command: Binlog Dump
Time: 86064
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL
*************************** 3. row ***************************
...
ERROR:
No query specified
mysql>
从服 (就要删除这台):
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: xx
Master_User: xxxsync
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000194
Read_Master_Log_Pos: 936485957
Relay_Log_File: izwz9hf4qqoc03io91jvcdz-relay-bin.000183
Relay_Log_Pos: 157404881
Relay_Master_Log_File: mysql-bin.000194
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
...
停止从服:
mysql> stop slave;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 5929417
Current database: *** NONE ***
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: xx
Master_User: xxsync
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000194
Read_Master_Log_Pos: 941060061
Relay_Log_File: izwz9hf4qqoc03io91jvcdz-relay-bin.000183
Relay_Log_Pos: 161978985
Relay_Master_Log_File: mysql-bin.000194
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
....
然后用SHOW STATUS看看
参数Slave_open_temp_tables 是否等于0
等于0的话就OK了 直接可以拉闸关服务器了
如果值不为0,用START SLAVE重启从服务器线程
slave_open_temp_tables值显示,当前slave创建了多少临时表,注意由client显示创建的
即便是这样,在使用临时表的场景下,如果服务器宕机,将遇到不可预知的问题。
所以比较保险的做法是,创建实体表,虽然会由于分配的文件刷新到磁盘。
最后在去主服务看看
show processlist\G;
终于删除那台不见了 完事
相关文章