MySQL主从架构之Master-Slave主从同步

时间:2023-12-24 08:04:55

MySQL复制

MySQL复制是指将主库上的DDL和DML操作通过二进制日志传到从库上,使主库和从库上的数据保持同步

复制原理:

主服务器将更新写入二进制日志文件,并维护文件的一个索引来跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接受从那时起发生的任何更新,然后*并等待主服务器通知新的更新。

MySQL主从架构:优点:故障时候可以切库;读写分离;从库执行其他业务例如备份。

1:Master-Slave    主从同步

2:Master-Slave-Slave……级联

3:Master-Master   互为主备

【主从同步】Master-Slave

MySQL主从架构之Master-Slave主从同步

注:需要主库打开log-bin ;设置server-id

#mysqldump -uroot -p --all-databases --master-data=2 --routines --events --quick>

  

--master-data=2 表示需要记录导出数据当时主库的binlog位置
--routines 表示导出存储过程
--events 表示导出事件
--quick 表示让服务端不将结果集一次发送,而是分批发送,可减轻压力
注:--master-data后默认是锁库的,可确保数据一致性,即导出数据和binlog位置的一致。
对于Innodb引擎,可增加--single-transaction取消锁库并利用Innodb事务特性确保数据一致

 

#创建同步账号

#grant replication slave, replication client on *.* to  replication@'%' identified by 'gechong';

#确定主库同步点

可以在Master上执行 SHOW MASTER STATUS; 也可以查看刚才导出的文件

#从库同步数据

#mysql -uroot -p < Master_data_20140920.sql

  

#从库CHANGE

#CHANGE MASTER TO MASTER_LOG_FILE='mysql.000002', MASTER_LOG_POS=525, master_host='10.1.29.10', master_port=3306, master_user='replication', master_password='gechong';

  

#查看从库状态

#SHOW SLAVE STATUS \G  

如果Slave_IO_Running 和 Slave_SQL_Running都为yes时,则Master-Slave搭建成功。