主從形式
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,則主從搭建成功
至此,mysql主從配置成功