(7)資料庫讀寫分離,主從同步實現方法(資料庫設定)
實現思路
通過設定主從資料庫實現讀寫分離,主資料庫負責“寫操作”,從資料庫負責“讀操作”,根據壓力情況,從資料庫可以部署多個提高“讀”的速度,藉此來提高系統總體的效能。
基礎知識
要實現讀寫分離,就要解決主從資料庫資料同步的問題,在主資料庫寫入資料後要保證從資料庫的資料也要更新。主從資料庫同步的實現思路如圖:
主伺服器master記錄資料庫操作日誌到Binary log,從伺服器開啟i/o執行緒將二進位制日誌記錄的操作同步到relay log(存在從伺服器的快取中),另外sql執行緒將relay log日誌記錄的操作在從伺服器執行。
記住這張圖,接下來基於這個圖實際設定主從資料庫。
主從資料庫設定的具體步驟
首先要有兩個資料庫伺服器master、slave(也可以用一個伺服器安裝兩套資料庫環境執行在不同埠,slave也可以舉一反三設定多個),我們窮人就買虛擬雲伺服器玩玩就行 0.0。以下操作假設你的兩臺伺服器上都已經安裝好了mysql服務。
1.開啟mysql資料庫配置檔案
vim /etc/my.cnf
2.在主伺服器master上配置開啟Binary log,主要是在[mysqld]下面新增:
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
如圖:
3.重啟mysql服務
service mysql restart ps:重啟方式隨意
4.檢查配置效果,進入主資料庫並執行
mysql> SHOW MASTER STATUS;
可以看到下圖表示配置沒問題,這裡面的File名:master-bin.000001 我們接下來在從資料庫的配置會使用:
5.配置從伺服器的 my.cnf
在[mysqld]節點下面新增:
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
這裡面的server-id 一定要和主庫的不同,如圖:
配置完成後同樣重啟從資料庫一下 : service mysql restart
6.接下來配置兩個資料庫的關聯
(1)首先我們先建立一個操作主從同步的資料庫使用者,切換到主資料庫執行:
mysql>createuser repl;
mysql> GRANT REPLICATION SLAVEON*.*TO'repl'@'從xxx.xxx.xxx.xx'IDENTIFIEDBY'mysql';
mysql> flush privileges;
這個配置的含義就是建立了一個資料庫使用者repl,密碼是mysql, 在從伺服器使用repl這個賬號和主伺服器連線的時候,就賦予其REPLICATION SLAVE的許可權, *.* 表面這個許可權是針對主庫的所有表的,其中xxx就是從伺服器的ip地址。
(2)進入從資料庫後執行:mysql> change master to master_host='主xxx.xxx.xxx.xx',master_port=3306,master_user='repl',master_password='mysql',master_log_file='master-bin.000001',master_log_pos=0;
這裡面的xxx是主伺服器ip,同時配置埠,repl代表訪問主資料庫的使用者,上述步驟執行完畢後
(3)執行start slave啟動配置:mysql> start slave;
停止主從同步的命令為:
mysql>stopslave;
檢視狀態命令,\G表示換行檢視
mysql> show slave status\G;
可以看到狀態如下:
這裡看到從資料庫已經在等待主庫的訊息了,接下來在主庫的操作,在從庫都會執行了。我們可以主庫負責寫,從庫負責讀(不要在從庫進行寫操作),達到讀寫分離的效果。
我們可以簡單測試:
在主資料庫中建立一個新的資料庫:
mysql>createdatabase testsplit;
在從資料庫檢視資料庫:
mysql> show databases;
可以看到從資料庫也有testsplit這張表了,這裡就不上圖了,親測可用。在主資料庫插入資料,從資料庫也可以查到。 至此已經實現了資料庫主從同步
相關文章
- 資料庫讀寫分離,主從同步實現方法資料庫主從同步
- Spring實現資料庫讀寫分離Spring資料庫
- 資料庫讀寫分離資料庫
- 大資料資料庫讀寫分離分庫分表大資料資料庫
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- Spring Aop實現資料庫讀寫分離Spring資料庫
- 資料庫的讀寫分離資料庫
- 資料庫讀寫分離Master-Slave資料庫AST
- Discuz!NT資料庫讀寫分離方案資料庫
- 讀寫分離的的資料同步?
- [資料庫]MYSQL主從同步資料庫MySql主從同步
- 資料庫治理利器:動態讀寫分離資料庫
- 資料庫中介軟體sharding-jdbc實現讀寫分離資料庫JDBC
- mysql資料庫資料同步/主從複製的配置方法MySql資料庫
- Spring+Hibernate框架下MySql讀寫分離,主從資料庫配置 (轉)Spring框架MySql資料庫
- mysql讀寫分離實戰二-windows 上mysql主從資料庫搭建及問題總結MySqlWindows資料庫
- Spring動態資料來源+Mybatis攔截器實現資料庫讀寫分離SpringMyBatis資料庫
- MYSQL資料庫主從同步(一主一從)MySql資料庫主從同步
- 直播賣貨系統,如何實現mysql資料庫的讀寫分離MySql資料庫
- golang saas框架,資料庫級別隔離、讀寫分離Golang框架資料庫
- MySQL怎麼實現主從同步和Django實現MySQL讀寫分離MySql主從同步Django
- 深度:微服務化的資料庫設計與讀寫分離微服務資料庫
- linux下mysql主從複製,實現資料庫同步LinuxMySql資料庫
- 搭建 mariadb 資料庫主從同步資料庫主從同步
- 使用Spring實現訪問主從資料庫的讀寫和只讀事務/事物的分離路由 -Vlad MihalceaSpring資料庫路由
- springboot多資料來源配合docker部署mysql主從實現讀寫分離Spring BootDockerMySql
- 資料庫的讀寫分離與負載均衡策略資料庫負載
- 【資料庫訪問優化方案之讀寫分離】資料庫優化
- OneProxy5.8.1資料庫讀寫分離特性試驗資料庫
- Discuz!NT3.1 資料庫讀寫分離 程式碼資料庫
- 搭建MySQL主從實現Django讀寫分離MySqlDjango
- mysql資料庫實現主從複製MySql資料庫
- 帶貨直播系統,透過主從同步實現讀寫分離主從同步
- Mysql 資料庫主庫,備庫實時同步配置MySql資料庫
- MySQL從庫卡主了--讀寫分離也不能亂讀MySql
- 通過STANDBY資料庫實現讀寫分離時索引過多的問題資料庫索引
- 淺談高效能資料庫叢集——讀寫分離資料庫
- 使用Spring AOP切面解決資料庫讀寫分離Spring資料庫