數(shù)據(jù)庫不能承擔起系統(tǒng)的高并發(fā)要求時提佣,可以在用讀寫分離,實時的熱備份算撮,進行一主多從,從機承擔大量的讀取請求萍鲸,而主機負責寫入。
由主機產(chǎn)生二進制文件擦俐,從機進行讀取并執(zhí)行從而進行數(shù)據(jù)同步脊阴。
由于存在一定時間的延遲,那么這樣還是適用于多讀少寫蚯瞧,或者對數(shù)據(jù)的實時性要求不是很高的網(wǎng)站嘿期。
數(shù)據(jù)架構(gòu)可以是
一主多從,每個從機于主機直連埋合。
一主多從备徐,從機還能做為主機進行鏈式的鏈接,減少主機的日志讀取壓力甚颂,同時當主機宕機后蜜猾,從機可以上來承擔起主機的責任秀菱,只需要切換到新的主機。
采用docker進行啟動多個mysql實例進行操作蹭睡。
-
準備工作
- docker pull mysql
- 啟動鏡像
docker run -d -e MYSQL_ROOT_PASSWORD=root --name mysql-test mysql
- 連接鏡像 安裝vim衍菱,并提交新tag
docker exec -t -i mysql-test bin/sh
apt-get update
apt-get install vim
exit;
docker commit -m 'mysql install vim' mysql-test mysql:init
-
設置主機
docker run -d --name mysql-master -v /root/mysql/master:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:init
連接主機實例,進入/etc/mysql/conf.d,編輯docker.cnf
在[mysqld]下面添加server-id=1 //給數(shù)據(jù)庫服務的唯一標識肩豁,一般為大家設置服務器Ip的末尾號 log-bin=master-bin log-bin-index=master-bin.index
新建用戶連接該機器mysql脊串,創(chuàng)建一個用戶‘repl’,并允許其他Slave服務器可以通過遠程訪問Master清钥,通過該用戶讀取二進制日志洪规,實現(xiàn)數(shù)據(jù)同步。
create user repl; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'mysql';
查看 master 的日志
SHOW MASTER STATUS;
-
設置從機
啟動鏡像實例docker run -d --name mysql-slave -v /root/mysql/slave:/var/lib/mysql -p 3307:3306 -link mysql-master:master -e MYSQL_ROOT_PASSWORD=root mysql:init
連接主機實例循捺,進入/etc/mysql/conf.d,編輯docker.cnf,在【mysqld】下面添加
server-id=2 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin
重啟mysql
docker stop mysql-slave
docker start mysql-slave
連接從機mysql
建立從機與主機的鏈接change master to master_host='master', //Master 服務器Ip master_port=3306, master_user='repl', master_password='mysql', master_log_file='master-bin.000001',//Master服務器產(chǎn)生的日志 master_log_pos=0; start slave;//開啟從機
讀寫分離,配置完成雄人〈娱伲可以進行測試了。