windows实现MySQL主从复制

MySQL的主从复制是通过binlog日志来实现的,主从复制中的“主”指的是MySQL主服务器上的数据库,“从”指的是MySQL从服务器上的数据库,且这种复制是基于数据库级别的,为此从服务器中的数据库名称必须和主服务器中的数据库名称保持一致,那么,要想实现主从复制,我们至少要有两个MySQL服务器(最好是两个MySQL服务器分别位于不同的主机上,或者在一个主机上安装两个MySQL,端口不同即可)。

主服务器(master): IP为127.0.0.1,端口为3306

从服务器(slave): IP为127.0.0.1,端口为3307

1.主机my.ini如下:

[Client]

#设置3306端口

port = 3306

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3306

#服务器id
server-id = 1

#开启二进制日志
log-bin = mysql-bin


#同步的数据库
binlog-do-db = backup_test

# 不需要同步的数据库
binlog-ignore-db = mysql                
binlog-ignore-db = test                      
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema

#设置mysql服务器字符集

collation-server=utf8_general_ci

# 设置mysql的安装目录

basedir=E:\Mysql\mysql-master

# 设置mysql数据库的数据的存放目录

datadir=E:\Mysql\mysql-master\data

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#重新设置密码时,将此放开,设置成功后,再注释掉

#skip-grant-tables

#表名全部为小写,避免出现大小写敏感

lower_case_table_names=1

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

2.保存退出,重启MySQL主服务器。

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

授权命令为:GRANT REPLICATION SLAVE ON *.*TO'账号'@'Slave地址' IDENTIFIED BY'密码';(slave使用的账号)
GRANT REPLICATION SLAVEON*.*TO ’root’@’127.0.0.1’ IDENTIFIED BY ‘root’;(示例)

3.查看主服务器的 master 状态(Navicat 中F6): show master status;

4.从机my.ini如下:

[Client]

#设置3307端口

port = 3307

default-character-set=utf8

[mysqld]

#设置3307端口

port = 3307

server-id = 2

# 日志
log-bin=mysql-bin 

# 二进制日志自动删除的天数
expire_logs_days=3

#同步的数据库
binlog-do-db = backup_test

# 不需要同步的数据库
binlog-ignore-db = mysql                
binlog-ignore-db = test                      
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema

log-slave-updates

slave-skip-errors=all

slave-net-timeout=60

#设置mysql服务器字符集

collation-server=utf8_general_ci

# 设置mysql的安装目录

basedir=E:\Mysql\mysql-slave

# 设置mysql数据库的数据的存放目录

datadir=E:\Mysql\mysql-slave\data

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#重新设置密码时,将此放开,设置成功后,再注释掉

#skip-grant-tables

#表名全部为小写,避免出现大小写敏感

lower_case_table_names=1

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

5.停止服务stop slave;

change master to master_host='127.0.0.1',master_user='user01',master_password='123456',master_port=3306,master_log_file='mysql-bin.000005',master_log_pos=953;(master_log_file和master_log_pos向上找截图参数即可)

参数详解:

master_host: 主服务器的IP
master_user: 主服务器上新创建的用户名
master_password: 用户的密码
master_port: 主服务器的端口,如果未曾修改,默认即可。
master_log_file: 主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File的值
master_log_pos: 日志的位置,填写查看主服务器的master状态时显示的Position的值

6.启动从服务器的slave复制功能:start slave;

7.如果 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,则说明主从复制的所有配置已成功,即从服务器已经可以自动与主服务器的数据库数据实现同步了。

总结:只要主服务器的数据有更新(比如:在 backup_test数据库中新建了一张表或者表中的数据发生了变化),从服务器都会             自动与主服务器保持一致。但如果有人刻意改变了从服务器的数据,主服务器中的数据并不会同步更新,除非我们把这两             个MySQL服务器设置为互为主从。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值