文章目录

  • ​​为什么要主从同步?​​
  • ​​主从同步的原理​​
  • ​​MYSQL数据库进行主从同步​​
  • ​​创建两个MYSQL数据库​​
  • ​​初始化,安装主机数据库​​
  • ​​**安装好数据库后进入主机:**​​
  • ​​配置从机​​
  • ​​测试主从同步​​

为什么要主从同步?

1、读写分离

  • 主从同步分为一个主机多个从机,可以设置主从机权限。主机可以读写,从机只能读。主机对数据的操作会复制到从机,主机的数据和从机的一致。这样就可以实现读写分离,读写分离可以缓解服务器压力。互联网的应用往往是“读多写少”的需求,采用读写分离的方式,可以实现更高的并发访问。

2、数据备份

  • 我们通过主从复制将主库上的数据复制到了从库上,相当于是一种热备份机制,也就是在主库正常运行下进行备份,不会影响到服务。

3、高用性

  • 具有高可用性。我刚才讲的数据备份实际上是一种冗余的机制,通过这种冗余的方式可以换取数据库的高可用性,也就是当服务器出现故障或者宕机的情况下,可以切换到从服务器上,让从服务器充当主服务器,保证服务的正常运行。

主从同步的原理

  • 主机每执行一个操作会在二进制日志文件中记录。
  • 从机每隔一段时间就会对主机的日志文件进行探测,如果发生改变,从机就会发送一个IO请求,复制主机中的日志文件进行同步操作,这样从机就可以和主机同步。

MYSQL数据库进行主从同步

创建两个MYSQL数据库

这里创建了两个数据库,分别为3301和3302。3301作为主机,3302作为从机

【MYSQL百炼成圣】水火不侵篇——主从同步_主从同步

【MYSQL百炼成圣】水火不侵篇——主从同步_java_02

【MYSQL百炼成圣】水火不侵篇——主从同步_数据库_03

主机3301的配置文件如下:

[mysqld] 
# 主机端口号
port=3308
# 服务器标识,每个服务器不能一样
server_id=111
# 开启日志文件
log_bin=binlog
# 普通用户只能读 OFF是关闭状态
read_only=off
# 超级用户只能读 OFF是关闭状态
super_read_only=off

【MYSQL百炼成圣】水火不侵篇——主从同步_服务器_04

从机3302的配置文件如下:

[mysqld]
# 从机端口号
port=3309
# 服务器标识
server_id=2
# 开启日志文件
log_bin=binlog
# 普通用户只能读 on是开启状态
read_only=on
# 超级用户只能读 on是开启状态
super_read_only=on

【MYSQL百炼成圣】水火不侵篇——主从同步_服务器_05

初始化,安装主机数据库


安装好数据库后进入主机:

进入主机数据库,没有密码。

【MYSQL百炼成圣】水火不侵篇——主从同步_数据库_06

建立同步账号,并授权

【MYSQL百炼成圣】水火不侵篇——主从同步_主从同步_07

查看主库master

【MYSQL百炼成圣】水火不侵篇——主从同步_java_08

记住查询出的结果,后面要用【MYSQL百炼成圣】水火不侵篇——主从同步_服务器_09

配置从机

进入数据库

【MYSQL百炼成圣】水火不侵篇——主从同步_主从同步_10

复制主机的二进制日志操作,其中 source_user是主机创建的同步账户账号,source_password是账号密码,source_port主机端口号,source_log_file之前查看主机master时File的信息,source_log_pos是Position的信息。

mysql>change replication source to source_host='127.0.0.1', source_user='repl', source_password='repl', source_port=3308,source_log_file='binlog.000006', source_log_pos=336;

启动同步

mysql>start replica;

查看IO线程和sql线程是否开启

mysql>show slave status \G

【MYSQL百炼成圣】水火不侵篇——主从同步_服务器_11

测试主从同步

主机当前的全部数据库:

【MYSQL百炼成圣】水火不侵篇——主从同步_服务器_12

从机当前的全部数据库:

【MYSQL百炼成圣】水火不侵篇——主从同步_主从同步_13

主机建立一个新数据库xxx:

【MYSQL百炼成圣】水火不侵篇——主从同步_java_14

从机查看数据库:

【MYSQL百炼成圣】水火不侵篇——主从同步_java_15

操作同步,完成