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搭建成功。