在mysql主从结构的集群_mysql集群搭建-主从架构搭建

一、主从复制的原理

我们根据一张主从复制的原理图来讲解,它们主要是通过binlog日志完成同步的:

24fe8e58fffd492b070c45707e842ca1.png

1. 主数据库更新、删除、插入数据时,将这些操作sql写入binlog日志;

2. 当从数据库正常启动后,会连接到对应的主库中;

3. 在主数据库中,有一个binlog dump thread线程会将binlog的内容发送给从库;

4. 从数据库获取到主库发送过来的binlog内容后,会通过 I/O thread 将内容l写入到relay log文件中;

5. 从数据库中有一个SQL thread线程会不停的读取relay log的内容,每次读取的位置是上一次执行的位置,如果有新的内容则开始执行,并记录下执行的位置。

通过主从复制的原理可以知道,这种复制模式是一种异步操作,主库更新后的数据只负责发送,不会关心从库是否执行成功,也不会关心数据是否有效。

但是这种复制的最大好处就是效率快,数据库能够立即响应用户的操作需求。

二、主从复制的搭建

在这里我们主要以docker的方式进行搭建主从环境。

1.主库的搭建

第一步:创建mysql配置的文件my.cnf

#创建主库的文件夹,在这里是自己创建的配置文件,也可以使用mysql自己的文件

mkdir/opt/mysql/master

cd/opt/mysql/master

#创建主库的配置文件文件夹,并授权

mkdir conf data

chmod777 * -R

第二步:在配置文件中开启二进制文件

[mysqld]

log-bin=mysql-bin #开启二进制日志

server-id=1 #服务id,不可重复

#严格sql

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

第三步:创建docker容器

#容器名称

docker create --name mysql-master#挂载配置文件-v /opt/mysql/master/data:/var/lib/mysql-v/opt/mysql/master/conf:/etc/my.cnf.d

#端口号-p 3306:3306

#root的密码

-e MYSQL_ROOT_PASSWORD=123456#mysql使用的版本

percona:5.7.23

第四步:启动容器

docker start mysql-master

第五步:进入mysql,创建一个同步账户并授权

create user 'synchro'@'%' identified by 'synchro';

grant replication slave on*.* to 'synchro'@'%';

flush privileges;

至此,主库的搭建完毕。

2.从库的搭建

第一步:创建mysql配置的文件my.cnf

#创建从库的文件夹,在这里是自己创建的配置文件,也可以使用mysql自己的文件

mkdir/opt/mysql/slave

cd/opt/mysql/slave

#创建从库的配置文件文件夹,并授权

mkdir conf data

chmod777 * -R

第二步:修改从库的配置文件

[mysqld]

server-id=2#服务id,不可重复

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO

,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

第三步:创建docker容器

#容器名称

docker create--name mysql-slave

#挂载配置文件-v /opt/mysql/slave/data:/var/lib/mysql-v/opt/mysql/slave/conf:/etc/my.cnf.d

#端口号-p 3307:3306#root的密码-e MYSQL_ROOT_PASSWORD=123456#mysql使用的版本

percona:5.7.23

第四步:启动容器

docker start mysql-slave

至此从库已经搭建完毕。

3.主从复制的配置

第一步,打开mysql连接工具(本文使用的是navicat),连接到主库,查看主库的属性

show master status;

输出的结果,我们主要使用的是File字段的值和position字段的值:

a7bbdd4bba22acc895a5731f547f2007.png

第二步:打开mysql连接工具(本文使用的是navicat),连接到从库,输入主从配置的sql

CHANGE MASTER TO

#主库的地址

master_host='127.0.0.1',

#同步账户和密码

master_user='synchro',

master_password='synchro',

#主库的端口号

master_port=3306,

#这个是主库状态中的File字段的值

master_log_file='mysql-bin.000002',

#这个是主库状态中的Position字段的值

master_log_pos=648;

第三步:启动主从复制

start slave;

至此mysql的主从复制搭建完毕。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值