mysql如果主库宕机,如何解决?
两种情况服务器down机,数据库down机
如果此时需要切从库
1、先show processlist\G,查看状态 如果看到两个状态,说明此时的从库和主库是同步的 state: waiting for master to send event I/O线程 state:has read all relay log;waiting for the slave I/O thread to update it sql线程 2、登录从库分别查看: cat /data/3306/data/master.info cat /data/3307/data/master.info 看哪个从库的哪个master.info哪个更新,就说明哪个从库一致性更高,所以此时就确定最新的库为主库。 选个pos最大的作为主库 或利用半同步的功能,直接选择做实时同步的这个从库。 1、确保所有relay log全部更新完毕。 在每个从库上执行stop slave io_thread;show processlist; 直到看到has read all relay log;表示从库更新都执行完毕 2、登录从库 mysql -uroot -p123 -S /data/3306/mysql.sock stop slave; reset master; quit; 3、进入数据库数据目录,删除master.info relay-log.info cd /data/3306/data/master rm -f master.info relay-log.info 检查授权表,类似read-only参数 4、3306提升从库为主库 vim /data/3306/my.cnf 开启: log-bin =/data/3306/mysql-bin //如果存在log-slave-updates read-only等参数一定要注释掉。 /data/3306/mysql stop /data/3306/mysql start 到此,提升主库完毕 5、如果主库服务器没down,需要去主库拉取bin-log补全提升主库的从库 6、其他从库操作 已检查(同步user rep均存在) 登录从库 stop slave; change master to master_host='192.168.1.32'; //如果不同步,就指定位置点 start slave; show slave status\G;