資料庫主從同步、讀寫分離配置
資料庫主從同步、讀寫分離在處理高并發當中也是很重要到的一個單元,同時,資料庫主從同步、讀寫分離不但可以用來處理高并發,同時還可以擁有負載均衡、資料庫備份等功能;下面就我我自己在配置主從同步的步驟做一下記錄:
準備兩個資料庫
主資料庫IP :118.25.57.*;
從資料庫IP :111.231.197.;
前提
兩個資料庫建立相同的賬号和密碼
并且兩個資料庫的賬号都打開遠端控制
這裡 主從庫最好建立一個賬戶,專門使用者主從同步;
修改主資料庫配置檔案
vim /etc/my.cnf
在[mysqld]下加
//執行個體ID 不能和叢集中的其他MYSQL 執行個體一緻
server-id = 99
// bin log 檔案字首
log-bin=mysql-bin
// 對應要同步的資料庫
binlog-do-db-tongbu
//對應不需要同步的資料庫
binlog-ignore-db=mysql
binlog-ignore-db
binlog-ignore-db=information_schema
binlog-ignore-db=test
binlog-ignore-db=performance_schema
binlog-ignore-db=AAA_READ_THIS_MESSAGE
binlog-ignore-db=palyer
重新開機主資料庫
進入資料庫
cd /phpstudy/mysql/bin
./mysql -u root -p
輸入:
SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
±-----------------±---------±--------------±-----------------------------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
±-----------------±---------±--------------±-----------------------------------------------------------------------+
| mysql-bin.000013 | 107 | tongbu,palyer | mysql,information_schema,test,performance_schema,AAA_READ_THIS_MESSAGE |
±-----------------±---------±--------------±-----------------------------------------------------------------------+
表示配置成功
修改從資料庫配置檔案
vim /etc/my.cnf
在[mysqld]下加
#執行個體ID 不能和叢集中的其他MYSQL 執行個體一緻
server-id = 88
// bin log 檔案字首
log-bin=mysql-bin
// 對應要同步的資料庫
binlog-do-db-tongbu
// 對應不需要同步的資料庫
binlog-ignore-db=mysql
binlog-ignore-db
binlog-ignore-db=information_schema
binlog-ignore-db=test
binlog-ignore-db=performance_schema
binlog-ignore-db=AAA_READ_THIS_MESSAGE
binlog-ignore-db=palyer
注意:my.cnf配置檔案的權限不要給777,最好是給一個655 容許root 使用者使用就可以了
重新開機從資料庫
進入資料庫
cd /phpstudy/mysql/bin
./mysql -u root -p
從資料庫執行
CHANGE MASTER TO MASTER_HOST=‘118.25.57.227’,//主資料庫ip MASTER_PORT=3306,//主資料庫端口
MASTER_USER=‘root’,//主資料庫賬号
MASTER_PASSWORD=‘bdqn123456’,//主資料庫密碼
MASTER_LOG_FILE=‘mysql-bin.000011’,//主資料庫SHOW MASTER STATUS 這一步File 中的檔案名
MASTER_LOG_POS=107;//主資料庫SHOW MASTER STATUS 這一步 Position中的值
測試是否同步成功
從資料庫執行:
show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
當看到這兩項都顯示為YES 時表示同步成功。
錯誤處理:當主資料庫執行一條錯誤的sql語句 導緻執行錯誤,會報錯
在從執行這個指令 跳過這一條sql
set global sql_slave_skip_counter=1;
跳過這一個錯誤,然後執行從下一個事件組開始。
注解:最終要實作讀寫分離有兩個方法:第一使用資料庫中間件來自動分流sql 語句
第二:自己在寫背景代碼 server層的時候 讀寫分開連接配接不同的資料庫