Mysql实现主从同步

原理

  • Master服务器将数据的改变记录二进制Binlog日志,当Master上的数据发生改变时,则将其改变写入二进制日志中。
  • Slave服务器会在一定时间间隔内对Master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求Master二进制事件,同时主节点为每个I/O线程启动一个Dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

实现

master主服务器的配置

1.在mysql的my.ini文件中添加以下配置:

# 主服务器
server-id=1 #[必须]服务器唯一ID
log-bin=mysql-bin #[必须]启用二进制日志
# 同步的数据库,除此之外别的不同步(和下面binlog-ignore-db二选一)
#binlog_do_db=test
#不同步数据库,除此之外都同步
#binlog-ignore-db = information_schema 
#binlog-ignore-db = mysql

2.创建复制帐户并授权slave:

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

   备注:%表示所有客户端都可连接,可指定具体IP,如192.168.31.155

3.重启mysql服务并查看master的状态:

show master status;

  

  如上图所示,则master主服务器配置成功

slave从服务器的配置

1.在mysql的my.ini文件中添加以下配置:

# 从服务器
server-id=2 #[必须]服务器唯一ID
log-bin=mysql-bin #[必须]启用二进制日志
read_only=1 #针对普通MySQL数据库用户设置为只读
#super_read_only=1 #针对super类MySQL数据库用户设置为只读,比如root用户

2.重启mysql服务并连接master主服务器:

change master to master_host='192.168.43.56', master_user='mysync', master_password='123456',master_log_file='mysql-bin.000004', master_log_pos=120;

  备注:master_host对应主服务器的IP地址
             master_user对应主服务器的用户
             master_log_file对应show master status显示的File列:master-bin.000004
             master_log_pos对应show master status显示的Position列:120

3.启动slave数据同步:

start slave;

4.查看slave的状态:

show slave status\G;

   

   如上图所示,Slave_IO_Running和Slave_SQL_Running都为yes,则表示同步成功

   注意:1.主从服务器mysql版本要一致,特别是高版本为主,低版本为从的情况下,会导致同步失败

              2.从服务器可以设置数据库为只读,防止误改从库数据,导致主从数据不一致

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值