0. 企業(yè)高可用性標(biāo)準(zhǔn)(全年故障率)
99.9% ----> 0.001*365*24*60=525.6 min
99.99% ----> 0.0001*365*24*60=52.56 min
99.999% ----> 0.0001*365*24*60=5.256 min 金融級(jí)別
0.1企業(yè)級(jí)高可用方案
負(fù)載均衡:有一定的高可用性
LVS Nginx
主備系統(tǒng):有高可用性,但是需要切換,是單活的架構(gòu)
KeepAlive , MMM ,
MHA*****
真正高可用(多活系統(tǒng)):
MySQL NDB Cluster
Oracle RAC
Sysbase cluster
PXC ***
MGC ***
InnoDB Cluster(MGR)*****
1.主從復(fù)制的簡(jiǎn)介**
1.1. 基于二進(jìn)制日志復(fù)制的
1.2. 主庫的修改操作會(huì)記錄二進(jìn)制日志
1.3. 從庫會(huì)請(qǐng)求新的二進(jìn)制日志并回放,最終達(dá)到主從數(shù)據(jù)同步
1.4. 主從復(fù)制核心功能:
輔助備份,處理物理損壞
擴(kuò)展新型的架構(gòu):高可用,高性能,分布式架構(gòu)等
2.主從復(fù)制的前提(主從復(fù)制的規(guī)劃實(shí)施過程)
##2.1 至少兩個(gè)數(shù)據(jù)庫實(shí)例
##2.2 主庫要開啟binlog苏潜,不同的server_id,server_uuid
##2.3 主庫要有一個(gè)專門用作復(fù)制的用戶(replication slave)
##2.4 通過備份將資源庫數(shù)據(jù)補(bǔ)償?shù)綇膸?##2.5 告知從庫变勇,用戶名密碼恤左,ip贴唇,port,自動(dòng)復(fù)制的起點(diǎn)
##2.6 需要專門的復(fù)制線程(start slave)
3. 搭建主從復(fù)制
3.1搭建多實(shí)例環(huán)境
[root@db01 ~]# mysql -S /data/3307/mysql.sock
[root@db01 ~]# mysql -S /data/3308/mysql.sock
3.2 檢查 主庫binlog,不同server_id,server_uuid
[root@db01 ~]# mysql -S /data/3307/mysql.sock -e "select @@log_bin;select @@server_id"
[root@db01 ~]# mysql -S /data/3308/mysql.sock -e "select @@log_bin;select @@server_id"
3.3 主庫創(chuàng)建復(fù)制用戶
[root@db01 ~]# mysql -S /data/3307/mysql.sock -e "grant replication slave on *.* to repl@'10.0.0.%' identified by '123';"
[root@db01 ~]# mysql -S /data/3307/mysql.sock -e "select user,host from mysql.user where user='repl';"
3.4 通過備份將源庫數(shù)據(jù)補(bǔ)償?shù)綇膸?[root@db01 ~]# mysqldump -S /data/3307/mysql.sock -A -R -E --triggers --master-data=2 --single-transaction --max-allowed-packet=128M >/tmp/full.sql
3.5 告知從庫,用戶名,密碼,ip,port,自動(dòng)復(fù)制的起點(diǎn)
# change master to
[root@db01 ~]# mysql -S /data/3308/mysql.sock
oldguo[(none)]>help change master to
vim /tmp/full.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=444;
CHANGE MASTER TO
MASTER_HOST='10.0.0.51',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_PORT=3307,
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=444,
MASTER_CONNECT_RETRY=10;
3.6 啟動(dòng)主從線程
[root@db01 ~]# mysql -S /data/3308/mysql.sock
oldguo[(none)]>start slave;
3.7 檢測(cè)主從狀態(tài)
[root@db01 ~]# mysql -S /data/3308/mysql.sock -e "show slave status \G"|grep Yes
4.1 主從復(fù)制過程中涉及到的文件
主庫:
binlog 日志
/data/3307:
mysql-bin.000001
mysql-bin.000002
從庫:
relaylog 中繼日志
/data/3308/data
db01-relay-bin.000001
db01-relay-bin.000002
4.1.2 從庫:
relaylog 中繼日志
臨時(shí)存儲(chǔ)日志信息的文件
/data/3308/data
db01-relay-bin.000001
db01-relay-bin.000002
master.info 信息文件
主庫信息文件
relay-log.info 信息文件
中繼日志信息文件
4.2 主從復(fù)制中涉及到的線程
主庫:
Binlog_Dump_Thread(二進(jìn)制日志投遞線程)
[root@db01 /data/3308/data]# mysql -S /data/3307/mysql.sock -e "show processlist;"
從庫:
Slave_IO_Thread
Slave_SQL_Thread