復(fù)制
1.復(fù)制類(lèi)型
基于行的復(fù)制、基于語(yǔ)句的復(fù)制
2.復(fù)制原理
通過(guò)主庫(kù)上記錄二進(jìn)制日志慎皱、在備庫(kù)重放日志的方式來(lái)實(shí)現(xiàn)異步的數(shù)據(jù)復(fù)制涕蚤。并且無(wú)法保證主備之間的延遲淳玩。
3復(fù)制常用的用途
數(shù)據(jù)分布
負(fù)載均衡:將讀操作分布到多個(gè)服務(wù)器上二汛,實(shí)現(xiàn)對(duì)讀密集型應(yīng)用的優(yōu)化侨糟,一個(gè)機(jī)器名只想多個(gè)ip地址怠惶、網(wǎng)絡(luò)負(fù)載均衡解決方案、Linux虛擬服務(wù)器等方法轮傍。
備份:復(fù)制不等于備份暂雹,是備份的補(bǔ)充。
高可用性和故障切除:復(fù)制能夠幫助應(yīng)用程序避免mysql單點(diǎn)失敗创夜,縮短故障宕機(jī)時(shí)間杭跪。
mysql升級(jí)測(cè)試:使用一個(gè)更高版本的mysql作為悲苦,保證在升級(jí)全部實(shí)例前驰吓,查詢(xún)能夠在備庫(kù)按照預(yù)期執(zhí)行涧尿。
4復(fù)制如何工作
1)在主庫(kù)上把數(shù)據(jù)更改記錄到二進(jìn)制日志中。
2)備庫(kù)將主庫(kù)上的日志復(fù)制到自己的中繼日志中檬贰。
3)備庫(kù)讀取中繼日志中的事件姑廉,將其重放到備庫(kù)數(shù)據(jù)之上。
5配置復(fù)制
1)在每臺(tái)服務(wù)器上創(chuàng)建復(fù)制賬號(hào)翁涤;
2)配置主庫(kù)和備庫(kù)桥言;
3)通知備庫(kù)連接到主庫(kù)并從主庫(kù)復(fù)制數(shù)據(jù)
6給一個(gè)已經(jīng)運(yùn)行的服務(wù)器配置備庫(kù)
server1:192.168.0.1 server2:192.168.0.2
1)創(chuàng)建復(fù)制賬號(hào)
mysql>grant replication slave,replication client on *.* to relp@'192.168.0.%' identified by 'p4ssword';
//主庫(kù)和備庫(kù)都創(chuàng)建
2)配置主庫(kù)和備庫(kù)
主庫(kù)server1的my.cnf:
log_bin = mysql-bin //開(kāi)啟bin日志
server_id = 10 //指定唯一的服務(wù)器id
從庫(kù)server2的my.cnf:
log_bin = mysql-bin
server_id = 2
relay_log = /var/lib/mysql/mysql-relay-bin//指定的中繼日志的位置和命名
log_slave_updates = 1//語(yǔ)序備庫(kù)將其重放的事件也記錄到自身的二進(jìn)制日志中
read_only = 1//阻止任何沒(méi)有特權(quán)權(quán)限的線程修改數(shù)據(jù)
7.啟動(dòng)復(fù)制
mysql>change master to master_host='server1',
->master_user = 'repl',
->master_password='p4ssword',
->master_log_file='mysql-bin.000001',
->master_log_pos=0;//日志開(kāi)頭讀起
//啟動(dòng)
mysql>start slave;
//檢查
mysql>show slave status\G