4.主从备份
4.1 读写分离
原理:需要搭建主从模式,让主数据库(master)处理事务增改删操作,而从数据库(slave)处理SELECT查询操作
mycat配合数据库本身的复制功能,可以解决读写分离的问题
4.2 主从备份概念
什么是主从备份:就是一种主备模式的数据库应用
主库(Master)数据与备库(Slave)数据完全一致
实现数据的多重备份,保证数据的安全
可以在Master[InnoDB] 和 SLave[MyISAM] 中使用不同的数据库引擎,实现读写分离
4.2.1 MySql5.5 5.6 版本后本身支持主从备份
在老旧版本的MySQL数据库系统中,不支持主从备份,需要安装额外的RPM包,如果需要安装RPM只能在一个位置节点安装
4.2.2 主从备份目的:
实现主备模式:
保证数据的安全,尽量避免数据丢失的可能
实现读写分离:
使用不同的数据库引擎,实现读写分离,提高所有的操作效率,InnoDB使用DML语法操作,MyISAM使用DQL语法操作
4.2.3 主从备份效果
主库操作同步到备库
所有对Master的操作,都会同步到Slave中
如果Master和Salve天生上环境不同,那么对Master的操作,可能会在Slave中出现错误,如在创建主从模式之前Master有database:db1 db2 db3 Slave有database db1 db2 创建主从模式,现在的情况Master 和 Slave 天生不同,主从模式创建成功后,在Master中drop database db3 Slave 中抛出数据库SQL异常,后续所有的命令不能同步,一旦出现错误,只能重新实现主从模式。
4.2.4 主从模式下的逻辑图
4.3 MySql 的主从模式搭建
4.3.1 安装MySQL
已安装
主库:192.168.80.132
从库:192.168.80.130
4.3.2 Master[主库]配置
修改Master 配置文件
vim /etc/my.cnf
#MySQL 服务唯一标识
#server_id 任意配置,只要是数字即可
#server_id Master 唯一标识数字必须小于Slave唯一标识数字
server_id=1
#开启日志功能以及日志文件命名
#变量的值就是日志文件的名称,是日志文件名称的主体
#MySQL额数据库自动增加文件名后缀和文件类型
log_bin=master_log
重启MySQL
systemctl restart mysql
配置Master
访问MySQL
mysql -uroot -p
创建用户
在MySQL 数据库中,为不存在的用户授权,就是同步创建用户并授权,此用户是从库访问主库的用户,ip地址不能写为%
因为主从备份中,当前创建的用户,是给从库SLave 访问主库Master 使用的,用户必须写指定的访问地址,不能是通用地址。
set global validate_password_policy=0;
set global validate_password_length=4;
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'192.168.80.130' IDENTIFIED BY 'slave' WITH GRANT OPTION;
FLUSH PRIVILEGES;
查看用户
use mysql;
select Host,User from user;
查看Master信息
show master status;
4.3.3 Slave[从库] 配置
修改Slave配置文件
vim /etc/my.cnf
#MySQL 服务唯一标识
#server_id 任意配置 只要是数字即可
#server_id Master 唯一标识数字必须大于 Slave唯一标识数字
server_id =1
修改uuid (可选)
主从模式要求多个MySQL:物理名称不能相同,即安装MySQL过程中Lunix自动生成的物理标志,唯一物理标志命名为uuid 保存位置是MySQL数据库的数据存放位置 ,默认为/var/lib/mysql目录中,文件名是auto.cnf
修改auto.cnf文件中的uuid数据,随意修改,不建议改变数据长度,建议改变数据内容
vim/var/lib/mysql/auto.cnf
重启MySQL服务器
systemctl restart mysql
配置Slave
访问MySQL
mysql -uroot -p
停止Slave功能
stop slave;
配置主库信息
需要修改的数据是依据Master信息修改的,Ip是Master所在物理机IP 用户名和密码是Master提供的Slave 访问用户名和密码,日志文件是在Master中查看的主库信息提供的,在Master中使用命名show master status查看日志文件名称
change master to
master_host ='192.168.80.132', master_user='slave',master_password='slave',master_log_file='mysql-bin.000010';
启动Slave 功能
start slave;
查看Slave配置
show slave status \G;
这三项都为图上所示,表示主从成功!