企业级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;
数据复制成功
在这里插入图片描述

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