mysql5.7主从复制搭建

简介

主从复制就是有两台数据库,一台作为主库,一台作为从库,从库会根据主库的binlog将数据复制过来,从而达到主从数据库数据保持一致的效果。主要用途如下:

  1. 起到备份数据的作用,主库出现问题,从库还能有数据,不至于数据丢失。
  2. 主从的架构可以做读写分离,主库写,从库读,分摊数据库压力,提高效率。

环境准备

本次只用两台虚拟机演示主从复制,从库可以有多个。

操作系统Centos7,数据库mysql5.7

ip

角色

192.168.32.132

主库

192.168.32.133

从库

 

主库配置

打开主库mysql配置文件

vim /etc/my.cnf

增加如下配置

#主从之间保证唯一即可,一般都是用ip最有一位
server_id=1
#开启binlog,binlog 日志件会以my-bin作为前缀
log-bin=my-bin
#只记录指定数据库的二进制日志,默认全部记录
binlog-do-db=TestDB
#不复制数据库系统自带的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#忽略错误,如1062主键冲突,当在从库插入数据后又在主库插入数据,之后同步会出错
#可以给用户授予最小的权限,避免这个问题
slave_skip_errors=1062
mysql5.7主从复制搭建
主库MySQL配置

重启mysql

systemctl restart mysqld

创建测试数据库并插入测试数据

CREATE DATABASE `TestDB` DEFAULT CHARACTER 
SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `TestDB`;
CREATE TABLE `User` (
    `Id` BIGINT ( 20 ) NOT NULL AUTO_INCREMENT,
    `Name` VARCHAR ( 255 ) CHARACTER 
    SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
    PRIMARY KEY ( `Id` ) USING BTREE 
) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER 
SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `User`(`Name`)
VALUES
    ( '张三' ),(
    '李四')
mysql5.7主从复制搭建
测试数据库

备份数据库用于初始化从库,保证主从数据库起始状态一致

由于测试数据库比较简单,数据较少,可以直接在从库上执行上面的创建测试库语句也是一样的

mysqldump - u root - p --d atabases TestDB > TestDB.SQL

登录mysql查看master状态

SHOW MASTER STATUS;

File 为binlog的文件名,用于从库配置文件

Position 的值用于从库配置从哪个位置开始同步

mysql5.7主从复制搭建
主库状态

从库配置

还原备份的主库数据库

也可执行主库的建库建表插入数据语句

打开主库mysql配置文件

vim /etc/my.cnf

增加如下配置

#主从之间保证唯一即可,一般都是用ip最有一位
server-id=2 
#只读
read_only=1
mysql5.7主从复制搭建
mysql从库配置

重启mysql

systemctl restart mysqld

登录从库执行命令连接主库

CHANGE MASTER TO 
master_host='192.168.32.132',
master_user='root',
master_password='123qwe',
master_port=3306,
master_log_file='my-bin.000001',
master_log_pos=6906,
master_connect_retry=30;

master_log_file:主库binlog文件名

master_log_pos:从主库binlog哪个位置开始同步

启动主从同步

START SLAVE;

查看从库状态

SHOW SLAVE STATUS

Slave_IO_Running:YES

Slave_IO_Running:YES 这两个值为yes说明主从配置成功

mysql5.7主从复制搭建

测试主从同步

主库插入数据

INSERT INTO `User`(`Name`)
VALUES
    ( '王五' ),(
    '赵六');

从库也会出现这两条数据

 

Intoep小程序

微信扫一扫,打开小程序浏览更便捷

转载作品,原作者:一行代码,文章来源:https://www.toutiao.com/i7061433459738247692

发表回复

登录后才能评论