MySQL从库服务器down机报错Could not parse relay log ev(4)

接下来拷贝数据文件时,如果是MyISAM表类型的话,直接拷贝即可;如果是InnoDB表类型的话,一定要先停止MySQL服务再拷贝,否则拷贝文件可能无法使用。把拷贝的数据文件直接复制到从服务器的数据目录。

最后还需要再指定一下日志信息:

mysql> CHANGE MASTER TO

MASTER_HOST="<MASTER_HOST>",

MASTER_USER="<SLAVE_USER>",

MASTER_PASSWORD="<SLAVE_PASSWORD>",

MASTER_LOG_FILE="<FILE>",

MASTER_LOG_POS=<POSITION>;

在主服务器上直接拷贝数据文件虽然很快,但需要锁表或者停止服务,这会影响线上服务。如果先前已经有了从服务器,那么可以用旧的从服务器做母本来克隆新的从服务器:

先在旧的从服务器上查询日志信息:

mysql> SHOW SLAVE STATUS;

我们需要的是其中的Relay_Master_Log_File & Exec_Master_Log_Pos。

然后在旧的从服务器上按照前面的方法得到数据,可以先stop slave,然后拷贝数据并在新的从服务器上还原。

接着在新的从服务器上设置日志信息:

mysql> CHANGE MASTER TO

MASTER_HOST="<MASTER_HOST>",

MASTER_USER="<SLAVE_USER>",

MASTER_PASSWORD="<SLAVE_PASSWORD>",

MASTER_LOG_FILE="<Relay_Master_Log_File>",

MASTER_LOG_POS=<Exec_Master_Log_Pos>;

不管用那个方法,最后记得在从服务器上启动复制,并检查工作是否正常:

mysql> START SLAVE;

mysql> SHOW SLAVE STATUS;

注意:

MariaDB [(none)]> show slave status\G;

显示的Master_Log_File和 Read_Master_Log_Pos 这两个只对应这master

show master  status\G;的文件号和位置

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.0.143

Master_User: info_syncer

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000019

Read_Master_Log_Pos: 1038

总结:万不得一不要在服务还没有停的情况下去停服务器,尤其是数据库,否则会出现意想不到的错误,但是当服务器出现不可解决的问题的时候,一定要果断的去重启,不要犹豫,难免出现更严重的问题,再就是play或者tomcat等等这些服务最好分开跑,以免互相影响。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3495603dd5a1f4c783f4e372883bca50.html