MySQL主从同步的概述_mysql主从复制概述以及配置mysql5.7.10实现简单主从复制

什么是主从复制:

通过将Mysql的某一台主机的 数据复制到其它主机,复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slave)。进行复制时,所有对数据表的写操作必须在主服务器上进行。否则,因为主服务器不会同步从服务器的数据,会导致主从数据不一致的问题。mysql的主从复制功能是构建高性能大型应用服务器的基础

主从复制的作用:

1.辅助实现数据的备份

2.实现数据服务的高可用和异地容灾

3.实现多个服务器分摊负载

主从复制的实现原理:

实现整个复制过程主要由三个线程来完成,其中slave端两个线程(Sql线程和IO线程) ,master端一个线程(IO线程)

1.master将数据库改变的记录到二进制日志(binary log)中

2.slave的IO线程向master请求二进制日志中的事件

3.master服务器的IO线程将slave服务器的IO线程请求的数据相应给对方

4.slave的IO线程接收到数据并依次写入到中继日志里面

5.slave的SQL线程检测到中继日志发生改变,解析出master发生改变执行的sql语句并在自身执行一遍

主从复制类别:

1.基于语句的复制:每一条会修改数据的语句都会记录到master的二进制中。slave在复制的时候SQL线程会解析成和原来master端执行过的相同的语句来再次执行

优点:不需要记录每一行数据的变化,减少二进制日志量,节约了IO成本,提高了性能。

缺点:由于他是记录的执行语句,所以,为了让这些语句在slave端也能正确执行,那么他还必须记录每条语句在执行的时候的一些相关信息,也就是上下文信息,以保证所有语句在slave端杯执行的时候能够得到和在master端执行时候相同的结果。当master的某个SQL语句中执行了一些特殊函数,再复制到slave来执行可能会导致值不一样。例如:master表中的某个字段了插入一条select now();的执行结果,当这条语句再复制到slave上去执行的时候,结果数据就无法被正确复制。

2.基于行的复制:二进制日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。

优点:二进制日志中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以RowLevel的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程,或函数,以及触发器的调用和触发无法被正确复制的问题

缺点:所有的执行的语句当记录到BinaryLog中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如有这样一条update语句:update user_info set sal=15000 where user_id >= 3,执行之后,日志中记录的不是这条update语句所对应的事件(MySQL以事件的形式来记录BinaryLog日志),而是这条语句所更新的每一条记录的变化情况,这样就记录成很多条记录被更新的很多个事件,增加了IO负担。

3.混合方式:基于语句+基于行的混合方式 中和了前两种方式的优缺点,是一种相对比较理想的复制方式

mysql的这个复制级别也就是通过配置二进制日志的记录格式来决定的。

mysql主从复制配置:

环境说明:

master和slave数据初始都是没有数据的

master:

操作系统:centos6.7

mysql版本:mysql5.7.10

主机地址:192.168.1.223

slave:

操作系统:centos6.7

mysql版本:mysql5.7.10

主机地址:192.168.1.222

1.master端配置工作

启动二进制日志

选择一个唯一的server-idvi /etc/my.cnf

log-bin=/mydata/binlogs/master-bin

binlog_format=mixed

server-id = 2

重启mysql服务service mysqld restart

登录mysql创建具有复制权限的用户mysql -uroot -p 'password’

grant replication slave on *.* to repuser@'192.168.1.222' identified by 'password';

flush privileges;

2.slave端配置工作

修改server-id

启用中继日志vi /etc/my.cnf

server-id = 11

relay-log = /mydata/relaylogs/relay-bin

log-bin=OFF

重启mysql服务service mysqld restart

登录mysql连接主服务器mysql -uroot -p 'password’

change master to master_host='192.168.1.223',master_user='repuser',master_password='password'

查看slave工作状态show slave status \G;

*************************** 1. row ***************************

Slave_IO_State:

Master_Host: 192.168.1.223

Master_User: repuser

Master_Port: 3306

Connect_Retry: 60

Master_Log_File:

Read_Master_Log_Pos: 4

Relay_Log_File: relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File:

Slave_IO_Running: No            #现在io线程处于关闭状态

Slave_SQL_Running: No           #sql线程也处于关闭状态

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 0

Relay_Log_Space: 154

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 0

Master_UUID:

Master_Info_File: /mydata/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

启动复制:start slave;

6.验证主从配置结果:

登录主服务器创建一个数据库mysql -uroot -p'password'

create database two_db;

show databases;

d9b0eda1324bd7ac75b7dd0a54ea7475.png

登录slave服务器查看是否已同步

c523ed4dbda518a25bd8984c02969cbf.png

至此mysql简单主从复制基本完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值