MySQL异步复制


准备工作

两台环境干净的rhel7版本虚拟机,数据库的压缩包

基于position的主从复制

解档并安装MySQL

tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar

yum install -y mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community-common-5.7.24-1.el7.x86_64.rpm mysql-community-libs-5.7.24-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-server-5.7.24-1.el7.x86_64.rpm

主库

编辑配置文件

vim /etc/my.cnf

log-bin=mysql-bin	
server-id=1


其中
log-bin=mysql-bin	##文档最后加,二进制日志复制,id号来区分主机
systemctl start mysqld   启动mysql
cat /var/log/mysqld.log | grep password   查看生成一个临时密码

在这里插入图片描述
尝试连接,但是发现不能查看库

mysql> show databases;   

在这里插入图片描述
安全初始化

mysql_secure_installation
执行初始化命令后,要求输入初始化密码,新密码要求有大小写,数字,特殊字符,其他全选y
完成后可以登录数据库

在这里插入图片描述
创建并授权用来做复制的用户

在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。用户名的密码都会存储在文本文件master.info中

mysql> grant replication slave on *.* to repl@'172.25.136.%' identified by 'Wsp+123ld';
mysql> show plugins;	##查看插件,因为有密码插件,所以密码必须设置为复杂的
mysql> show master status;	##查看master状态

在这里插入图片描述

从库

初始化mysql

vim /etc/my.cnf

server-id=2	

启动mysql

systemctl start mysqld

在物理机上尝试连接master的数据库,测试repl帐号

mysql -h 172.25.136.1 -urepl -pWsp+123ld
可以登录,但是查看不到任何信息,因为没有权限

在这里插入图片描述
在server2上配置master信息

mysql> change master to master_host='172.25.70.13', master_user='repl', master_password='Wsp+123ld', master_log_file='mysql-bin.000002', master_log_pos=1004;

MASTER_LOG_POS 它是日志的开始位置
其中master_log_file和maMASTER_LOG_POS的值为0,
因为它是日志的开始位置ster_log_pos写在server1上执行show master status看到的信息

mysql> start slave;

mysql> show slave status\G	##查看主从复制状态

在这里插入图片描述

测试

创建新数据测试主从同步是否生效
注意:写操作只能在master节点上做,因为master节点不会去同步slave节点的内容

mysql> create database westos;	##在server2上发现也能看到westos库
mysql> use westos
mysql> create table usertb (username varchar(10) not null,password varchar(15) not null);	##建表

mysql> desc usertb;	##查看表信息

mysql> insert into usertb values ('user1','123');	##插入数据

mysql> select * from usertb;	##查看

show variables like 'log_%'; #查看二进制日志
主库中mysqlbinlog mysql-bin.000002	可以看到之前做的操作

在这里插入图片描述

基于gtid的主从复制

主库

vim /etc/my.cnf	
	
log-bin=mysql-bin	
server-id=1
gtid_mode=ON
enforce-gtid-consistency=true

开启并进入数据库

systemctl start mysqld
mysql> grant replication slave on *.* to repl@'172.25.70.%' identified by 'Wsp+123ld';
mysql> show plugins;	
mysql> show master status;	

从库

编辑配置文件

vim /etc/my.cnf         
server-id=2
gtid_mode=ON
enforce-gtid-consistency=true

启动数据库

systemctl start mysqld	重启

如果前面已经部署过主从复制,需要先停止slave,
mysql> stop slave;	##先停止复制

mysql> CHANGE MASTER TO		
    -> MASTER_HOST = '172.25.70.13',
    -> MASTER_USER = 'repl',
    -> MASTER_PASSWORD = 'Westos@123',
    -> MASTER_AUTO_POSITION = 1;	
    ##启用gtid,它是自动的

mysql> start slave;

mysql> show slave status\G	##查看状态,可以看到下面两个参数是空的
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试

在主库上插入数据
在这里插入图片描述

在从库上查看数据
在这里插入图片描述
在从库上查看状态,发现这两个参数变了,Retrieved_Gtid_Set:,Executed_Gtid_Set:
在这里插入图片描述

再查看gtid模式复制的起始和结束位置

mysql> use mysql

mysql> select * from gtid_executed;

在这里插入图片描述

小结

相同点:都需要主库授权,从库配置主库信息才可以实现主从复制
不同点:
1.配置文件参数不同
2.配置主库信息时的参数不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值