MySQL进阶——主从复制

attachments-2020-03-nSwxNjkM5e79698370399.jpg

 

1.主从复制的基本原理

slave会从master读取binlog来进行数据同步。主要有如下三个步骤:mysql

①master将改变记录到二进制日志(binary log),这些记录过程叫作二进制日志事件(binary log events)。linux

②slave将master的binary log events拷贝到中继日志(relay log)。sql

③slave重作中继日志中的事件,将改变应用到本身的数据库中。MySQL的复制是异步且串行化的。数据库

v2-45e6eb9a8cd6849617e55274bd6fc898_720w.jpg

 

2.主从复制的规则

①每一个slave只能有一个master。(一对一)windows

②每一个slave只能有一个惟一的服务器ID。服务器

③每一个master能够有多个slave。(一对多)异步

在主从复制过程当中,最大的问题就是延时。ide

 

3.一主一从的常见配置

#1.要求。测试

MySQL版本最好一致且后台以服务运行。而且保证主机与从机互相ping通。主从配置都在[mysqld]结点下,都是小写。spa

#2.主机修改my.ini配置文件

①server-id=1,主机服务器id。(必须)

②必须启用二进制文件。

log-bin="E:\devSoft\mysql-5.7.22-winx64\data\mysql-bin"

配置该项后,从新启动mysql服务,可看到以下内容。

v2-6e7f3fe2702869c5591a33da7f28c4f5_720w.jpg

③启用错误日志。(可选)

log_error ="E:\devSoft\mysql-5.7.22-winx64\data\log\errorlog\log_error.log"

④根目录、数据目录。(可选)

#mysql安装根目录 basedir ="E:\devSoft\mysql-5.7.22-winx64"   #mysql数据文件所在位置 datadir ="E:\devSoft\mysql-5.7.22-winx64\data"

⑤临时目录。(可选)

tmpdir  ="E:\devSoft\mysql-5.7.22-winx64\"

⑥read-only=0,表示主机读写均可以。

⑦可设置不须要复制的数据库。(可选)

binlog-ignore-db=mysql

⑧可设置须要复制的数据库。(可选)

binlog-do-db=databasename

#3.从机修改my.cnf配置文件

①从服务器ID。(必须)

②启用二进制日志。(可选)

#4.主机与从机都关闭防火墙,其实也可配置ip规则,但关闭防火墙更快速。

#5.在Windows主机上创建帐户并受权给slave。

a.首先在主机上建立帐户:

#%表示任何客户端均可以链接 grant all privileges on *.* to slaveaccount(用户名)@"%(或者指定ip)" identified by '你想设置的密码' with grant option;

b.而后刷新权限表:

flush privileges;

c.而后受权给slave:

GRANT REPLICATION SLAVE ON *.* TO 'slaveaccount(上面建立的用户名)'@'从机数据库ip' IDENTIFIED BY '你想设置的密码'

d.利用b步骤命令再次刷新权限表。

#6.查询master的状态。

v2-19db90cdc229112b893405e6d9ff9302_720w.jpg

File和Position这两个字段很是重要,File告诉从机须要从哪一个文件进行复制,Position告诉从机从文件的哪一个位置开始复制,在从机上配置时需用到。执行完此操做后,尽可能不要在操做主服务器MySQL,防止主服务器状态变化(File和Position状态变化)。

#7.在Linux从机上配置须要的主机。

CHANGE MASTER TO MASTER_HOST='主机IP',MASTER_USER='salveaccount',MASTER_PASSWORD='主机受权的密码',MASTER_LOG_FILE='File名字',MASTER_LOG_POS=Position数字;

#8.启动从服务器复制功能。

start slave;

启动复制功能后,须要查看主从复制配置是否成功。

v2-077f8c6214b6133b9ce88309c45b07a5_720w.jpg

注:只有当Slave_IO_Running:Yes和Slave_SQL_Running:Yes,这两个都为Yes的时候,主从复制配置才成功。

#9.进行测试。

①首先在主机上创建数据库并插入数据。

v2-665fd3357cc93c0c46386bd79cd94343_720w.jpgv2-f28ad22e77ddd2271ff6a8ee2b02a5e6_720w.jpg

②在从机中查看是否有相应数据库。

v2-b1fa5aaca4b06da8d0822418bbf800ec_720w.jpgv2-3d74d18d443b6aab86b50f8bc533aeb2_720w.jpg

经过从机上查看相应数据,可知主从复制配置成功。

#10.中止从服务复制功能。

stop slave;

 

4.总结

#1.主从复制的配置,大部分都在主机上,注意查看相关步骤。

#2.这里将主从机的防火墙都关闭是为了更好的演示,实际生产环境中通常不会出现windows主机和linux从机这种状况,所以不该该关闭防火墙,而是根据具体状况配置防火墙规则。

 

attachments-2020-03-bve1h1635e7969bff1c5b.jpg

相关文章
相关标签/搜索