企業級Mysql數據庫集羣--Mysql異步複製

異步複製

異步複製是MySQL自帶的最原始的複製方式,主庫和備庫成功建立複製關係後,在備庫上會有一個IO線程去主庫拉取binlog,並將binlogx到本地,然後備庫會開啓另外一個SQL線程取回放Relay log,通過這種方式達到Master-Slave數據同步的目的

通常情況下,slave是隻讀的,可以承擔一部分讀流量,而且可以根據實際需要,添加一個或者多個slave,這樣在一定程度上可以緩解主庫的讀壓力

另一方面,若Master出現異常(crash,硬件故障等),無法對外提供服務,此時Slave可以承擔起master的重任,避免了單點的產生,所以複製就是爲容災和提高性能而生

基於Position的主從複製

需要找到binlog(MASTER_LOG_FILE)和POS點(MASTER_LOG_POS)

主庫

ip:192.168.1.1/24
host:server1

1、mysql-*.rpm

獲取安裝包

2、tar zvf mysql-*.rpm

3、yum install -y mysql-community-client-*.rpm mysql-community-common-*.rpm mysql-community-server-*.rpm mysql-community-libs*.rpm mysql-community-libs-compat-*.rpm

4、grep password /var/log/mtsqld.log

查看初始密碼

5、mysql_secure_installation

數據庫安全初始化

6、vim /etc/my.cnf

29 log-bin=mysql-bin

30 server-id=1

7、systemctl start mysqld

8、mysql -uroot -p*

進入數據庫

9、grant replication slave on *.* to leon@'192.168.1.%' identified by 'Wps+123ld';

10、show master status;

File:mysql-bin.*

Position:*

從庫

ip:192.168.1.2/24

host:server2

1、mysql-*.rpm

獲取安裝包

2、tar zvf mysql-*.rpm

3、yum install -y mysql-community-client-*.rpm mysql-community-common-*.rpm mysql-community-server-*.rpm mysql-community-libs-*.rpm mysql-community-libs-compat-*.rpm

4、grep password /var/log/mtsqld.log

查看初始密碼

5、mysql_secure_installation

數據庫安全初始化

6、vim /etc/my.cnf

29 server-id=2

7、systemctl start mysqld

8、mysql -uroot -p*

9、change master to master_host='192.168.1.1',master_user='leon',master_password='Wps+123ld',master_log_file='mysql-bin.*'(server1 master File),master_log_pos=*(server1 master Position);

10、start slave;

11、show slave status\G;

查看從庫(server2)是否連接主庫(server1)

Slave_IO_Rumming:Yes

Slave_SQL_Rumming:Yes

測試

主庫生成數據

1、mysql -uroot -p*

2、show databases;

3、cerate database testdata;

4、use testdata;

5、create table user (username varchar(20) not null, password varchar(20) not null);

6、desc user;

查看user表結構

7、insert into user values('user1','123456');

8、select * from user;

查看user表數據

從庫查看數據

1、mysql -uroot -p*

2、show databases;

發現test數據庫

3、use test;

進入test數據庫

4、select * from user;

查看user表數據

基於Gtid的主從複製

Gtid複製不像傳統的複製方式(異步複製、半同步複製)需要找到binlog(MASTER_LOG_FILE)和POS點(MASTER_LOG_POS)

只需要知道master的IP、端口、賬號、密碼即可,因爲複製是自動的,MySQL會通過內部機制Gtid自動找點同步

和基於Position的主從複製的不同之處在於:它是以一整個事件爲單位進行復制的

主庫

vim /etc/my.cnf

啓用gtid模塊

在這裏插入圖片描述

systemctl restart mysqld

從庫

vim /etc/my.cnf

啓用gtid模塊

在這裏插入圖片描述

systemctl restart mysqld

mysql -uroot -p*

stop slave;

change master to master_host='172.25.30.1',master_user='leon',master_password='Wps+123ld',master_auto_position=1;

從第一件事情開始跟蹤

start slave;

show slave status\G;

在這裏插入圖片描述

在這裏插入圖片描述

測試

主庫

mysql -uroot -p*

use westos;

westos數據庫已生成內已有usertb表

insert into usertb values ('user2','123');

insert into usertb values ('user3','123');

插入兩組數據

從庫

mysql -uroot -p*

show slave status\G;

在這裏插入圖片描述

select * from usertab;
數據複製成功
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章