MySQL 主从复制及原理

1.主从复制配置
a. 环境:CentOS7.4,IP地址分别是主库:192.168.11.146,从库:192.168.11.238,
主库版本应低于或等于从库版本,这里用的都是MySQL 8.0.13
b.主库配置/etc/my.cnf文件

[mysqld]

#一般配置选项
user=mysql
port=3306
server_id=1
basedir= /usr/local/mysql
datadir= /usr/app/mysqldata

character_set_server=utf8

pid_file=/usr/app/mysqldata/mysql.pid
socket = /var/run/mysqld/mysqld.sock
#错误日志
log_error= /usr/app/mysqldata/myerror.log
#慢日志
slow_query_log=1
slow_query_log_file=/usr/app/mysqllog/mysql.slow
long_query_time=5
#bin_log日志
log_bin=/usr/app/mysqllog/mysql_bin
skip_external_locking
skip_name_resolve
#开启独立表空间
innodb_file_per_table = on

[mysql]
no-auto-rehash
socket = /var/run/mysqld/mysqld.sock
#default-character-set=utf8
#safe-updates

[client]
loose-default-character-set = utf8

重启MySQL服务

/etc/init.d/mysqld start

授权slvave 用户

grant replication slave,replication client on . to ‘slvae_rp‘ identified by ‘111111‘;

flush privileges;

从库配置/etc/my.cnf文件

[mysqld]

#一般配置选项
user=mysql
port=3306
server_id=1
basedir= /usr/local/mysql
datadir= /usr/app/mysqldata

character_set_server=utf8

pid_file=/usr/app/mysqldata/mysql.pid
socket = /var/run/mysqld/mysqld.sock
#错误日志
log_error= /usr/app/mysqldata/myerror.log
#慢日志
slow_query_log=1
slow_query_log_file=/usr/app/mysqllog/mysql.slow
long_query_time=5
#bin_log日志
log_bin=/usr/app/mysqllog/mysql_bin
#开启中继日志
relay_log=/var/lib/mysql/relay-log
log_slave_updates=1 #从服务器将其SQL线程执行的更新记入到从服务器自己的二进制日志
read_only=1 #只读模式

skip_external_locking
skip_name_resolve
#开启独立表空间
innodb_file_per_table = on

[mysql]
no-auto-rehash
socket = /var/run/mysqld/mysqld.sock
#default-character-set=utf8
#safe-updates

[client]
loose-default-character-set = utf8

重启mysql服务
/etc/init.d/mysqld restart

主库:
show master status;

从库:
change master to
master_host=‘192.168.11.146‘,
master_port=3306,
master_user=‘slave_rp‘,
master_password=‘111111‘,
master_log_file=‘mysql-bin.000001‘,
master_log_pos=154;
开启从库slava
start slave;
查看从库状态
show slave status;

确认正常:
slave_io_running:yes
slave_sql_running:yes
seconds_behind_master 0

2.主从复制原理


从库生成两个线程,一个I/O线程,一个SQL线程;

i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;

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

原文地址:http://blog.51cto.com/11103985/2338911

时间: 2024-10-07 02:10:01

MySQL 主从复制及原理的相关文章

MySQL主从复制的原理及配置

[http://www.jb51.net/article/50053.htm] MySQL 数据库的高可用性架构: 集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单介绍复制的原理及配置,以及一些常见的问题. [优点] 1. 如果主服务器出现问题, 可以快速切换到从服务器提供的服务2. 可以在从服务器上执行查询操作, 降低主服务器的访问压力3. 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务注意一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询, 

MySQL主从复制-GTID原理

一.MySQL 主从复制原理阐述 Mysql主从复制:简单来说就是Mysql 同步,Ab 复制等,主从复制是单向的,只能从 Master 复制到 Slave 上,延时基本上是毫秒级别的(排除网络延迟等问题).一组复制结构中可以有多个Slave,对于 Master一般场景推荐只有一个,[根据您的业务进行调配,主主复制.延迟复制等] Mysql 传统复制是基于 Mysql 二进制文件(Mysql-Bin.000001),加上对应日志文件中每个事件的偏移量位置点(Postion). MySQL主从复制

MySQL主从复制的原理及配置方法(比较详细)

MySQL 的数据库的高可用性的架构大概有以下几种:集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单介绍复制的原理及配置,以及一些常见的问题 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以便从服务器可以对其数据拷贝执行相同的更新. 将主服务器的数据拷贝到从服务器的一个途径是使用LOAD DATA FROM MASTER语句.请注意LOAD DATA FRO

MySQL主从复制的常见拓扑、原理分析以及如何提高主从复制的效率总结

一.主从复制搭建方法参考 1.MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解请参考: http://blog.csdn.net/xlgen157387/article/details/51331244#comments 2.使用mysqlreplicate命令快速搭建 Mysql 主从复制: http://blog.csdn.net/xlgen157387/article/details/52452394 二.Mysql 主从复制的常用拓扑结构 2.1.一主一从 是最

mysql主从复制与读写分离

MySQL主从复制与读写分离 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部

MySQL主从复制与读写分离的实现

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的. 如下图所示: 下

MySQL主从复制与读写分离 --非原创

原文出处:http://www.cnblogs.com/luckcs/articles/2543607.html MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的. 如下图所示: 下面是我在实际工作过程中所整理的笔记,在此分享出来,以供大家参考. 一.MySQL的安装与

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 转载

http://heylinux.com/archives/1004.html MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy