Ecs下的两台mysql做主从设置
一、主库配置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;
注意: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;
主要是这两个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