mysql主从复制(一)
mysql主从复制(一)
1、相关概念
主从复制用途
实时灾备,用于故障切换(高可用)
读写分离,提供查询服务(读扩展)
数据备份,避免影响业务(高可用)
主从部署必要条件
从库服务器能联通主库
主库开启binlog日志(设置log-bin日志)
主从server-id不同
2、准备工作
搭建两个mysql数据库,一个作为master(主库),一个作为slave(从库),并将其防火墙关闭
systemctl stop iptables
systemctl stop firewalld
systemctl disable firewalld.service
3、相关操作
3.1、开启主库log-bin日志
如下图所示,编辑主库中mysql配置文件/etc/my.cnf,往里面添加如下信息,其中log_bin=mysql-bin指定log_bin的文件名,server-id指定了服务id,不同步哪些数据库(binlog-ignore-db),以及同步哪些数据库(binlog-do-db),保存好了之后重新启动一下mysql服务(service mysql restart)
3.2、开启主库授权复制
grant replication slave on *.* to 'root'@'%' identified by 'root';
grant all privileges on *.* to 'root'@'%' identified by 'root';
如下图所示,即为刚刚配置的主库信息
3.3、修改从库的配置文件
如下图所示,编辑从库中mysql配置文件/etc/my.cnf,往里面添加如下信息,其中指定服务id(server-id),指定从库中间日志名字(relay_log),开启只读模式(read_only),保存好了之后重新启动一下mysql服务(service mysql restart)
3.4、从库指定主库的信息
在从库中执行一下命令
change master to master_host='192.168.31.52',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=701;
master_host(主库主机),master_port(主库端口号),master_user(主库用户名),master_password(主库密码),master_log_file(主库日志文件名称),master_log_pos(主库日志位置)
接着执行开启从库
start slave;
执行查看从库信息
show slave status \G;
4、测试
往主库中创建数据库animal
create database animal;
use animal;
往animal数据库中添加表cat
create table cat(c_id int primary key,c_name varchar(32),c_age int)engine=innodb charset=utf8;
往cat表中插入一条记录
insert into cat value(1,'小白',1);
从从库中查询是否有主库对应的操作信息,如下图所示