debian - mysql slave replication failed -


i have situation dns server records master , records being replicated master slave , slave being used resolution. replication broke after mysql server upgrade. mysql server stopped , name of log file , log position changed until mysql recovered. know if change log position , log file name, replication start miss lot of updates , don't want. should restart master slave replication without losing updates on master. every single update important. here information slave status.

 slave_io_running: no  slave_sql_running: yes  last_io_errno: 1236 last_io_error: got fatal error 1236 master when reading data binary log: 'could not find first log file name in binary log index file' 

thanks

you may in nice surprise here goes:

run show slave status\g. sake of example, let's this:

             slave_io_state: waiting master send event                 master_host: 10.64.68.253                 master_user: replusername                 master_port: 3306               connect_retry: 60             master_log_file: mysql-bin.003202         read_master_log_pos: 577991837              relay_log_file: relay-bin.010449               relay_log_pos: 306229695       relay_master_log_file: mysql-bin.003202            slave_io_running: yes           slave_sql_running: yes             replicate_do_db:         replicate_ignore_db:          replicate_do_table:      replicate_ignore_table:      replicate_wild_do_table: replicate_wild_ignore_table:                   last_errno: 0                  last_error:                skip_counter: 0         exec_master_log_pos: 577991837             relay_log_space: 306229695             until_condition: none              until_log_file:               until_log_pos: 0          master_ssl_allowed: no          master_ssl_ca_file:          master_ssl_ca_path:             master_ssl_cert:           master_ssl_cipher:              master_ssl_key:       seconds_behind_master: 0 

you choose following display:

  • relay_master_log_file (mysql-bin.003202)
  • exec_master_log_pos (577991837)

here why: relay_master_log_file , exec_master_log_pos represent binlog entry master made slave , executed successfully. pickup there.

you run code:exec_master_log_pos

stop slave; change master master_log_file='mysql-bin.003202', master_log_pos=577991837; start slave; 

give try !!!

caveat

if relay_master_log_file no longer exists on master, may have damage control. given show slave status\g mentioned before, may have skip next binary log on master follows:

stop slave; change master master_log_file='mysql-bin.003203', master_log_pos=4; start slave; 

if replication catches up, not out of woods just. may have download percona toolkit , run pt-table-checksum , pt-table-sync repair lost data on slave.

if replication not off ground, have perform due diligence , reload slave.

hopefully, may not have in caveat if replication works original suggestion.


Comments