Bootstrap

MySQL主从复制搭建详解

文章目录

        1、实现原理

        2、实现步骤

          2.1 主服务器配置
          2.2 从服务器配置
          2.3 测试

mysql主从复制可以对数据备份,实现高可用,主服务器崩溃,从服务器还可以使用。通过读写分离,提高数据库负载。

但是不建议有太多的从节点,若存在多从节点需要同步主节点的数据,如果数据太多会造成延时,会导致数据的一致性问题。

1、实现原理

MySQL主从复制,依靠二进制日志文件来实现,将主数据库中的DDL和DML操作通过二进制日志(binlog)传输到从数据库上,然后将这些日志重新执行。从而使得从数据库的数据与主数据库保持一致。

此过程涉及到三个线程,一个运行咋主节点(log dump thread),其余2个(I/O SQL thread)运行在从节点上。

具体步骤如下:

(1)主服务器会将写操作,写入自己的二进制日志文件中。
(2)从服务器的IO线程会连接mysql主服务器,请求读取主服务器的二进制日志指定内容。
(3)主服务器的IO线程将二进制内容读取到,复制给mysql从服务器的IO线程。
(4)从服务器的IO线程将收到的日志,写入自己的中继日志中。
(5)从服务器的SQL线程执行中继日志的mysql语句。

2、实现步骤

在此演示一主一从,2台虚拟机,都安装mysql,如下:

节点ip数据库角色
主节点

192.168.159.130

Mysql主服务器
从节点192.168.159.131Mysql从服务器
2.1主服务器配置

       主节点需要做的工作就是创建用户并赋予权限,然后开启binlog日志。

        首先创建给从服务器登录用的账号和密码,如下:

create user 'root'@'192.168.159.131' identified by 'wzj';

赋予权限

grant replication slave on *.* to 'root'@'192.168.159.131' identified by 'wzj';

修改配置文件

vi /etc/my.cnf

查看主服务器状态信息,后面会用到

 

2.2从服务器配置 

从服务器需要做的工作就是配置同步日志,指定主节点的ip、端口、用户、密码等,然后启动从节点

首先修改配置文件

vi /etc/my.cnf
log-bin=slave-a-bin
binlog-format=ROW
server-id=2

重启从服务器

systemctl restart mysql

指定主服务器信息

change master to master_host='192.168.159.130',master_user='root',master_password='wzj',master_log_file='master-a-bin.000001',master_log_pos=120;

master_host 是主节点ip,master_user 和 master_password 是主节点创建给从节点的账号和密码,master_log_file 和master_log_pos 根据上一步查询出来的File和Position值自行更换。

启动从节点

start slave;

 

查看从节点状态

判断是否成功主要看 Slave_IO_Running 和 Slave_SQL_Running 是否都为YES。

如果虚拟机是克隆的,Slave_IO_Running为No

如下解决:

首先安装目录auto.cnf文件里对比server-uuid 是否一样,如果一样修改了不一样就行,或者删了文件重启mysql服务

cat /var/lib/mysql/auto.cnf

2.3 测试

在navicat测试,方便,因为在主服务器中,同步的数据库是 db_test,主服务器创建

再测试导入表结构及数据

到此结束,ok

;