1
|
show slave status\G; |
确认从库不再接收主库的binlog信息后,停止客户端应用(为了保证业务数据的完整性,停止客户端对主库的操作)。
如果有下面3种情况中的1种,则说明从库不再接收主库的binlog信息。
1
|
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock |
1
|
show slave status\G; |
比较Exec_Master_Log_Pos值(传统方式)或者Executed_Gtid_Set值(GTID方式),值最大的从库选举为新主库(如果值相等则选择其中1个作为新主库)。
1 2 3 |
stop slave; reset slave all; show slave status \G; |
查看主库状态,记录File参数值(binlog日志文件)和Position参数值(binlog中最新操作的位置),7.e会用到这2个参数值。
1
|
show master status; |
通过查看主从复制确认从库的配置(部署方式、同步方式和是否开启并行),然后参考部署MySQL主从复制中对应的“配置主库”章节配置新主库。
如果主库想重置File(binlog日志文件)和Position(binlog中最新操作的位置),则执行:
1 2 |
reset master; show master status; |
1
|
show variables like 'log_bin'; |
若log_bin值为OFF,执行下面的操作:
1
|
vim /etc/my.cnf
|
[mysqld] log-bin=mysql-bin
1
|
service mysql restart |
或者
1 2 |
/usr/local/mysql/bin/mysqladmin -uroot -p123456 shutdown -S /data/mysql/run/mysql.sock /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf & |
1
|
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock |
1
|
show slave status \G; |
Slave_SQL_Running_State显示:"Slave has read all relay log;waiting for more updates",回放成功。
1
|
stop slave; |
删除从库的所有信息,查看从库状态。
1 2 |
reset slave all; show slave status \G; |
1
|
change master to master_host='192.168.220.72',master_port=3306,master_user='replicate',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=155; |
1
|
change master to master_host='192.168.220.72',master_port=3306,master_user='replicate',master_password='123456',master_auto_position=1; |
1
|
start slave; |
1
|
show slave status \G; |
下面两项值均为Yes,即表示设置从库成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
1 2 |
ps -ef | grep mysql /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf & |
1 2 3 |
ip a ifup enp5s0 ip a |
如果是磁盘损坏,导致的主库不可用,建议使用物理备份(例如XtraBackup)或者逻辑备份(mysqldump)对数据进行恢复。
通过查看主从复制确认从库的配置(部署方式、同步方式和是否开启并行复制),然后参考部署MySQL主从复制中对应的“配置从库”章节配置旧主库。