mysql主从复制

5 分钟

前言

一、Mysql主从复制解决的问题

二、主从复制的原理

三、主从复制的配置

配置主库

配置从库

三、测试

四、经历过的错误


前言

今天偶然刷到了一篇文章,看到了mysql主从复制,刚好最近在学springboot开发,主从复制可以用的上,然后试着搞了一下,也是历经磨难,记录一下。


一、Mysql主从复制解决的问题

我们都知道,当一个程序用户查询访问或者对数据库进行增删改查的时候,如果后台开发只应用了一台数据库服务器,但是访问的人数足够多的,会导致数据库服务器的访问压力过大,导致数据出现缓慢甚至死机的情况,而Mysq主从复制就是为了解决这样的一个问题,通过设置一个主数据库和从库的方式,同步更新数据,分摊数据库的压力。

二、主从复制的原理

主从复制是一个异步复制的过程,主要是从库发送更新事件到从库,从库读取更新的数据,然后更新内容与主库保持一致。

大致过程如下:

1,每当主库更新的时候,更新的事件日志都会存储在二进制文件,称为binlog,当数据库启动,所有的数据库更新记录都会被保存到binlog中。

2,当从库连接主库后,主库会创建一个线程,将binlog发送到从库中并对线程上锁,直到该事件被读取完成,锁才会释放。

3,当从库启动slave后,从库会创建一个I/O线程连接到主库并请求主库发送binlog里

4、从库开始进行复制,创建一个SQL线程,根据读取到的文件进行更新。

三、主从复制的配置

配置主库

系统:Ubuntu(从库,IP地址192.168.23.129),kali(主库,IP地址 192.168.23.137)

1、配置/etc/mysql/my.cnf文件

设置log-bin日志,设置唯一的server-id,注意从库的server-
id要比主库的大,注意要配置bind_address,否则默认是127.0.0.1,连接数据库会不成功。

2、开启kali数据库的外连

GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT
OPTION; 赋予root用户所有权限,并且允许所有主机外连。

flush privileges; 执行权限。

记住配置完后要重启数据库。

3、配置Master

create user xiaoming identified by 'Root@root';

grant replication slave on . to xiaoming;

创建一个用户xiaoming,密码为Root@root,并赋予建立复制的用户权限。

show master status; 查看master状态后

配置从库

1、修改/etc/mysql/my.cnf文件

重启服务

2、 进入从库命令行

change master to
master_host='192.168.23.137',master_user='xiaoming',master_password='Root@root',master_log_file='mysql-
bin.000003',master_log_pos=1010; 设置连接主库
start slave;启动slave

Slave_IO_Running和Slave_SQL_Running都为Yes代表成功

假如出现以下错误:


那是因为节点已经存在了,执行以下重置即可

三、测试

1、在主库新建立数据库tests,并建表test

2、进入从库,查看是否同步

同步成功。

四、经历过的错误

假如出现连接不成功的情况,可以看看防火墙,3306端口是否被过滤了,进行开启。

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

开始虽然都出现了yes,但是好像主库更新,从库并没有,远程连接数据还出现了1055错误,是因为对select字段做了限制,只能是group by或者聚合。

set @@global.sql_mode =
'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

总结

出了很多错,开始各种不行,就百度乱弄一通,结果弄成了,弄这个主要了为了后面开发进行读写分离。

~  ~  The   End  ~  ~


 赏 
承蒙厚爱,倍感珍贵,我会继续努力哒!
logo图像
tips
文章二维码 分类标签:开发开发
文章标题:mysql主从复制
文章链接:https://aiwin.fun/index.php/archives/961/
最后编辑:2024 年 1 月 4 日 17:11 By Aiwin
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
(*) 3 + 4 =
快来做第一个评论的人吧~