MySQL 5.7主从架构部署


MySQL5.7安装参考:https://www.cnblogs.com/panw/p/16297877.html

Mysql主从概念:

  • mysql的主从复制,是用来建立一个和主数据库完全一样的数据库环境,从库会同步主库得所有数据,可轻松实现故障转移。

mysql主从主要作用:

  • 实现数据备份;
  • 基于数据备份,实现故障转移灾备
  • 基于数据备份,实现读写分离;

常见mysql主从架构:

  • 一主一从;
  • 一主多从;
  • 互为主从;

1)一主一从

 主从工作原理:

 这里以一主一从为例: 

# 主库

master: 192.168.1.13

#从库

slave: 192.168.1.8

# master端配置

第一步:主数据库开启二进制日志文件。修改库配置文件,在[mysqld]指令段添加以下行。

vim /etc/my.cnf      #主配文件路径根据实际情况修改
server-id=1              #设置主库集群唯一标识
log-bin=jfedu-bin        #主库开启二进制文件功能,(名称可自定义)

  修改后重启mysql服务。mysql会自动给我们创建二进制文件。

  • 查看二进制文件配置是否生效
mysql
show master status;
或
show master logs;

  如图,能看到我们配置的二进制文件,说明功能已经开启了。

注意,二进制文件名称在你每次重启服务或者是刷新时,都会重新生成。

  • 查看变量是否开启,默认是开启的,且必须为ON,值为ON表示开启。
show variables like "%log_bin";

  

第二步:主数据库授权从数据库授权从数据库能够读取主数据库二进制文件。

# 授权从库,拥有复制权限
grant replication slave on *.* to "root"@"192.168.1.8" identified by "123456";
flush privileges;

  说明:

replication:复制权限,也可以是all 

slave: 表示从库。

 *.  表示同步所有数据库,也可以指定某一个库。

root:用户不需要在远程服务器或本机服务器去创建,它会自动帮你创建,这个用户仅仅是mysql数据库的一个认证用户;

192.168.1.x 指定从库服务器能够登陆访问,也可以设置成某一个网段都可以访问。

 ---

# slave端配置
  • 修改库配置文件,在[mysqld]指令段添加以下行
vim /etc/my.cnf          #主配文件路径根据实际情况修改
server-id=2             #设置从库ID # 注意:这里server-id的值可以是除1之外的任意数字,切记不能为1。

  修改后重启mariadb服务。

  • 发请求告诉主库要同步的认证信息。

注意:同步主库数据时,先将从库salve服务关闭(关闭命令:slave stop;

Mysql关闭命令:stop slave; 反之,start slave;

Mariadb关闭命令:slave stop; 反之,slave start; 

change master to master_host="192.168.1.13", master_user="root", master_password="123456", master_log_file="jfedu-bin.000005", master_log_pos=699;

  说明:

master_host="192.168.1.13", # 指定主数据库地址

master_user="root", # 指定连接用户

master_password="123456", # 指定连接密码

master_log_file="jfedu-bin.000005", # 指定要连接主库的最新的二进制文件,主库二进制文件通过 show master status; 命令查询。

master_log_pos=699; # 指定最新二进制文件的ID

  • 发请求告诉主库要同步的认证信息后, 启动从库同步服务。
start slave;

当执行了启动命令后,从库就会立马去根据指定的主库信息去连接主库。

  • 查看从库状态
show slave status\G;

  当看到Slave_IOSlave_SQL均为YES即说明从库已正常开启,且与主库建立了连接通道。

 还可通过netstat -nltpa查看从库与主库通信端口。

这里千万注意由于这里我们同步的是最新的二进制文件,所以在该二进制文件之前生成的数据库是无法进行同步的;若要将全部数据库同步,需先将所有数据库导出。

#测试验证

  • 测试主库新建一个数据库,验证从库同步。

  •  从库验证:这里可以看到,当主库有新的数据库产生时,从库会及时去进行同步。

2)一主多从

  • 修改库配置文件,在[mysqld]指令段添加以下行。
vim /etc/my.cnf
server-id=3              #设置从库ID
# 注意:这里server-id的值可以是除1之外的任意数字,切记不能为1,也不能与其他从库id冲突。

 修改后重启mariadb服务。

具体操作流程请参考上述从库配置# slave端配置

3)互为主从

互为主从只是将从库的配置项配置成与主库相同即可,操作与上述一主一从相反。

  •  修改库配置文件,在[mysqld]指令段添加以下行。
vim /etc/my.cnf
server-id=3              #设置从库ID
log-bin=jfedu2-bin        #从库开启二进制文件功能,实现互为主从,(名称可自定义)
# 注意:这里server-id的值可以是除1之外的任意数字,切记不能为1,也不能与其他从库id冲突。

修改后重启mariadb服务。

具体操作流程请参考上述一主一从主库配置# master端配置

---- over ----