千家信息网

Mysql5.7中如何搭建主从复制

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这篇文章主要介绍了Mysql5.7中如何搭建主从复制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、概述主从复制可以实现对数据库备份
千家信息网最后更新 2025年02月07日Mysql5.7中如何搭建主从复制

这篇文章主要介绍了Mysql5.7中如何搭建主从复制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、概述

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

为了避免服务的不可用以及保障数据的安全可靠性,我们至少需要部署两台或两台以上服务器来存储数据库数据,也就是我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障了,其他服务器依然可以继续提供服务.
MySQL提供了主从复制功能以提高服务的可用性与数据的安全可靠性.

主从复制是指服务器分为主服务器和从服务器,主服务器负责读和写,从服务器只负责读,主从复制也叫 master/slave,master是主,slave是从,但是并没有强制,也就是说从也可以写,主也可以读,只不过一般我们不这么做。【相关推荐:mysql视频教程】

二、主从复制架构

一主多从架构:

多主多从架构:

主从复制原理:

  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

#/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.创建多实例数据目录

cd /usr/local/mysqlmkdir datacd data#主mkdir 3306#从mkdir 3307


3.数据库初始化

#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文件夹内

[client]port        = 3306socket      = /usr/local/mysql/data/3306/mysql.sockdefault-character-set=utf8[mysqld]port    = 3306socket  = /usr/local/mysql/data/3306/mysql.sockdatadir = /usr/local/mysql/data/3306log-error = /usr/local/mysql/data/3306/error.logpid-file = /usr/local/mysql/data/3306/mysql.pidcharacter-set-server=utf8lower_case_table_names=1autocommit = 1log-bin=mysql-binserver-id=3306

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

#其中 --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:

#客户端连接./mysql -uroot -p -P3306 -h227.0.0.1#修改Mysql密码alter user 'root'@'localhost' identified by 'root';#授权远程访问(这样远程客户端才能访问)grant all privileges on *.* to root@'%' identified by 'root';#刷新配置flush privileges;

客户端连接测试

7.数据库唯一id配置

1.确定各个实例正常启动无误后进行主从配置
2.关闭实例分别在各个实例的my.cnf文件加入以下配置

#/usr/local/mysql/bin 关闭实例./mysqladmin -uroot -p -P3307 -h227.0.0.1 shutdown./mysqladmin -uroot -p -P3306 -h227.0.0.1 shutdown#新加的配置log-bin=mysql-bin        #表示启用二进制日志server-id=3307             #表示server编号,编号要唯一 建议和端口保持一致

加入完毕后启动各个实例

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

7.主机设置
1.在主服务器上创建复制数据的账号并授权

#在/usr/local/mysql/bin目录下执行  ./mysql -uroot -p -P3306 -h227.0.0.1 grant replication slave on *.* to 'copy'@'%' identified by 'root';

2.查看主服务器状态

# mysql主服务器默认初始值:#                       File:mysql-bin.000001#                       Position:154show master status;

3.如果主服务状态不是初始状态,需要重置状态

reset master;

7.从机设置
1.需要登录到 3306|3307|3308的从机客户端

#在/usr/local/mysql/bin目录下执行  多台从机'|'分隔./mysql -uroot -p -P3308|3309|3310 -h227.0.0.1

2.查看从机状态

#初始状态:Empty set show slave status;

3.若不是初始状态,重置一下

stop slave;  #停止复制,相当于终止从服务器上的IO和SQL线程reset slave;

4.设置从机设置主机配置

change master to master_host='主机ip',master_user='copy',master_port=主机端口,master_password='连接主机密码',master_log_file='mysql-bin.000001',master_log_pos=154;

5.执行 开始复制命令

start slave;

6.查看从机状态

show slave status \G;


7.测试主从复制

在主数据库中进行创建表,从库同步就算搭建成功了!

若你在从库进行写操作,则从服务器不再同步主库数据,在从库中执行此命令即可解决!

stop slave;set global sql_slave_skip_counter =1;start slave;show slave status\G;

若主从复制速度较慢的话,执行此命令

 slave-parallel-type=LOGICAL_CLOCK slave-parallel-workers=16 master_info_repository=TABLE relay_log_info_repository=TABLE relay_log_recovery=ON

感谢你能够认真阅读完这篇文章,希望小编分享的"Mysql5.7中如何搭建主从复制"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

服务 服务器 数据 配置 主从 日志 实例 文件 状态 二进制 数据库 主机 事件 目录 命令 客户 客户端 密码 篇文章 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 无锡运营软件开发诚信合作 众推联盟云服务器管理系统 电脑时间与服务器同步频率 微信提示服务器失败 计算机基础及数据库论文 国家批准文号数据库 物业网络安全责任书 本机如何连接到本机虚拟机服务器 双电源服务器有个电源灯没亮 预测网络安全的专家 抚顺政务软件开发技术 互动课堂软件开发公司 c#++数据库连接判断 mc网易版服务器飞船 c#连接数据库超时时间设置 万合网络技术有限公司怎么样 网络安全法最新实施 厦门专业软件开发公司电话 access数据库在哪里 违反网络安全法三十五条规定 荆州专门做软件开发的公司 苹果方舟进化怎么开服务器 把数据库生成数据文档 北京水电费缴费软件开发团队 微信头像软件开发 永劫无间stame什么服务器好 网络安全架构技术 网易我的世界第一服务器 温州定制软件开发是什么 五g网络技术突破人是谁
0