Linux下 实验一 MySQL 的主从复制
一 、实验前提
概述:MySQL的主从服务其目的在于设置该服务后分担流量,并解决单点故障,本次实验准备了2台MySQL服务器虚拟机,主服务器机名 master 从服务器机器名为salve,
(1)MySQL的安装采用的yum源安装的方式,MySQL版本如下
(2)主从复制需要保证主从服务器的时间一致的,因此有2个办法,
2.1 方法一 两个服务器都保证连接外网校对当前时间即可
2.2 方法二,两个服务器使用ntp服务并设置时间服务器设置方法如下
master服务器:
-
yum -y insatll ntp
-
vim /etc/ntp.cof #进入到这个文件后将以下2条写入文件末尾
server 127.127.1.0
fudge 127.127.1.0 stratum 8
-
systemctl restart ntpd #启动这个服务
-
systemctl enable ntpd #设置ntpd服务开机自启动
salve服务器:
-
yum -y insatll ntp
-
ntpdate 192.168.66.140 #写入主服务器的IP
########################################################################
(总结:以上为主从复制操作的预设,在设置完毕时间服务以后,使用date 命令查看服务器当前的时间确认两个服务器时间一致方可开始如下操作,如果发现下载ntpd服务依旧出现服务器时间和当前时间不对应可以查看是否时区错误或其他原因)
########################################################################
二、master服务器的设置
(1)vim /etc/my.cnf #增加以下3行
server-id=11 #设计主机标识方便从服务器引用
log_bin=master-bin #设置主服务器生成的2进制日志文件
log-slave-updates=true #允许从服务器来读这个2进制日志
(2) 进入musql数据库
输入 grant replication slave on *.* to 'mysalve' @'192.168.66.%' identified by 'Woniu.123';
#replication 是主从复制的意思,这个是为数据库添加来自mysalve账户192.168.66.0 网段使用密码来复制访问的权限
flush privileges; #刷新权限
(3)以上设置结束后 在MySQL 界面输入exit退出到centos系统后重启MySQL服务再进入到MySQL内可以查询主服务器的设置(查询命令如下图所示)
systemctl restart mysqld #重启MySQL服务
生成的二进制日志文件所在处
####################################################################
三、slave服务器的配置
(1)进入到/etc/my.cnf文件内 #文件末尾写入以下3行,然后退出保存
server-id = 22 #从服务器ID
relay-log = relay-log-bin # bin这个可以修改
relay-log-index = slave-log-bin.index #index是中继日志的初始名字
##### 备注: 配置完以上后服务器变成了slave状态了
systemctl restart mysqld ##重启下服务
(2)进入到MySQL设置 #输入以下命令
change master to master_host='192.168.66.140',master_user='myslave',master_password='Woniu.123',master_log_file='master-bin.000001',master_log_pos=322;
##命令字段解释
master_host='192.168.66.140 #主服务器的IP地址
master_user='myslave #登录的账号
master_password='Woniu.123' #登录的密码
master_log_file='master-bin.000001 #主服务上查看的二进制日志文件名
,master_log_pos=322 #主服务器和二进制文件一起查看的position下的数字
start slave; #重启下服务
show slave status\G; #查看下这个服务器的开启状态
##############################################################
以上运行后,输入 show slave status\G #查看运行该服务的状况,如下图所示
################################################
总结:最后达到的效果是,主服务器创建或者更新了文件,从服务器可以同步更新获取的,但从服务器的数据主服务器无法获取到
存在的问题
1.按照道理来说从服务器无法获取到主服务器之前的数据,但本次实验可以
2.读写分离的使用其前提必须先设置主从服务器,该实验将在后续进行
后记:主从复制的原理阐述
如图所示,主从配置其原理在于主服务器生成一个二进制的文件,如果有数据的改变都会写到这个文件内,这个文件会被从服务的I/O线程读取到,然后写入到从服务器的中继日志文件内,最后会由从服务来判断数据是否改变,又是否需要同步
(ps:本次实验记录了本萌新的MySQL的主从服务的配置,如有错漏还请多担待,欢迎大佬指导)