MySQL集群


19. Mysql復制

19.1 復制概述

復制是指將主數據庫的DDL 和 DML 操作通過二進制日志傳到從庫服務器中,然后在從庫上對這些日志重新執行(也叫重做),從而使得從庫和主庫的數據保持同步。

MySQL支持一台主庫同時向多台從庫進行復制, 從庫同時也可以作為其他從服務器的主庫,實現鏈狀復制。

19.2 復制原理

MySQL 的主從復制原理如下。

從上層來看,復制分成三步:

  • Master 主庫在事務提交時,會把數據變更作為時間 Events 記錄在二進制日志文件 Binlog 中。
  • 主庫推送二進制日志文件 Binlog 中的日志事件到從庫的中繼日志 Relay Log 。
  • slave重做中繼日志中的事件,將改變反映它自己的數據。

19.3 復制優勢

MySQL 復制的有點主要包含以下三個方面:

  • 主庫出現問題,可以快速切換到從庫提供服務。
  • 可以在從庫上執行查詢操作,從主庫中更新,實現讀寫分離,降低主庫的訪問壓力。
  • 可以在從庫中執行備份,以避免備份期間影響主庫的服務。

19.4 搭建步驟

19.4.1 master

1) 在master 的配置文件(/etc/my.cnf)中,配置如下內容:

#mysql 服務ID,保證整個集群環境中唯一
server-id=1

#mysql binlog 日志的存儲路徑和文件名
log-bin=/var/lib/mysql/mysqlbin

#錯誤日志,默認已經開啟
#log-err

#mysql的安裝目錄
#basedir

#mysql的臨時目錄
#tmpdir

#mysql的數據存放目錄
#datadir

#是否只讀,1 代表只讀, 0 代表讀寫
read-only=0

#忽略的數據, 指不需要同步的數據庫
binlog-ignore-db=mysql

#指定同步的數據庫
#binlog-do-db=db01

2) 執行完畢之后,需要重啟Mysql:

service mysql restart ;

3) 創建同步數據的賬戶,並且進行授權操作:為了完成主從復制

grant replication slave on *.* to 'wyz'@'%' identified by  'Wyz123.com'
flush privileges;

-- 主服務器的ip是1.14.103.243
-- 從服務器的ip是10.0.0.51

4) 查看master狀態:

show master status;

字段含義:

File : 從哪個日志文件開始推送日志文件 
Position : 從哪個位置開始推送日志
Binlog_Ignore_DB : 指定不需要同步的數據庫

19.4.2 slave

1) 在 slave 端配置文件中,配置如下內容:

#mysql服務端ID,唯一
server-id=2

#指定binlog日志
log-bin=/var/lib/mysql/mysqlbin

2) 執行完畢之后,需要重啟Mysql:

systemctl mysql restart;

3) 執行如下指令 :

change master to master_host='1.14.103.243',master_user='wyz',master_password='Wyz123.com',master_log_file='mysqlbin.000003',master_log_pos=154;
-- 指定主節點的ip,賬戶,密碼,二進制日志文件名稱,以及從哪一行開始同步

指定當前從庫對應的主庫的IP地址,用戶名,密碼,從哪個日志文件開始的那個位置開始同步推送日志。

4) 開啟同步操作

start slave;

show slave status \G;

5) 停止同步操作

stop slave;

19.4.3 驗證同步操作

1) 在主庫中創建數據庫,創建表,並插入數據 :

create database db01;

use db01;

create table user(
	id int(11) not null auto_increment,
	name varchar(50) not null,
	sex varchar(1),
	primary key (id)
)engine=innodb default charset=utf8;

insert into user(id,name,sex) values(null,'Tom','1');
insert into user(id,name,sex) values(null,'Trigger','0');
insert into user(id,name,sex) values(null,'Dawn','1');

2) 在從庫中查詢數據,進行驗證 :

在從庫中,可以查看到剛才創建的數據庫:

在該數據庫中,查詢user表中的數據:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM