centos7 mysql5.7 基于日志点复制

20 篇文章 1 订阅

mysql 5.7 主从复制分为基于日志点的复制和GTID 的复制,GTID 是从MySQL 5.6 开始支持的的一种新的复制方式。这里主要说下基于日志点的复制方式。基于日志点复制本身配置很简单,但因为环境不同可能躺过的坑也就不同,这里打算以centos7 虚拟机为例说下主要配置[在正式的服务器上配置会比在虚拟机上容易点,感觉虚拟机坑多一点]。

centos7 虚拟机下 Mysql5.7 的主从复制

环境

centos7( 最小化安装 ) ,mysql5.7-community 版本
前提:centos7 能上网 ,并且已经安装了mysql5.7-community 版本( 不一定是community 版本,但这里建议最好是mysql5.7)
centos7 启用网络参考:https://blog.csdn.net/zhang_referee/article/details/87479576
centos7 安装mysql5.7 参考:https://blog.csdn.net/zhang_referee/article/details/87904636

配置

  1. 在主DB服务器上建立复制账号
-- 创建virtual_repl账户
create user 'virtual_repl'@'192.168.1.107' identified by 'virtual_repl&xiaomuxizi';
-- 在ip段192.168.1.107上授予virtual_repl复制权限
grant replication slave on *.* to 'virtual_repl'@'192.168.1.107';

注:如果跟我这边一样,mysql 报密码不符合当前策略,可作如下更改

set global validate_password_policy=0;

在这里插入图片描述

  1. 配置主数据库服务器
    打开主库服务器/etc/my.cnf 配置文件加入以下配置即可
#replication config
log-bin=mysql-bin
binlog_format=mixed
server_id=104

注:server_id 在一个主从集群中必须是唯一的,一般为ip段后3位。 我这里主库服务器ip地址为:192.168.1.104 ,从库服务器地址为:192.168.1.107。

  1. 配置从数据库服务器
    打开从库服务器/etc/my.cnf 配置文件加入以下配置即可
log-bin=mysql-bin
relay_log=mysql-relay-bin
server_id=107

注:relay_log 是中继日志

  1. 分别重启主从数据库
    重启命令:
systemctl restart mysqld 

在这里插入图片描述

  1. 网络检测
    在正式服务器上这一步操作可以选择跳过
    在进行后续操作前,进行网络检测是必要的,以保证后续操作能够正常进行。
    确保两台主机能互通

这里可以使用ping 命令来检测在这里插入图片描述
检测从数据库服务器是否可以连接到主数据库服务器
可以在主数据库服务器建立一个测试账号,来验证是否可以从从服务器上登陆主服务器数据库。
登录主数据库服务器

创建测试账号:

grant all privileges on *.* to test@'%' identified by 'ZHANG&test';

刷新权限

flush privileges;

从数据库服务器上使用 主服务器上的test 账号进行登陆验证:
在这里插入图片描述
这是由于防火墙设置造成的,清一下防火墙

主数据库服务上执行以下命令

sudo iptables -F
  1. 初始化主数据库服务器数据
    这里指把主数据库的数据复制到从数据库,可以使用mysqldump 命令,这里跳过!

  2. 配置复制链路

    从数据库服务器上进行配置

change master to
master_host='master ip address',
master_user='master repl account user',
master_password='master repl account password',
master_log_file='master mysql-bin-log file',
master_log_pos='master mysql-bin-log file position';

注:以上信息根据自己的主数据库服务器进行配置,以上值可以主数据库服务器中查看得到。
在主数据库服务器中:

mysql> show master status ;
±-----------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±-----------------±------------------+
| mysql-bin.000004 | 1279 | | | |
±-----------------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)
在这里插入图片描述
故我这边change master to 具体语句为:

change master to
master_host='192.168.1.104',
master_user='virtual_repl',
master_password='virtual_repl&xiaomuxizi',
master_log_file='mysql-bin.000004',
master_log_pos=1279;

从数据库服务器中执行一遍:
在这里插入图片描述

  1. 启动复制链路
    在从数据库服务器上执行
start slave;

在这里插入图片描述
可以看到在从数据库服务器上多了两个线程,表示主从复制已建立完成。

主服务器也是
在这里插入图片描述

  1. 主从复制测试
    在主数据库服务器上新建一个数据库,并在新建的数据库中新间一个学生表,新增一条测试数据。
create database rep_test default charset = utf8;
use rep_test;

create table student(

	id int auto_increment,
	`name` varchar(256) not null default '',
	age tinyint unsigned not null default 0,
	gender tinyint unsigned not null default 0,
	primary key(id)
)engine = innodb charset = utf8;

在这里插入图片描述

insert into student(id,`name`,age,gender)values(1,'zhang',23,1);

查看从数据库服务器
在这里插入图片描述
注:这里并不是说,只有主数据库服务器插入了数据从数据库服务器才能同步,只要是在主数据库服务器上发生的写操作成功写入到了日志文件中,从数据库服务器都会进行同步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值