🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 切换主从服务器 在实际工作中,有时候遇到这样的问题,一个主数据库服务器A,两个从服务器B和C.当A发生故障时,需要将一个从数据库B切换成主数据库,同时修改数据库C服务器的配置,使其指向B. ## 操作 首先要确保所有的从数据库都已经执行了relay log中的全部更新,看从数据库中的状态是否是Has read all relay log,是否更新都已经执行完成. ```sql stop slave IO_THREAD; show processlist \G; ``` 在从数据库B停止slave服务,然后执行reset master重置成主数据库. ```sql stop slave; reset master; ``` 此时发现报错Binlog没有设置,不能执行reset master命令,下面关闭数据库服务,然后修改配置文件 ```ini [mysqld] log-bin = /usr/local/ver/mysql/mysql-bin ``` 配置完成后,重启数据库服务,登录数据B,然后执行命令开启主数据功能 ```sql stop slave; reset master; ``` 此时从数据库B已经成功设置切换成为主数据库,下面接着设置从数据库. 在从数据B上添加具有replication权限的用户 ```sql grant replication slave on *.* to 'tepl'@'localhost' identified by '123'; show master status; ``` 在从数据库C上配置复制的参数 ```sql change master to -> master_host = '127.0.0.1', -> master_user = 'repl', -> master_password = '123', -> master_port = '3306', -> master_log_file = 'mysql-bin.000002', -> master_log_pos = 98; start slave; ``` 在从数据库C执行show slave status 命令查看从数据服务是否成功开启. ```sql show slave status \G; ``` 在数据库B和C测试是否成功设置复制功能 至此,主从数据库成功地发生切换,最后,如果数据库A可以修复,可以考虑以上方法将A数据库配置成为B数据库的从数据库.