MySQL主从复制

原理:MySQL 的主从复制和 MySQL的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。

(1)MySQL 支持的复制类型

①基于语句的复制。在主服务器上执行的 SQL 语句,在从服务器上执行同样的语句,MySQL 默认采用基于语句的复制,效率比较高。

②基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。

③混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。

(2)复制工作过程

①在每个事务更新数据完成之前,Master 将这些改变记录进二进制日志。写入二进制日志完成后,Master 通知存储引擎提交事务。

Slave 将 Master 的 Binary log 复制到其中继日志(Relay log)。首先,Slave 开始一个工作线程--I/0 线程,I/0 线程在 Master 上打开一个普通的连接,然后开始 Binlog dump process。Binlog dump process 从 Master 的进制日志中读取事件,如果已经跟上 Master,它会睡眠并等待 Master 产生新的事件。I/0 线程将这些事件写入中继日志。

③ SQL slave thread(SQL 从线程)处理该过程的最后一步。SQL 线程从中继日志读取事件,并重放其中的事件而更新 Slave 数据,使其与 Master 中的数据保持一致。只要该线程与 I/0 线程保持一致,中继日志通常会位于0S 的缓存中,所以中继日志的开销很小。复制过程有一个很重要的限制,即复制在S1ave 上是串行化的,也就是说 Master 上的并行更新操作不能在 Slave 上并行操作。

搭建主从复制

主服务器配置:

1.在所有节点进行时间同步

yum -y install  ntpdate

ntpdate  ntpl.aliyun.com

2.配置防火墙和SELiunx

systemctl  stop  firewalld

systemctl  disable  firewalld

sed -i  's/SELinux=enforcing/SELINUX=disabled/g'  /etc/selinux/config

setenforce  0

3.安装MySQL数据库(此处略)

4.配置Master主服务器

(1)在/etc/my.cnf中修改或增加下面内容

log-bin=/usr/local/mysql/data/mysql-bin      启用二进制日志(Binary Log)并指定其存储路径

binlog_format=MIXED                                 定义二进制日志的记录格式为混合模式

server-id=1                                                   为mysql实例分配一个唯一的服务器标识符

(2)重启MySQL服务

systemctl  restart  mysqld

(3)登录MySQL程序,给从服务器授权

alter user 'root'@'localhost' identified with mysql_native_password by '123456';

create user 'myslave'@'%' identified by '123456';
grant replication slave on *.* to 'myslave'@'%';
alter user 'myslave'@'%' identified with mysql_native_password by '123456';

flush privileges;

show master status;
其中File列显示日志名,Position列显示偏移量,这两个值在后面配置从服务器的时候需要。Slave应从该点进行新的更新

从服务器配置:

(1)修改配置文件,server-id不能相同

vim  /etc/my.cnf

server-id=2                   增加,唯一的服务器标识符,集群内不能冲突

(2)重启Mysql服务

systemctl  restart  mysqld

(3)登录mysql,配置同步

按主服务器结果更改下面命令中master_log_file和master_log_pos参数

mysql  -uroot  -ppwd123

alter  user  'root'@'localhost'  identified  with  mysql_password  by  '123456';

change  master  to  master_host='192.168.10.101',master_user='myslave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=157;

(4)启动同步

mysql>start  slave;

(5)查看slave状态,确保以下两个值为YES

mysql>show  slave  status\G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值