主從形式
mysql主從複製:
一主一從
主主複製
一主多從---擴展系統讀取的性能,因爲讀是在從庫讀取的;
多主一從---5.7開始支持
聯級複製---
用途及條件
mysql主從複製用途
實時災備,用於故障切換 讀寫分離,提供查詢服務 備份,避免影響業務(備可用性和容錯行) 負載平衡
主從部署必要條件:
主庫開啓binlog日誌(設置log-bin參數) 主從server-id不同 從庫服務器能連通主庫
主從原理
庫生成兩個線程,一個I/O線程,一個SQL線程;
I/O線程去請求主庫 的binlog,並將得到的binlog日誌寫到relay log(中繼日誌) 文件中;
主庫會生成一個 log dump 線程,用來給從庫 i/o線程傳binlog;
SQL 線程,會讀取relay log文件中的日誌,並解析成具體操作,來實現主從的操作一致,最終數據一致;
配置信息
Mysql主服務器:
版本:mysql Ver 14.14 Distrib 5.7.20
IP:192.168.168.226
PORT:3306
Mysql從服務器
版本:mysql Ver 14.14 Distrib 5.7.20
IP:192.168.168.227
PORT:3306
服務器:
CentOS 7
搭建步驟
登錄主服務器,執行如下命令:
mysql -u root -p
提示密碼安全策略問題:
set global validate_password_policy=0;
grant replication slave on *.* TO 'backup'@'192.168.168.227' identified by 'Likang123qwe';
flush privileges
編輯主服務器的數據庫配置文件信息my.cnf
vi /etc/my.cnf
添加如下信息:
server-id=226
log_bin=/var/log/mysql/mysql-bin.log
read-only=0
binlog-do-db=test
binlog-ignore-db=mysql
登錄從服務器,執行如下命令:
編輯從服務器的數據庫配置文件信息:my.cnf
vi /etc/my.cnf
server-id=227
log_bin=/var/log/mysql/mysql-bin.log
重啓主服務器
service mysqld restart
提示如下信息:
修改:
進入/var/log/文件夾下,新建文件mysql,進入mysql目錄,新建文件mysql-bin.log文件,並賦予讀寫權限(mysql和mysql-bin.log)登錄主服務器,查看master狀態
show master status\G;
登錄從服務器,設置主從關係
change master to master_host='192.168.168.226',master_user='backup',master_password='Likang123qwe',master_log_file='mysql-bin.000001',master_log_pos=154;
查看從服務器的主從關係狀態
show slave status\G;
主服務器下執行
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
從服務器下執行
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
如果主從庫中不存在test庫,則需要重新建庫,然後重啓,重新構建主從關係
從服務器下
Slave_IO_Running: Yes
Slave_SQL_Running: Yes如果都爲yes,則主從搭建成功