博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从无到有实现主从复制
阅读量:4709 次
发布时间:2019-06-10

本文共 1673 字,大约阅读时间需要 5 分钟。

 

读写分离的实现需要两个步骤:

第一:读写操作分别指向不同服务器。

第二:不同服务器的数据保持同步。

 

这里面的知识含量非常的大,我要做的是将流程尽量简化进行博客记录,方便日后更加直接高效的部署数据库。

 

读写操作部分对于开发者来说最常用的方式是在项目中根据sql类型进行选择不同的数据库地址,如insert update 走主库  select走从库,还有一种方式是使用第三方开发的中间件服务。

 

这篇博客主要记录主从复制。

 

在网上找了一张图,虽然丑了点,但意思就是这样

 

如图所示,完成主从复制的整个流程需要三个进程:

(为了思路清晰,我特意按照顺序进行阐述)

 

前提:开启二进制日志记录后,主库每次提交事务完成数据更新前,会将数据更新的事件记录到二进制日志中,然后才会进行事务提交。

 

1.从库I/O线程:此线程会跟主库建立一个客户端连接,连接建立完成后,主库上会启动一个二进制转储线程。

2.主库二进制转储线程:负责读取主库上的二进制日志中的事件,读取到后,从库I/O线程会将事件记录到从库的中继日志中。

3.从库的SQL线程:该线程从中继日志中读取事件并在从库中执行,从而实现数据更新。

 

接下来,我将根据标准流程部署主从复制。

 

我这里开了两台虚拟机,centos1为主库,centos2为从库。

 

创建复制账号:

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO qq000@'192.168.31.%' IDENTIFIED BY 'ZZZxxx/123456'
此sql主从都需执行一遍,至于主从都赋予这两个权限是因为从库需要有随时变成主库的准备。

 

主库配置:

vim /etc/my.cnf

log_bin = mysql-binserver_id = 1

(log_bin为二进制日志指定名称可自定义,server_id需要唯一,我的centos1设为1,centos2设为2)

 

配置好后重启MySQL: 

systemctl restart mysqld

 

在MySQL中执行:

show master status;

会看到MySQL已经创建了二进制日志文件

从库配置:

vim /etc/my.cnf

log_bin = mysql-binserver_id = 2relay_log = /var/lib/mysql/mysql-relay-binlog_slave_updates = 1read_only = 1

(

relay_id指定中继日志的路径,

log_slave_update允许从库将其重放的事件也记录到自身的二进制日志中,

read_only是设置从库只读状态 但不会影响slave同步复制的功能。

)

 

重启MySQL:

systemctl restart mysqld

 

在从库中执行sql进行复制目标的配置:

CHANGE MASTER TO MASTER_HOST='192.168.31.244',MASTER_USER='qq000',MASTER_PASSWORD='ZZZxxx/123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0;

 

开始复制:

START SLAVE

 

查看状态:

SHOW SLAVE STATUS

 

接下来很大几率就是解决各种报错的问题了

 

这两个字段 必须为yes

如果不对,那么下面这个字段会有报错信息:

 

或者配置信息有误,或者防火墙不通(firewalld selinux),或者从库本身的数据和主库有比较大的差异。

 

如果出现表存在库存在的错误 可以用如下两条三条sql搞定:

stop slave;set global sql_slave_skip_counter=1;start slave;

 

错误处理完成后 在主库创建一张表test_a

 

从库自动同步

 

转载于:https://www.cnblogs.com/fengyumeng/p/8045274.html

你可能感兴趣的文章
yahoo的30条优化规则
查看>>
[CCF2015.09]题解
查看>>
[NYIST15]括号匹配(二)(区间dp)
查看>>
json_value.cpp : fatal error C1083: 无法打开编译器生成的文件:No such file or directory
查看>>
洛谷 P1101 单词方阵
查看>>
Swift DispatchQueue
查看>>
C#和JAVA 访问修饰符
查看>>
小甲鱼OD学习第1讲
查看>>
HDU-1085 Holding Bin-Laden Captive-母函数
查看>>
php提示undefined index的几种解决方法
查看>>
LRJ
查看>>
Struts2环境搭建
查看>>
Linux: Check version info
查看>>
stl学习之测试stlen,cout等的运行速度
查看>>
魔戒三曲,黑暗散去;人皇加冕,光明归来
查看>>
Error和Exception
查看>>
Python和Singleton (单件)模式[转载]
查看>>
httpclient设置proxy与proxyselector
查看>>
IT常用单词
查看>>
拓扑排序
查看>>