第一步:保持主从两个数据库是同步的,最好事先手动同步一下;
第二步:停止两个数据库,分别更改配置文件;
在mysql安装目录下找到my.ini
在[mysqld]下添加配置
主服务器数据库,增加如下配置:
server-id =1 #这个唯一就OK
log-bin = mysql-bin #bin日志所在目录
从服务器数据库,增加如下配置:
server-id = 2 #这个唯一就O,
log-bin = mysql-bin #bin日志所在目录
relay_log=mysqlid_relay_bin #中继日志所在目录
第三步,分别重启两个服务器的MySQL服务;
两个服务器的MySQL服务都要启动起来;
第四步,主服务器授权Slave权限账号
GRANT REPLICATION SLAVE ON *.* to 'name'@'从服务器ip' identified by '123456';
设置用户名和密码,以及从服务器的ip,在配置从服务器的时候会用到
第五步,登录主服务器,查询master状态;
show master status;得到file和position
第六步:登录从服务器,配置从服务器的Slave
change master to master_host='主服务器ip',master_user='name',master_password='123456', master_port=3306,
master_log_file='mysql-bin.000003',master_log_pos=106;
master_log_pos是上面查询出来的Position106。
第七步、启动从服务器的Slave
start slave;
第八步、验证从服务器的Slave服务状态
show slave status\G
以下两个状态必须为Yes。
Slave_IO_Running: Yes Slave_SQL_Running: Yes
如果有一项为No都不会同步成功。
**********所用到的查询语句
Show slave like ‘Slave_running’;// slave是否在运行
Show processlist\G;// 查看进程列表,“\G”是让显示出来的顺序更容易看
Show master logs;//查看主服务器的log文件
Show master status\G; //查看主服务器的配置状态
Show slave status\G;// 查看从服务器的链接状态
Show binlog events in ‘mysql_bin.000002’;// 查看这个mysql_bin.000002 log内容
Reset master;// 清除主服务器形成的日志
Reset slave //清除从服务器形成的日志
**********容易遇到的问题
1,如果Slave_IO_Running为NO,可能是配置从服务器的Slave
的时候,file,position,master_port等数据不准确,没有和主服务器提供的匹配上
2,如果Slave_SQL_Running为NO,则有可能是从服务器的程序可能在slave上进行了写操作,
也可能是slave机器重起后,事务回滚造成的
解决方法:
1.首先停掉Slave服务:slave stop
2.到主服务器上查看主机状态:
记录File和Position对应的值。
3.重新change同步