首页 > 数据库 > MySQL >

mysql5.7配置主从同步、主从在windows和linux上的详细操作教程

2018-05-12

mysql5 7配置主从同步、主从在windows和linux上的详细操作教程。

1、下载mysql

master安装在windows上

\

2、master配置

windows修改E:\ProgramData\MySQL\MySQL Server 5.7目录的my.ini文件:
# master服务唯一标识
server-id = 1
# 二进制同步数据文件
log-bin = mysql-bin
basedir = E:/Program Files/MySQL/MySQL Server 5.7/
datadir = E:/ProgramData/MySQL/MySQL Server 5.7/Data/
binlog-do-db = test 
# binlog-do-db和binlog-ignore-db只需指定一个
# binlog-ignore-db=mysql

配置完,计算器管理服务中重启mysql

使用navicat或sqlyog连接mysql,新建一个用户专用于slave连接:

create user 'slave'@'192.168.229.129' identified by '123456';

192.168.229.129是centos的ip,表示只有该客户端可以使用slave进行连接;

然后给slave主从同步操作授权:

grant replication slave on *.* to 'slave'@'192.168.229.129' identified by '123456';

flush privileges;

测试的话可直接用root用户,跳过用户创建,直接授权:

grant replication slave on *.* to 'root'@'%' identified by 'root';

flush privileges;

%表示任何客户端都可以用root用户连接。

查看master状态信息:show master status;

\

记录File和Position

3、slave配置

编辑:vi /etc/my.cnf

[mysqld]节点下添加:
# slave服务的唯一标识,2至32,保证和master不一样
server-id=2 
# 指定要同步的数据库,replicate-do-db和replicate-ignore-db二选一
replicate-do-db=test
# 指定不要同步的数据库
# replicate-ignore-db=mysql 

重启slave:service mysql restart

注意关闭防火墙或开放3306端口

登录slave配置同步master信息:

change master to master_host="127.0.0.1",
master_user="root",
master_password="root",
master_port=3306,
master_log_file="mysql-bin.000002",
master_log_pos=154;

master_log_file和master_log_pos是在master中用show master status;查看的信息

开启同步:start slave;

查看同步状态:show slave status;(linux终端:show slave status \G)

\

图中IO和SQL都是Yes表示同步状态正常

4、测试

在两个服务器中分别创建test数据库,在mater的test上新建一个表girl,slave中自动增加一个相同的表girl,

master上往girl中插入更新删除数据,slave中同步进行

5、其他

①、查看同步状态时,如果IO和SQL有一个为No,说明同步异常,可以到/usr/local/mysql/data/bogon.err中查看错误日志信息,没有可以my.cng中指定:/usr/local/mysql/data/bogon.err,重启,根据错误日志解决后重新设置slave同步信息,start slave即可

②、建议:主从服务器同步的两个库名和表名保持一致,否则需要设置replicate-rewrite-db和replicate-wild-do-table等参数,有跨库更新问题,试了几次都失败了,官方文档:https://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html

③、从旧数据库old_db中同步已有数据到slave中:

master的my.ini中增加:binlog-do-db=old_db重启master服务,锁定所有表:flush tables with read lock;查看状态:show master status; 记录File和Position将master中的data目录下old_db文件夹拷贝到slave的data目录中编辑slave的my.cnf,添加:replicate-do-db=old_db重启slave服务:service mysql restart重新设置slave同步信息:stop slave;change master to master_host="127.0.0.1",master_user="root",master_password="root",master_port=3306,????? ?master_log_file="mysql-bin.000002",master_log_pos=154;

start slave;show slave status;状态正常解锁master表:unlock tables;

相关文章
最新文章
热点推荐