1 ) mysql 主從復(fù)制 (實(shí)時(shí)與異步断傲,一主多從,一主一從)
備注:?jiǎn)蜗虿呗郧垂牛恢鲝谋旧砭褪且环N備份质涛,一般從就用于備份抱完;
主從不一致,解決辦法(特別支付類(lèi)型):
????????1) 出問(wèn)題期間的主節(jié)點(diǎn)中 bin-log御毅,恢復(fù)到備份節(jié)點(diǎn)上抡锈。
????????2) 雙寫(xiě)主
????????3) 程序?qū)憀og的1分鐘在內(nèi)存,主一但宕機(jī)
? ? ? ? 4) 異步改實(shí)時(shí)
a. 有利于數(shù)據(jù)庫(kù)健壯性瞬测,提高訪問(wèn)速度横媚,易于管理
b. 可以主從服務(wù)器互為備份
c. 讀寫(xiě)分離(程序?qū)崿F(xiàn),測(cè)試環(huán)境mysql-proxy,amoeba, 分布式dbproxy)
同步的時(shí)候有二個(gè)線程完成(IO線程月趟,SQL線程)灯蝴,主從復(fù)制依賴binlog
主節(jié)點(diǎn):IO線程
從節(jié)點(diǎn):IO線程,SQL線程(實(shí)時(shí)監(jiān)控relay-log)寫(xiě)到數(shù)據(jù)文件,master_info (bin-log信息)
1)? slave節(jié)點(diǎn)執(zhí)行start slave,開(kāi)啟主從開(kāi)關(guān)孝宗;
2)此時(shí)穷躁,slave節(jié)點(diǎn)的IO線程會(huì)通過(guò)在master上授權(quán)的復(fù)制用戶權(quán)限請(qǐng)求連接master節(jié)點(diǎn),并請(qǐng)求從指定binlog日志文件的指定位置(日志文件名和位置就是在配置主從復(fù)制節(jié)點(diǎn) 時(shí)執(zhí)行change master命令時(shí)指定的)之后發(fā)送binlog日志內(nèi)容
3) master在接受從節(jié)點(diǎn)IO線程請(qǐng)求后因妇,負(fù)載讀取從節(jié)點(diǎn)請(qǐng)求中binlog相關(guān)信息问潭,將指定binlog日志發(fā)送給從節(jié)點(diǎn);然后從節(jié)點(diǎn)更新masterinfo信息婚被,記錄binlog位置狡忙。
4)slave節(jié)點(diǎn)IO線程獲取到master的IO發(fā)送的日志,將寫(xiě)到relay-log(中繼日志)址芯,然后從節(jié)點(diǎn)sql線程將relay-log寫(xiě)到從節(jié)點(diǎn)的數(shù)據(jù)文件灾茁。
主節(jié)點(diǎn)/etc/my.cnf配置,從節(jié)點(diǎn)log-bin打不打開(kāi)都可以谷炸,最后把server-id分開(kāi)不要一樣即可
log-bin=/data/mysqldb/mysql-bin
server-id? ? ? = 1
主庫(kù)
GRANT REPLICATION SLAVE,FILE,RELOAD,SUPER ON *.* TO 'per'@'10.150.100.143' IDENTIFIED BY '123456';
#新建用戶給業(yè)務(wù)使用
grant all privileges on MOVIE_REPORT.* to 'MOVIE_REPORT'@'%'? identified by 'MOVIE_REPORT_2o1o';
flush privileges;
#鎖表(主節(jié)點(diǎn))
flush tables with read lock;(unlock tables)
#主節(jié)點(diǎn)備份
mysqldump -uroot -p123456 -S /usr/local/mysql/mysql.sock -A? -B --events|gzip >/opt/rep.sql.gz
#從節(jié)點(diǎn)導(dǎo)入
mysql -uroot -p123456 -S /usr/local/mysql/mysql.sock
CHANGE MASTER TO
MASTER_HOST = '10.150.100.144',
MASTER_USER = 'per',
MASTER_PASSWORD = '123456',
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000009',
MASTER_LOG_POS=106;
#啟動(dòng)復(fù)制
mysql> start slave;
change master to master_log_file='mysql-bin.000011', master_log_pos=1;
如果從節(jié)點(diǎn)這二線程為yes北专,則為正常(10.150.100.143 從節(jié)點(diǎn))
sql > show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#查看 bin-log信息
show master status;