一般来说mysql主从配置后,主库只负责添加,修改,删除操作,其他纯查询数据操作通过从库。
这里我将我自己阿里的一个mysql作为主库(centos),本地的mysql作为从库(windows)。
主库在mysql配置文件末尾添加,位置(我的在etc/my.cnf)
#主为1,如果需要增加Slave库则,此id往后顺延;
server-id = 1
#要同步的数据库,(也可以不设置,不设置就同步所有库)
binlog-do-db=community_ms
#要生成的二进制日记文件名称
log-bin=mysql-bin
从库配置文件末尾添加
#主为1,如果需要增加Slave库则,此id往后顺延;
server-id = 10
#要同步的数据库(也可以不设置,不设置就同步所有库)
replicate-do-db=community_ms
#要生成的二进制日记文件名称
log-bin=mysql-bin
在主库创建连接用户
//授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
create user 'demo'@'127.0.0.1' identified by '123456';
GRANT REPLICATION SLAVE,super,reload,file ON *.* TO 'demo'@'127.0.0.1';
或
grant replication slave,super,reload,file on *.* to demo@127.0.0.1 identified by '123456';
我这里直接用root用户测试
在主库运行语句,并记录File和Position的值,后续会使用:
show master status;
结果:
在从库运行如下语句:
change master to master_host='主库地址',
master_port=3306,
master_user='用户名',
master_password='密码',
master_log_file='mysql-bin.000002',
master_log_pos=154;
继续在从库执行如下语句:
start slave;
最后查看是否配置成功,执行:
show slave status;
结果:
主要看这两个参数是否为yes,如果不是,可能是slave没有启动或mysql配置有误。
配置成功后可以在主库的一个表添加或删除一条数据,然后在从库刷新看数据是否同步