5

I was trying to implement Master-Slave Database Replication on two systems.
I followed the steps from the following links
https://www.youtube.com/watch?v=DmQWcU2INqQ
and
Master Slave Replication

But in both cases, I ended up with

Slave_IO_Running: Connecting
Slave_SQL_Running: Yes

I've tried to check the network connection between the machines and they're able to ping each other successfully.
Disabled the antiviruses and Firewalls on both systems
Added an alias for the slave to access the master machine, Working.
Both machines using 3306 port for mysql.

Last_IO_error: error connecting to master 'user01@192.168.2.46:3306' -- retry-time 60 retries: 1

9 Answers 9

6

I faced a similar error some days ago. I was able to solve that error based on some Google search results. Here are some of the suggestions that might hopefully help you too:

  1. Check whether you created the replication user with required privileges. If not, create a new user on master with the following command:

    Create user ‘repl’@’192.168.2.46’ identified by ‘replpwd’;
    Grant replication slave on *.* to ‘repl’@’192.168.2.46’;
    
  2. If you already created the required replication user, check the privileges of the replication user. You can check the privileges by using the following command:

    show grants for repl;
    
  3. Usually, this issue occurs because of the incorrect password. In that case you can reset the password on the slave by using the following command:

    change master to master_password = 'rplpassword';
    
  4. Also, check the for any mistakes in the given replication user and host IP address.

Since, you are able to ping the master server, it is most probably because of the above mentioned reason.

1
  • 1
    @rathishDBA I had replication on the mysql database which should replicate users too. As part of setting up slave, I made a dump of the application db and the mysql db and imported into the slave. Assumed slave_user will be replicated along with the right password. The slave_user was there but the password did not work. Resetting the master password made it work. Thank you!
    – Kalyan
    Jun 15, 2018 at 19:14
1

You should also check that these two lines are commented on the Master side (for networking issues) as shown below.

# skip-networking  
# bind-address = 127.0.0.1

For complete details on master slave replication, follow this link.

0

Try the following:

  1. Stop slave
  2. Start slave

It solved the problem for me today.

0

I faced the same issue with the MySQL replication.
I had given the GRANT ALL privileges, which solved my issue, as follows:

GRANT ALL ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';

You may need to flush your privileges after you set them with FLUSH PRIVILEGES; FLUSH TABLES WITH READ LOCK;

1
0

I created a DB in AWS RDS and it showed the same status -

Slave_IO_Running: connecting
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

I needed to allow the egress from RDS to my external master.
You can modify the security group attached to your RDS, or in my case terraform - [you might want to limit the source IPs that can connect to/from].

resource "aws_security_group" "allow_db" {
  name = "${var.customer_name}-${var.environment}-wpdb"
  description = "Security for DB Connections"
  vpc_id      = "${var.vpc_id}"

  ingress {
    description = "DB from all"
    from_port   = 3306
    to_port     = 3306
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  egress {
    description = "DB to master"
    from_port   = 3306
    to_port     = 3306
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}
0

I had to restart mysql service on slave (once the import is finished) after that it started working again. Here are the steps

  1. sudo service mysql restart;
  2. mysql -uroot
  3. start slave;
  4. show slave status \G;
0

I encountered a similar issue and after searching for one hour, I saw that port 3306 was closed between my master and slave. Be sure it's open and then start slave;

0

Try this on master:

GRANT ALL ON *.* to 'username'@'ip' WITH GRANT OPTION;

Then:

FLUSH TABLES WITH READ LOCK;
FLUSH PRIVILEGES

Quit mysql

Restart Mysql: sudo systemctl restart mysql

Re-enter mysql and run:

SHOW MASTER STATUS \G

SHOW MASTER STATUS \G <- command's output will help you to set master from slave server

Do this in slave:

  1. Stop slave if it's already running.
  2. Set the master again with all the paramas.
  3. Start slave
  4. SHOW SLAVE STATUS \G

Hopefully this will resolve your error :)

0

Ping is not right way to test. Telnet the 3306 on the Master port. Also if you are connecting cross regional or cross datacenter - having intermittent issue of "Connecting" is to be expected.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.