MySQL复制
MySQL复制是指将主库上的DDL和DML操作通过二进制日志传到从库上,使主库和从库上的数据保持同步
复制原理:
主服务器将更新写入二进制日志文件,并维护文件的一个索引来跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接受从那时起发生的任何更新,然后*并等待主服务器通知新的更新。
MySQL主从架构:优点:故障时候可以切库;读写分离;从库执行其他业务例如备份。
1:Master-Slave 主从同步
2:Master-Slave-Slave……级联
3:Master-Master 互为主备
【主从同步】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搭建成功。