一、MySQL 主从简介
- MySQL 默认支持主(master)从(slave)功能.
- 配置完主从备份后效果:在主数据库中操作时,从同步进行变化.
- 主从本质:主数据的操作写入到日志中,从数据库从日志中读取,进 行操作.
- 主从原理
- 默认 MySQL 没有开启日志功能
- 每个 数据库需 要有一 个 server_id, 主 server_id 值小 于从 server_id
- 每个 mysql 都有一个 uuid,由于虚拟机直接进行克隆,需要修改 uuid 的值
- 必须要在主数据库中有一个用户具有被从数据库操作的权限
- MySQL5.7以前只支持一主一从的配置,5.7以后版本支持多主一从。
二、MySQL主从配置
2.1 安装mysql解压版
- 设置了root用户的密码为root
- 把虚拟机克隆一份
- 主从的ip
- 主:192.168.17.132
- 从:192.168.17.133
2.2 修改主数据库的my.cnf文件
- 执行命令:
vim /etc/my.cnf
- 修改内容
- log_bin 日志文件名称,启用日志功能
- server_id 给定一个值
- 重启mysql:
service mysql restart
2.3 进入主数据库的客户端工具
mysql -u root --proot
2.4 新建一个myslave用户并赋予权限
- 命令:
grant all privileges on *.* to 'myslave'@'192.168.17.133' identified by 'smallming' with grant option; grant all privileges on *.* to root@'%' identified by 'root' with grant option; //授予root所有IP均可访问的权限
" * .* "
表示任意数据库的任意表- myslave 用户名
- 192.168.17.133 从数据库的ip,哪个客户端可以连接mysql服务端
- root是myslave的密码
- 检查执行结果:
2.5 通过命令可以观察主数据库在主从关系中状态
- 日志文件:存在于mysql安装目录/data
- data文件夹xxxxx.index文件,存储日志文件在哪里
- data文件夹auto.cnf编写当前mysql的uuid
2.6 修改主数据库的防火墙,放行3306端口
vim /etc/sysconfig/iptables
- 重启防火墙:
service iptables restart
2.7 操作从数据库的内容
- 修改从数据库的my.cnf的server_id:
vim /etc/my.cnf
- 设置server_id为2
2.8 修改从的uuid
vim /usr/local/mysql/data/auto.cnf
- 随意把值修改一下,只要和主数据库的UUID值不同即可。
- 重启mysql服务:
service mysql restart
2.9 进入从数据库的客户端工具
mysql -u root --proot
2.10 操作slave
- 关闭slave:
stop slave
- 在从中配置出master的信息
change master to master_host='192.168.17.132',master_user='myslave',master_password='root',master_log_file='master_log.000001';
- 开启slave:
start slave
- 显示slave状态:
show slave status \G;
- 只要没有错误,说明配置成功主从关系.
2.11 验证主从关系
- 主从服务都重新启动.
- 在主数据库中新建数据库,新建表,添加数据,观察从数据库的状态.
create database demo1 default character set utf8;
- 新数据查看是否有该数据库,有则说明配置成功。