MySQL的主从复制
MySQL的主从复制,指的是可以创建多台和主数据库完全一样的数据库环境(从数据库),对主数据库的写操作(增、删、改)会自动同步到子数据库中。
作用:
-
从数据库作作为冷备机,进行日常备份,确保数据安全
-
从数据库作作为热备机,一旦主机宕机,可以切换到从数据库提供服务,提高系统可用性。
-
可以实现数据库的读写分离,提高系统的并发性。
搭建步骤:
-
克隆3台(至少2台)安装过MySQL的虚拟机
-
在虚拟机中创建相同的数据库,例如:
baizhi
一定要保证机器中baizhi
数据库状态是完全一致的。 -
配置主机
编辑
/etc/my.cnf
文件,明确主机的身份
1.开启日志功
去掉12行的#注释
原配置:# log_bin
修改后:log_bin
2.设置要复制的数据库 wbc
和不复制的数据库 mysql
在log_bin下方添加如下配置:
binlog-do-db=wbc
binlog-ignore-db=mysql
3.添加server_id,值要唯一,一般写ip的最后一段
同样在log_bin下方添加配置:
server-id=141
4.重启MySQL
systemctl restart mysqld
5. 登录MySQL,查看状态
4. 添加如下配置:
配置监听哪个主机
1.编辑 /etc/my.cnf
文件
添加如下配置:
server-id=从库的唯一标识值(从库ip最后一段)
-
删除
auto.cnf
文件rm -f /var/lib/mysql/auto.cnf
-
重启MySQL
systemctl restart mysqld
-
登录MySQL,配置从机
停掉slave mysql> stop slave; 配置主机信息: change master to master_host='主机ip地址',master_user='主机用户名',master_password='主机密码',master_log_file='主机日志文件名',master_log_pos=日志文件的位置; mysql>change master to master_host='192.168.84.135',master_user='root',master_password='root',master_log_file='localhost-bin.000001',master_log_pos=154; 启动slave mysql>start slave; 查看从机状态 mysql>show slave status \G;
如果配置出现问题,
show slave status
中会有异常信息。同上述步骤配置第2台从机。
注意:如果配置出错,可以查看位于 /var/log/mysqld.log
日志文件的错误信息
主从复制的原理
复制原理实现细节:
master在执行更改操作(增、删、改)后,会将操作记录串行地写入到binlog文件中。
slave的IO线程接收到主库的更新记录后,将记录保存到relay log中。
slave的SQL线程读取relay log中的更新语句并在从库执行。