mysql driver 读写分离_Mysql主从复制和读写分离实践
1、主從復制
原理
MySQL之間數據復制的基礎是二進制日志文件(binary log file)。一臺MySQL數據庫一旦啟用二
進制日志后,其作為master,它的數據庫中所有操作都會以“事件”的方式記錄在二進制日志中,其他
數據庫作為slave通過一個I/O線程與主服務器保持通信,并監控master的二進制日志文件的變化,如
果發現master二進制日志文件發生變化,則會把變化復制到自己的中繼日志中,然后slave的一個
SQL線程會把相關的“事件”執行到自己的數據庫中,以此實現從數據庫和主數據庫的一致性,也就實
現了主從復制。
實踐
準備工作
主數據庫服務器(master):192.168.128.164,MySQL已經安裝,并且無應用數據。
從數據庫服務器(slave):192.168.128.167,MySQL已經安裝,并且無應用數據。
主數據庫master配置
修改mysql配置文件
重啟mysql,并創建用于同步的用戶賬號
vi /etc/my.cnf
在[mysqld]部分插入以下兩行配置
log-bin=mysql-bin #開啟二進制日志
server-id=1 #設置server-id 需唯一
1
2
打開mysql會話shell
mysql -uroot -proot
創建用戶:用戶:slave 密碼:slave
注意:ip為slave的地址
CREATE USER 'slave'@'192.168.128.167' IDENTIFIED BY 'slave';
1
分配權限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.128.167';
flush privileges; #刷新權限
1
2
查看master狀態,并記錄二進制文件名(mysql-bin.000001)位置(106)
從數據庫slave配置
修改mysql配置文件
重啟mysql,打開mysql會話,執行同步SQL語句(需要主服務器主機名,登陸憑據,二進制文件的名稱和位置)
啟動slave同步進程
查看slave狀態
重啟服務
service mysqld restart
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
1
2
3
4
5
6
7
8
vi /etc/my.cnf
在[mysqld]部分插入以下一行配置
server-id=2 #設置server-id 需唯一
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.128.164',
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=106;
1
2
3
4
5
6
7
start slave;
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.128.164
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 106
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 251
1
2
3
4
5
6
7
8
9
10
11
主從配置完成,可以通過主庫建庫,建表,插入數據測試
讀寫分離
Mysql新版驅動類ReplicationDriver實現讀寫分離
準備工作,需搭建好mysql主從集群
實現目標
使數據寫入到master
讀數據時,從slave中讀取
原理
使用mysql驅動自帶的replicationDriver來實現,replicationDriver簡單來說就是存在
兩個Connection,一個masterConnection,一個slaveConnection;當
setReadonly(true)就把currentConnection=slaveConnection,反之設置為
masterConnection
觸發條件
讀操作需設置 readOnly 為 true
實現步驟
applicationContext.xml
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
讀操作需設置readonly=true
測試
數據庫中間件
如:mysql-proxy、mycat等
---------------------
作者:Elk_love_madness
原文:https://blog.csdn.net/qq_38928944/article/details/85341616
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的mysql driver 读写分离_Mysql主从复制和读写分离实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 空间连接时计算总和_学习CALCULAT
- 下一篇: java 翻转句子_Java编程-句子反