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

手把手教你在Mysql5.7中搭建主从复制,第1张

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

一、概述

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

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

二、主从复制架构

一主多从架构:


多主多从架构:


主从复制原理:

当 master 主服务器上的数据发生改变时,则将其改变写入二进制事件日志文件中salve 从服务器会在一定时间间隔内对 master 主服务器上的二进制日志进行探测,探测其是否发生过改变,如果探测到 master 主服务器的二进制事件日志发生了改变,则开始一个 I/O Thread 请求 master 二进制事件日志同时 master 主服务器为每个 I/O Thread 启动一个dump Thread,用于向其发送二进制事件日志slave 从服务器将接收到的二进制事件日志保存至自己本地的中继日志文件中salve 从服务器将启动 sql Thread 从中继日志中读取二进制日志,在本地重放,使得其数据和主服务器保持一致;最后 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 -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配置

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

#/usr/local/MysqL/bin 关闭实例./MysqLadmin -uroot -p -P3307 -h127.0.0.1 shutdown./MysqLadmin -uroot -p -P3306 -h127.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 -h127.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 -h127.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

相关学习推荐:mysql教程(视频) 总结

以上是内存溢出为你收集整理的手把手教你在Mysql5.7中搭建主从复制全部内容,希望文章能够帮你解决手把手教你在Mysql5.7中搭建主从复制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1150008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存