第9章-4 主从复制

        上一篇:《第9章-3 复制管理和维护-CSDN博客》,接着了解主从复制,这个面试也会常问。

什么是主从复制

传统数据库中存在的问题

        1,传统数据库设计时,如果服务器宕机,将不能为用户提供服务导致整个系统崩溃

        2,如果数据库突然宕机.会导致数据丢失

        3,为了防止数据丢失,要进行实时备份

        冷备份:通过数据库工具进行人为的导出sql.但是手动导出数据可能在中间节点宕机时也会造成数据库的丢失

主从复制

        主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库

主从复制的作用

        1,做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失

        2,架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能

        3,读写分离,使数据库能支撑更大的并发。

主从复制的原理

        1,数据库有个bin-log二进制文件,记录了所有sql语句。

        2,我们的目标就是把主数据库的bin-log文件的sql语句复制过来。

        3,让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。

        4,下面的主从配置就是围绕这个原理配置

        5,具体需要三个线程来操作:

                1,i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

                2,主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;

                3,SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

主从复制实现过程

主机

1,首先修改mysql的配置文件,使其支持二进制日志功能。

        打开主服务器的mysql配置文件:my.conf(window保存时, 使用使用ANTIS格式,否则Mysql启动不起来),加入如下代码:

log-bin=C:/ProgramData/MySQL/MySQL Server 5.7/Data/mysql-bin

将mysql二进制日志取名为mysql-bin

server-id=1

为服务器设置一个独一无二的id便于区分

2,在主服务器上为从服务器分配一个账号,就像一把钥匙,从服务器拿着这个钥匙,才能到主服务器上来共享主服务器的日志文件

GRANT replication slave ON *.* TO 'myxq'@'192.168.0.89' 
IDENTIFIED BY '123456'; 
FLUSH PRIVILEGES

3,查看主服务器BIN日志的信息

        执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作, 因为每次操作数据库时这两值会发生改变

show master status;		

mysql-bin.000003
612	

从机

进入从机修改配置文件

vim /etc/my.cnf
log-bin=mysql-bin
server-id=2

保存修改 重启服务

启动mysql服务

systemctl start mysqld.service		

停止mysql服务

systemctl stop mysqld.service	

在从机mysql中执行以下语句

CHANGE MASTER TO MASTER_HOST='192.168.31.156',
MASTER_USER='myxq',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=612;

参数解释

MASTER_HOST  :  设置要连接的主服务器的ip地址

MASTER_USER  :  设置要连接的主服务器的用户名

MASTER_PASSWORD  :  设置要连接的主服务器的密码

MASTER_LOG_FILE  :  设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息

MASTER_LOG_POS  :  设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)

先在从服务器配置完成,启动从服务器:

start slave;

查看是否配置成功:

show slave status;

停止服务复制

stop slave	

主从复制脚本

MASTER脚本

#'slave'@'192.168.31.156'sq
#slave 是用户名  后面 slave 是密码
#192.168.31.156 是允许访问的远程IP地址,这里要写从属服务器的IP
#因为演示环境实在本机访问,因此都是192.168.31.156,生产环境要改为其他IP

create user 'slave'@'192.168.31.156' IDENTIFIED by 'slave';
create user 'slave1'@'192.168.31.157' IDENTIFIED by 'slave';

#为slave用户授予主从复制的权限
grant replication slave on *.* to 'slave'@'192.168.31.156';

#激活权限
flush PRIVILEGES;
show master status;

show binlog events in 'mysql-bin.000001';

SLAVE脚本

CHANGE MASTER TO 
MASTER_HOST='192.168.31.156',
MASTER_PORT=3310,
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=951;

#开始主从复制
start slave;

show slave status;

总结:

        了解主从复制的原理:数据库有个bin-log二进制文件,记录了所有sql语句;把主数据库的bin-log文件的sql语句复制过来,在从数据的relay-log重做日志文件中再执行一次这些sql语句。

         

         上一篇:《第9章-3 复制管理和维护

         下一篇:《第10章-1 备份与恢复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天狼1222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值