MySQL主从复制

MySQL支持的复制类型

  • 基于语句的复制。在主服务器上执行的 SQL 语句,在从服务器上执行同样的语句。MySQL 默认采用基于语句的复制,效率比较高。
  • 基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
  • 混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就  会采用基于行的复制。

主从复制的工作过程

  • 在每个事务更新数据完成之前,Master 将这些改变记录进二进制日志。写入二进制日志完成后,Master 通知存储引擎提交事务。
  • Slave 将 Master 的 Binary log 复制到其中继日志(Relay log)。首先,Slave 开始一个工作线程——I/O 线程,I/O 线程在 Master 上打开一个普通的连接,然后开始 Binlog dump process。Binlog dump process 从 Master 的二进制日志中读取事件,如果已经跟上Master,它会睡眠并等待 Master 产生新的事件。I/O 线程将这些事件写入中继日志。
  • SQL slavethread(SQL 从线程)处理该过程的最后一步。SQL 线程从中继日志读取事件,并重放其中的事件而更新 Slave 数据,使其与 Master 中的数据保持一致。只要该线程与 I/O 线程保持一致,中继日志通常会位于 OS 的缓存中,所以中继日志的开销很小。复制过程有一个很重要的限制,即复制在 Slave 上是串行化的,也就是说 Master 上的并行更新操作不能在 Slave 上并行操作。

资源列表

Master

CentOS 7.3 x86_64

192.168.10.51

Slave1

CentOS 7.3 x86_64

192.168.10.52

Slave2

CentOS 7.3 x86_64

192.168.10.53

Amoeba

CentOS 7.3 x86_64

192.168.10.54

客户端

CentOS 7.3 x86_64

192.168.10.55

安装MySQL数据库

#参考MySQL编译安装

 配置防火墙和SELinux

systemctl stop firewalld
systemctl disable firewalld
 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config
setenforce 0

配置Master主服务器

vi /etc/my.cnf
//添加或修改一下选项
server-id=11
log-bin=master-bin
log-slave-updates=true
//重启MySQL服务
systemctl restart mysqld

登录MySQL服务给服务器授权(master节点)

//进入数据库

GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.10.%' IDENTIFIED BY '123456';

IDENTIFIED BY '123456': 设置用户 'myslave' 的登录密码为 '123456'。当从库节点使用该用户连接主库时,需要提供此密码进行身份验证。
FLUSH PRIVILEGES;        //刷新权限设置
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      603 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

#需记住603数字
    

配置Slave从服务器(在两台server节点操作)

vi /etc/my.cnf

log-bin=slave1-bin
binlog-format = MIXED
server-id = 2

#serverid需要不相同

进入MySQL服务器配置

CHANGE MASTER TO
    master_host='192.168.10.51',
    master_user='myslave',
    master_password='123456',
    master_log_file='master-bin.000001',
    master_log_pos=603;

start slave;        //启动同步

show slave status\G;            //查看Slave状态
确保两个均为yes即可

#master_log_pos=603;master节点查询到的数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值