MySQL主從模式可以從一個MySQL數據庫服務器主節點複製到一個或多個從節點。本文使用 半同步複製模式 。
mysql主從複製用途:
- 實時災備,用於故障切換(高可用)
- 讀寫分離,提供查詢服務(讀擴展)
- 數據備份,避免影響業務(高可用)
主從部署必要條件:
- 從庫服務器能連通主庫
- 主庫開啓binlog日誌(設置log-bin參數)
- 主從server-id不同
1.軟件版本和環境:
系統:CentOS7系統
軟件 mysql5.7.30安裝包:mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar
2.各個機器IP和角色
172.18.0.12 – master主庫 --負責數據寫入
172.18.0.13 – slaver從庫1—負責數據讀取
172.18.0.14 – slaver從庫2 —負責數據讀取
2.安裝過程:
1.mysql主從數據庫安裝
-
安裝mysql相關程序包
rpm -ivh mysql-community-common-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm
-
2.初始化數據庫,啓動mysql服務
mysqld --initialize --user=mysql 通過 cat /var/log/mysqld.log 查看初始化的root用戶密碼 systemctl start mysqld.service
-
master主庫配置
1.設置master主庫my.cof文件 [mysqld] # log_bin server-id=1 log_bin=mysql-bin //開啓二進制日誌 sync-binlog=1 relay-log=mysql-relay-log //開啓中繼日誌 skip_name_resolve //關閉名稱解析(非必須) binlog-ignore-db=information_schema //不進行同步的庫 binlog-ignore-db=sys //不進行同步的庫 binlog-ignore-db=performance_schema //不進行同步的庫 2.重啓數據庫 systemctl restart mysqld 3.授權訪問 grant replication slave on *.* to 'root'@'%' identified by 'root'; grant all privileges on *.* to 'root'@'%' identified by 'root'; flush privileges; 4.查看狀態 show master status; 記住文件名和pos值,從庫設置時需要用到。
-
slaver從庫配置
1.配置my.cof文件 [mysqld] # log_bin server-id=2 #開啓中繼日誌 relay-log=mysql-relay-bin #開啓二進制日誌 log-bin=mysql-bin #啓用只讀屬性 read_only=1 #是否自動清空不再需要中繼日誌 relay_log_purge = 0 #關閉名稱解析(非必須) skip_name_resolve #使得更新的數據寫進二進制日誌中 log_slave_updates = 1 2.重啓數據庫 systemctl restart mysqld 3.配置從庫同步的主庫信息 change master to master_host='172.18.0.12',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=869; 4.用主城複製 start slave;
2.mysql主從半同步複製設置
- master主庫設置
//安裝半同步插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
//查看半同步設置
mysql> show variables like '%semi%';
//啓用半同步複製
mysql> set global rpl_semi_sync_master_enabled=1;
//啓用1秒鐘同步一次
mysql> set global rpl_semi_sync_master_timeout=1000;
- slaver庫設置
//安裝半同步插件
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
//啓用半同步複製
mysql> set global rpl_semi_sync_slave_enabled=1;
2.測試主從半同步複製
-
主庫添加記錄
-
從庫查看記錄
-
查看日誌
已進行半同步複製。