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_IO、Slave_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 ----