windows server下Mysql5.7主从复制

时间:2022-09-21 12:32:58

 1、说明:

MySQL版本:5.7

Master服务器IP:10.10.12.224,账号为root,密码root

Slave服务器IP:10.10.12.225,账号为root,密码root

2、Master服务器配置

·        找到Master服务器MySQL配置文件my.ini,用记事本打开,在[mysqld]下添加主服务相关内容;

log-bin=mysql-bin

log-bin-index=mysql-bin.index

server-id=224 --服务Id,和slave server-id不一样          

sync_binlog=224

binlog-do-db= testdb --做主从同步的数据库名

binlog-ignore-db= mysql –忽略不同步的数据库名

binlog-ignore-db= performance_schema

binlog-ignore-db= information_schema

·        配置完毕重启MySQL服务;

·        授权:授权slave同步数据的账号密码。

授权命令为:GRANT REPLICATION SLAVE ON *.*TO'账号'@'Slave地址' IDENTIFIED BY'密码';//账号为slave使用的账号

本次使用的是一主两从,所以执行两条命令分别给两台slave授权:

GRANT REPLICATION SLAVEON*.*TO ’root’@’10.10.12.225’ IDENTIFIED BY ‘root’;

GRANT REPLICATION SLAVEON*.*TO ’root’@’10.10.12.230’ IDENTIFIED BY ‘root’;

·        Master端,使用以下命令查看Master端状态,需要记住状态的File,Position参数,在Slave配置中会用到。

登录mysql,然后输入命令:show master status  \G;然后就可以看到file和position的值。

3Slave服务器(10.10.12.225)配置

·        修改配置:在Slave服务器中找到MySQL的配置文件my.ini,用记事本打开,在[mysqld]下新增以下内容:

server-id=225    --服务Id,和master 的server-id不一样    

log-bin = mysql-bin

·        重启Slave MySQL服务;

·        Slave关联Master:在MySQL命令行中执行以下命令;

CHANGE MASTER TO

MASTER_HOST='master_host_name',

         MASTER_USER='replication_user_name',

         MASTER_PASSWORD='replication_password',

         MASTER_LOG_FILE='recorded_log_file_name',

        MASTER_LOG_POS=recorded_log_position;

//master_host_name:master:服务器IP

//replication_user_name:用户名(上面授权)

//replication_password:密码

//recorded_log_file_name:文件名(查看状态得到)

//recorded_log_position:开始位置

·        重启Slave MySQL服务;

·        启动Slave,输入以下命令;

  startslave;

在命令行中输入以下命令:show slave status \G;

Slave_IO_RunningSlave_SQL_Running都为YES,则读写分离配置成功。

 

说明:

Slave_IO_RunningSlave_SQL_Running有一个为NO,则读写分离配置不成功。

·        Slave_IO_RunningNO 
首先查看MasterSlaveserver-id是否一致,若一致,需要修改,然后重启slavestart slave)。

show GLOBAL VARIABLES like '%server_id%';//查看server_id

 set GLOBAL server_id=2;//重新设置server_id

·        Slave_SQL_RunningNO 
原因:程序可能在slave上进行了写操作 ,也可能是slave机器重起后,事务回滚造成的。 
解决方法:

1.首先停掉Slave服务:slave stop;

2.到主服务器上查看主机状态,记录File和Position对应的值:show master status  \G;

3.到slave服务器上执行手动同步:

 change master to

master_host='10.10.12.224',

 master_user='root',

master_password='root',

 master_port=3306,

master_log_file='mysql-bin.000003',

master_log_pos=207448;

4.重启Slave:slave start;

5.再次查看slave状态发现:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes