mysql的异步复制

1.主从复制(基于position)
准备两台虚拟机server1做master节点,server2做slave节点,将数据库安装包复制上去。
在server1(master)上进行配置
yum install -y *.rpm安装mysql
在这里插入图片描述

vim /etc/my.cnf  (主节点数据库配置文件)
文件最后添加:
log-bin=mysql-bin
server-id=1
systemctl start mysqld(重启服务)

服务开启后自动生成密码,需要用自动生成的密码进行安全初始化,并设置新密码。
在这里插入图片描述

mysql_secure_installation(安全初始化)
此处使用初始密码登录,设置root密码
其他都选yes
mysql -uroot -pWestos+123
show databases;
CREATE USER 'repl'@'172.25.12.%' IDENTIFIED BY 'Westos+123';(创建用户用于远程登录数据库)
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.25.12.%';(授权为可以复制master节点数据的slave节点)
flush privileges;刷新
show master status;查看master节点的状态
mysql -h 172.25.12.1 -urepl -pWestos+123
看能否登录查看数据库(可以登录,但是没有查看的权限)

在server2主机上面(slave)进行配置
解压安装数据库

vim /etc/my.cnf开始配置备节点数据库
在最后面写入:
server-id=2
systemctl start mysqld
cat /var/log/mysqld.log | grep password复制密码
mysql_secure_installation进行安全初始化
利用初始密码登录,设置root密码

现在设置mysql的主从复制:
mysql> CHANGE MASTER TO在这个slave节点上面设置管理它的master节点
    -> MASTER_HOST='172.25.12.1',主机信息
    -> MASTER_USER='repl',用户
    -> MASTER_PASSWORD='Westos+123',密码
    -> MASTER_LOG_FILE='mysql-bin.000002',基于position的主从复制的重要信息
    -> MASTER_LOG_POS=1567;基于position的主从复制的重要信息
start slave;开启本节点的slave
show slave status\G;查看slave节点的状态

[root@server2 ~]# mysql -p
##查看所有的库
mysql> SHOW DATABASES;
##配置主库的信息
mysql> CHANGE MASTER TO MASTER_HOST='172.25.12.1',   ##主库的ip地址
MASTER_USER='repl',                                 ##主库的用户
MASTER_PASSWORD='Westos+123',                     ##主库用户的密码
MASTER_LOG_FILE='mysql-bin.000002',                 ##主库的日志文件
MASTER_LOG_POS=1567;                                 ##主库的状态码
mysql> 
mysql> START SLAVE;                                 ##开启从库
查看从库状态
mysql> SHOW SLAVE STATUS\G							##可以看到的当前两个进程都是yes,表示主库和从库的数据一致

在server1上创建数据库并添加内容
[root@server1 mysql]# mysql -p
mysql> CREATE DATABASE test;						##创建数据库test
mysql> USE test;									##进入到数据库test
mysql> SHOW TABLES;									##查看表
mysql> CREATE TABLE redhat (						##创建表redhat
    -> username varchar(10) not null,
    -> password varchar(15) not null);
mysql> DESC redhat;									##查看表的结构
mysql> INSERT INTO usertd VALUES ('user1','123');	##向表中插入信息
mysql> SELECT * FROM usertd;						##查看表的所有信息

create database westos;
use westos;
mysql> create table usertb(
    -> username varchar(10) not null,
    -> password varchar(20) not null);
desc usertb;
此时在server2上可以看见创建的表,在server1表中添加内容可以发现在sever2中可以同步。

2.gtid的主从复制

在server1(master)上面进行配置
vim /etc/my.cnf
gtid_mode=ON
enforce-gtid-consistency=true   #添加gtid的信息
mysql -uroot -pWestos+123
use mysql;
select * from gtid_executed;        #查看内容
cd /var/lib/mysql
mysqlbinlog mysql-bin.000002
cat auto.cnf                               #查看改节点的uuid
systemctl restart mysqld
在server2(slave节点)上面进行配置
vim /etc/my.cnf
gtid_mode=ON
enforce-gtid-consistency=true#添加gtid的信息
systemctl restart mysqld
mysql -uroot -pWestos+123
show databases;
stop slave;
change master to master_host='172.25.12.1',master_user='repl',master_password='Westos+123',master_auto_position=1;
start slave;
show slave status\G;
在server1上面写入数据
show databases;
use westos
insert into usertb values ('user2','123');
insert into usertb values ('user3','123');
在server2上面查看gtid的信息
show slave status\G;
在server1上面查看gtid的信息
use mysql
select * from gtid_+executed;
在server2上面查看复制过来的数据
use mysql
select * from mysql.gtid_executed;
发现slave完成了master的所有事件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值