mysql主从同步原理和实战

主从同步原理

从库通过读取主库的bin-log,将主库的更新操作,在从库再执行一次
主从同步详细流程
1.开启主库的bin-log
2.执行
 CHANGE MASTER TO
MASTER_HOST=‘localhost’,
MASTER_PORT=3306,
MASTER_USER=‘rep’,
MASTER_PASSWORD=‘root’;
使从库的io线程去读取主库的bin-log日志,并将读取主库的用户名密码,bin-log位置,ip,端口等信息,记录到master.info中
然后io线程会将从主库读取的bin-log日志写在relay-log.info(中继日志)中
3.SQL线程会去读取relay-log.info的日志,并执行,这时候就同步了
主从同步要点
1.主从同步是异步同步
2.逻辑同步模式,多种模式,默认是通过SQL语句执行
3.主库通过记录binlog实现对从库的同步。binlog记录数据库的更新语句
4.主库1个io线程,从库2两个线程(sql线程和io线程)来完成
5.从库关键文件master.info,relay-log,relay-info功能
6.如果从库还要级联,需要打开log-bin和log-slave-updates

主从同步实战

1.给主库备份

mysqldump -uroot -p -S /tmp/mysql3306.sock -A -B --events --master-data=1>/usr/local/mysql/data/3306/rep.sql
1.1查看当前的bin-log
show master logs;
show master status;
1.2锁表只读,和解锁
锁表:flush table with read lock;
解锁:unlock tables;
2.创建同步用户
grant replication slave on . to ‘用户名’@‘允许连接的ip’ identified by ‘密码’;

3.在从库上恢复主库的备份
mysql -uroot -p -S /tmp//mysql3307.sock < req.sql
4.启动从库的io线程
4.1如果备份的时候master-data=1可以不指定MASTER_LOG_FILE='mysql-bin.000003’和MASTER_LOG_POS=位置
change master to
master_host=‘localhost’,
master_port=3306,
master_user=‘rep’,
master_password=‘root’;
4.2如果备份的时候master-data=2或没写master-data参数需要指定MASTER_LOG_FILE='mysql-bin.000003’和MASTER_LOG_POS=位置
change master to
master_host=‘localhost’,
master_port=3306,
master_user=‘rep’,
master_password=‘root’,
master_log_file=‘mysql-bin-3306.000014’,
master_log_pos=12488;
4.3执行上面命令后会在对应data文件夹生成master.info,这是记录从库同步主库的信息,包括此时读到了那个位置的bin-log
5.启动从机的SQL线程
start slave;
6.检查从库同步状态
show slave status;
show slave status\G;
7.查看线程执行状况,包括主机是否已经send bin-log和从机等待主机更新状况(Waiting for
master to send event)
show processlist;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值