Ecs下的两台mysql做主从设置

时间:2023-12-20 00:00:08

一、主库配置master

1.用户root账户进入到mysql

mysql -uroot -p

2.创建用于主从同步的账户,并赋予权限,由于这个账户只是作为同步数据用,所以分配权限不要过大,我这里只赋予了三个权限:

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password';(这里的%可以直接换成从库的IP)

grant REPLICATION CLIENT ON *.* TO repl;

grant SUPER ON *.* TO repl;

flush privileges;

3.打开my.cnf

vim /etc/my.cnf

找到server-id

修改如下:

server-id = 28 (这里的数字最好改成master的ip的最后三位)
log-bin = mysql-bin(这条如果没有就新加)

4.查看主库状态:

SHOW MASTER STATUS;

Ecs下的两台mysql做主从设置

注意:File和Position这两个值。配置从库时会用到。

到这里Master就算配置完成了。

二、从库部分slave

1.打开my.cnf

vim /etc/my.cnf

找到server-id

修改如下:

server-id = 111 (这里的数字最好改成master的ip的最后三位)
log-bin = mysql-bin(这条如果没有就新加)

2.执行重要的语句:

change master to master_host='主库ip',master_user='刚才主库建立的用户名',master_password='刚才主库建立的用户名对应的密码',master_log_file='mysql-bin.000010',master_log_pos=659;

注意:这里的master_log_file和master_log_pos就是配置主库的最后步显示的File和Position

3.执行同步:

start slave;

4.查看状态:

show slave status\G;

Ecs下的两台mysql做主从设置

主要是这两个Yes,必须全为Yes,否则就是不成功。如果不成功请继续往下看:

三、不成功有两种情况:

1.查看主库的防火墙:

针对防火墙有两种就解决方案:

a.关闭防火墙:/etc/init.d/iptables stop

b.打开防火墙,加入一条允许访问:

vi /etc/sysconfig/iptables

如果在master上建立账户不是%,而是指定的从库的IP的话,加入:-A INPUT -s 124.239.176.60 -p tcp -m tcp --dport 3306 -j ACCEPT

如果是%,加入:-A INPUT -s % -p tcp -m tcp --dport 3306 -j ACCEPT

保存,退出,重启防火墙

/etc/init.d/iptables restart

2.查看master上是否有File那个文件,如果没有再执行:SHOW MASTER STATUS;查看一下,

然后再执行:

change master to master_host='主库ip',master_user='刚才主库建立的用户名',master_password='刚才主库建立的用户名对应的密码',master_log_file='mysql-bin.000010',master_log_pos=659;

当然这里的master_log_file和master_log_pos就是配置主库的最后步显示的File和Position