手把手教你在Mysql5.7中搭建主从复制


本文摘自PHP中文网,作者青灯夜游,侵删。

在Mysql5.7中如何搭建主从复制?下面这篇文章给大家介绍Mysql5.7-主从复制搭建步骤,有需要的朋友可以学习了解一下~

一、概述

主从复制可以实现对数据库备份和读写分离:

为了避免服务的不可用以及保障数据的安全可靠性,我们至少需要部署两台或两台以上服务器来存储数据库数据,也就是我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障了,其他服务器依然可以继续提供服务.
MySQL提供了主从复制功能以提高服务的可用性与数据的安全可靠性.
主从复制是指服务器分为主服务器和从服务器,主服务器负责读和写,从服务器只负责读,主从复制也叫 master/slave,master是主,slave是从,但是并没有强制,也就是说从也可以写,主也可以读,只不过一般我们不这么做。

二、主从复制架构

一主多从架构:
在这里插入图片描述
多主多从架构:
在这里插入图片描述
主从复制原理:

  1. 当 master 主服务器上的数据发生改变时,则将其改变写入二进制事件日志文件中
  2. salve 从服务器会在一定时间间隔内对 master 主服务器上的二进制日志进行探测,探测其是否发生过改变,如果探测到 master 主服务器的二进制事件日志发生了改变,则开始一个 I/O Thread 请求 master 二进制事件日志
  3. 同时 master 主服务器为每个 I/O Thread 启动一个dump Thread,用于向其发送二进制事件日志
  4. slave 从服务器将接收到的二进制事件日志保存至自己本地的中继日志文件中
  5. salve 从服务器将启动 SQL Thread 从中继日志中读取二进制日志,在本地重放,使得其数据和主服务器保持一致;
  6. 最后 I/O Thread 和 SQL Thread 将进入睡眠状态,等待下一次被唤醒

三、一主多从搭建

搭建环境:
1. Linux 版本 CentOS release 6.9 (Final)
2. mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz下载地址

1.解压 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

1

2

3

4

#/usr/local下解压

tar xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

#重命名文件

mv mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql

2.创建多实例数据目录

1

2

3

4

5

6

7

cd /usr/local/mysql

mkdir data

cd data

#主

mkdir 3306

#从

mkdir 3307

在这里插入图片描述
3.数据库初始化

1

2

3

4

5

6

7

#mysql 安装bin目录下执行

#initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空

 

#初始化3306

./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3306 --user=mysql

#初始化3307

./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3307 --user=mysql

若出现错误执行
yum install libaio-devel.x86_64
yum -y install numactl在这里插入图片描述
4.创建各个数据库的配置文件my.cnf

注意:
1.建议在linux下创建文件防止windows 与 linux 编码不一致
2.不同的实例下配置要修改端口号
3.将修改好的my.cnf分别放至3306、3307文件夹内

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

[client]

port        = 3306

socket      = /usr/local/mysql/data/3306/mysql.sock

default-character-set=utf8

 

[mysqld]

port    = 3306

socket  = /usr/local/mysql/data/3306/mysql.sock

datadir = /usr/local/mysql/data/3306

log-error = /usr/local/mysql/data/3306/error.log

pid-file = /usr/local/mysql/data/3306/mysql.pid

 

character-set-server=utf8

lower_case_table_names=1

autocommit = 1

 

log-bin=mysql-bin

server-id=3306

5.多实例启动

切换到/usr/local/mysql-5.7.24/bin目录下,使用 msyqld_safe 命令指定配置文件并启动MySQL服务:

1

2

3

#其中 --defaults-file 是指定配置文件,& 符合表示后台启动

./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf &

./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &

6.数据库初始化配置

分别在各个实例内进行配置 如3306:

1

2

3

4

5

6

7

8

#客户端连接

./mysql -uroot -p -P3306 -h127.0.0.1

#修改Mysql密码

alter user 'root'@'localhost' identified by 'root';

#授权远程访问(这样远程客户端才能访问)

grant all privileges on *.* to root@'%' identified by 'root';

#刷新配置

flush privileges;

客户端连接测试
在这里插入图片描述
7.数据库唯一id配置

阅读剩余部分

相关阅读 >>

使用 mysql5.7实现每秒50万的高性能查询

mysql5.7在windows7下数据位置修改方法详解

mysql5.7详细安装图文流程

mysql5.7在centos7.3下安装配置的图文教程

redis学习主从复制master/slave

redis主从复制

rpm包在centos6.5中安装mysql5.7初始化报错的解决方法

mysql5.7如何修改用户初始密码

mysql5.7缺少my.ini文件如何解决

redis讲解主从复制和哨兵模式

更多相关阅读请进入《mysql5.7》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...