復制
1.復制類型
基于行的復制、基于語句的復制
2.復制原理
通過主庫上記錄二進制日志、在備庫重放日志的方式來實現異步的數據復制。并且無法保證主備之間的延遲。
3復制常用的用途
數據分布
負載均衡:將讀操作分布到多個服務器上,實現對讀密集型應用的優化,一個機器名只想多個ip地址、網絡負載均衡解決方案、Linux虛擬服務器等方法。
備份:復制不等于備份,是備份的補充。
高可用性和故障切除:復制能夠幫助應用程序避免mysql單點失敗,縮短故障宕機時間。
mysql升級測試:使用一個更高版本的mysql作為悲苦,保證在升級全部實例前,查詢能夠在備庫按照預期執行。
4復制如何工作
1)在主庫上把數據更改記錄到二進制日志中。
2)備庫將主庫上的日志復制到自己的中繼日志中。
3)備庫讀取中繼日志中的事件,將其重放到備庫數據之上。
5配置復制
1)在每臺服務器上創建復制賬號;
2)配置主庫和備庫;
3)通知備庫連接到主庫并從主庫復制數據
6給一個已經運行的服務器配置備庫
server1:192.168.0.1 server2:192.168.0.2
1)創建復制賬號
mysql>grant replication slave,replication client on *.* to relp@'192.168.0.%' identified by 'p4ssword';
//主庫和備庫都創建
2)配置主庫和備庫
主庫server1的my.cnf:
log_bin = mysql-bin //開啟bin日志
server_id = 10 //指定唯一的服務器id
從庫server2的my.cnf:
log_bin = mysql-bin
server_id = 2
relay_log = /var/lib/mysql/mysql-relay-bin//指定的中繼日志的位置和命名
log_slave_updates = 1//語序備庫將其重放的事件也記錄到自身的二進制日志中
read_only = 1//阻止任何沒有特權權限的線程修改數據
7.啟動復制
mysql>change master to master_host='server1',
->master_user = 'repl',
->master_password='p4ssword',
->master_log_file='mysql-bin.000001',
->master_log_pos=0;//日志開頭讀起
//啟動
mysql>start slave;
//檢查
mysql>show slave status\G