美文网首页
Mysql 主从复制

Mysql 主从复制

作者: 杰杰微电 | 来源:发表于2018-08-02 15:12 被阅读0次

主从复制工作原理

Master : 对数据有改变的语句操作(insert,drop,update,delete,create,alter)会写到Binary log 里面

Slave: slave服务器所有的数据都是来源于Master

Slave怎么同步?

I/O thread : 读取主服务器上Binary log (有变化的), 将读过来的二进制内容写到 Relay log 里面

SQL thread: 监测relay log ,从Relay log 里面的语句读出来,处理 replay (重放)操作,在slave 上操作

主从复制二进制日志类型

Binlog_format = statement

每一条修改数据的SQL 语句都会被记录到Master 端的bin-log 中,

slave 端在复制的时候SQL线程会解析成和原来的Master 端执行过的

相同的SQL语句再次执行

优点: 日志记录量少

缺点: 有可能数据不一致 (比如计算时间的函数的SQL语句,拿到从服务器来执行就会造成数据不一致)

Binlog_format = row  (官网推荐)

日志中记录每一行数据被修改的形式,然后在slave 端执行相同的数据修改

优点:避免数据不一致

缺点:日志量急据扩大(比如一次性update 10 万条记录),某些情况下还会使用statement

Binlog_format = mixed

根据具体SQL 语句来选择日志的记录形成

Master 主服务器配置 (MySQL 5.7.10)

vim /etc/my.cnf

[mysqld]

log_bin=master-bin

binlog_format=row

server_id=11

datadir=/var/lib/mysql                     //数据库文件的路径,可根据实际情况修改

socket=/var/lib/mysql/mysql.sock

character_set_server=utf8

max_connections=2000

log_timestamps=SYSTEM

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

root@WEB-01 mysql]  systemctl restart mysqld

查看初始化是否成功

ls /var/lib/mysql          // 查看目录下面是否有数据库的目录(mysql 目录,sys 目录)生成

如果初始化没成功,rm -rf /var/lib/mysql/*  , 重新初始化。

mysql -uroot -p

mysql>grant replication slave on *.* to 'repuser'@'slaveip' identified by 'Xsjy%123';

mysql>flush privileges;

mysql>select user,host from mysql.user;            //查看授权用户

mysql>show grants for repuser@'slaveip';          //查看授权用户情况

mysql>show master status\G

*******************************************************************************************

从服务器配置

[mysqld]

log_bin=slave-bin

binlog_format=row

relay_log=relay_bin

server_id=12

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

character_set_server=utf8

max_connections=2000

log_timestamps=SYSTEM

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

root@WEB-01 mysql]  systemctl restart mysqld       // 初始化启动从数据库

mysql -u root 登录mysql

// 设定主服务器的相关信息

mysql>change master to master_host='10.25.190.201',master_user='repuser',master_password='Xsjy%123',master_log_file='master-bin.000001',master_log_pos=1048,master_port=3306;

master_host : 主服务IP

master_user:  主服务器允许复制的用户名

master_password: 密码

master_log_file : 当前日志文件的名称  在主服务器上用 show master status\G 查看相关信息

master_log_pos : 当前日志文件的位置

mysql>start slave;

mysql>show slave status\G

查看这两个进程是否yes

Slave_IO_Running: yes

Slave_SQL_Running: yes

相关文章

  • MySQL如何配置主从复制,如何修复主从复制出现的异常?

    MySQL如何配置主从复制,如何修复主从复制出现的异常? 一、什么是Mysql主从复制 MySQL主从复制是其最重...

  • MySQL-主从复制&读写分离

    零、本文纲要 一、MySQL主从复制 主从复制 主从复制过程 配置主从复制 二、MySQL读写分离 读写分离 Sh...

  • Mysql 主从复制

    Mysql 主从复制 MySQL Replication 主从复制(也称 AB 复制)允许将来自一个MySQL数据...

  • 主从复制 & MHA

    一,mysql主从复制 (1)场景一(主从复制 _ 全新环境下) (2)场景二(主从复制 _ mysql已经使用一...

  • mysql主从复制

    构建MySQL主从复制 MySQL的主从复制和mysql的读写分离两者有着紧密联系,数据的读写分离实在主从复制的基...

  • Spring Data JPA 使用主从数据源

    Mysql 配置主从复制 参考:Mysql主从复制-半同步复制[https://www.jianshu.com/p...

  • MySQL集群篇

    1 集群之主从复制 1.1 主从复制概述 MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群...

  • 深度探索MySQL主从复制原理

    概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什...

  • 【转】MySQL 8.0复制改进

    1 - MySQL主从复制模型 我们从最基本的主从复制模型开始说起,下图是最经典的MySQL主从复制架构图: My...

  • mysql主从代理

    mysql主从复制+读写分离 环境: mysql主:193.168.1.1 mysql从:193.168.1.2 ...

网友评论

      本文标题:Mysql 主从复制

      本文链接:https://www.haomeiwen.com/subject/gitsvftx.html