MySQL数据库主从搭建(详细图文)
创始人
2024-09-26 00:49:06
0

MySQL数据库主从搭建(详细图文)

前言
主从原理:
在这里插入图片描述
MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

一、主从搭建准备

1.主从数据库版本一致
2.主从数据库内数据保持一致
3.克隆虚拟机,只需在一个虚拟机搭建环境,然后克隆两台虚拟机当做从机(我搭建的是一主两从)

二、Master

1.修改mysql配置文件

cd /etc  vim my.cnf 或者 vim /etc/my.cnf ./etc/my.cnf  ##master 中my.cnf需要添加的内容 server-id=188    //master  192.168.88.188  去最后的188作为id log-bin=mysql-bin binlog_format=MIXED sync_binlog=1 expire_logs_days=0  binlog-do-db=news    //news 为数据库的名称 

在这里插入图片描述
2.创建授权用户
//开启mysql服务

service mysqld start 

//查看mysql运行状态

service mysqld status 

//进入mysql

mysql -u root -p 

注意复制粘贴后将标点符号更改为西文符号!!

//创建一个从机用户 并指定可以从本机外部进行访问
//MySQL5.7clone为密码,设置一个自己能记住的密码

create user 'slave'@'%' identified by ‘MySQL5.7clone’ 

//设置slave远程从机账户拥有一个可以复制的权限

grant replication slave,replication client on *.* to ‘slave’@’%’ 

在这里插入图片描述

3.查看日志和宿主机master的状态

代码如下(示例):

查看log_bin日志是否属于开启状态

show variables like ‘log_bin’; 

查看当前操作的宿主机是否为master状态

show master status; 

在这里插入图片描述
在这里插入图片描述
这里要记住 file和position,后面配置slave会用到

该处使用的url网络请求的数据。

三、slave操作

1.修改宿主机的server-id
进入从库宿主机后修改my.cnf配置文件加入server-id即可
同master操作
但是只需要 添加server-id即可

2.进入mysql执行相关命令
//首先要关掉slave

stop slave 

//重点
//执行下面的语句 将下面的语句复制到记事本上,保证是一行数据,然后复制到mysql中
//master_host为master的ip
//master_password 为授权时设置的密码
//master_log_file 分别为上文中需要你记住的file和position

change master to master_host='192.168.88.188', master_port=3306,master_user='slave',master_password='MySQL5.7clone',master_log_file='mysql-bin.000001',master_log_file=617 

在这里插入图片描述
在这里插入图片描述
//执行完后开启slave
start slave;
在这里插入图片描述
查看同步状态

show slave status \G 

若下面两个状态都是yes,则搭建成功,若是Slave_IO_Running为NO,则去查看master和slave的uuid是否一致

  Slave_IO_Running: No   Slave_SQL_Running: Yes 
*************************** 1. row ***************************                Slave_IO_State:                    Master_Host: 192.168.25.136                   Master_User: slave                   Master_Port: 3306                 Connect_Retry: 60               Master_Log_File: mysql-bin.000001           Read_Master_Log_Pos: 617                Relay_Log_File: localhost-relay-bin.000001                 Relay_Log_Pos: 4         Relay_Master_Log_File: mysql-bin.000001              Slave_IO_Running: No             Slave_SQL_Running: Yes               Replicate_Do_DB:            Replicate_Ignore_DB:             Replicate_Do_Table:         Replicate_Ignore_Table:        Replicate_Wild_Do_Table:    Replicate_Wild_Ignore_Table:                     Last_Errno: 0                    Last_Error:                   Skip_Counter: 0           Exec_Master_Log_Pos: 617               Relay_Log_Space: 154               Until_Condition: None                Until_Log_File:                  Until_Log_Pos: 0            Master_SSL_Allowed: No            Master_SSL_CA_File:             Master_SSL_CA_Path:                Master_SSL_Cert:              Master_SSL_Cipher:                 Master_SSL_Key:          Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No                 Last_IO_Errno: 1593                 Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.                Last_SQL_Errno: 0                Last_SQL_Error:    Replicate_Ignore_Server_Ids:               Master_Server_Id: 136                   Master_UUID:               Master_Info_File: /var/lib/mysql/master.info                     SQL_Delay: 0           SQL_Remaining_Delay: NULL       Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates            Master_Retry_Count: 86400                   Master_Bind:        Last_IO_Error_Timestamp: 201114 11:40:14      Last_SQL_Error_Timestamp:                 Master_SSL_Crl:             Master_SSL_Crlpath:             Retrieved_Gtid_Set:              Executed_Gtid_Set:                  Auto_Position: 0          Replicate_Rewrite_DB:                   Channel_Name:             Master_TLS_Version:  1 row in set (0.00 sec) 

3.UUID的相关配置

//查看主机与从机的uuid

Show variables like ‘%uuid%’ 

//如果两边一致就需要将从库的auto.cnf文件删除
//可以选择备份 或者删除
//备份

mv auto.cnf  ./auto.cnf.back 

//删除

rm -rf auto.cnf 

删除后在启动从机mysql服务进入客户端执行salve状态

show slave status \G 

//状态会变为

Slave_IO_Running: Yes Slave_SQL_Running: Yes 

四、测试

在数据库工具新建连接,一个为master,将master的数据导出
新建两个slave连接,将数据导入
修改master连接中的数据,查看从库是否改变,改变则MySql数据库主从搭建成功

相关内容

热门资讯

安卓系统包后缀名,包后缀名背后... 你有没有发现,每次下载安卓应用时,文件名后面总会有那么几个神秘的字母组合,像是“apk”、“jar”...
安卓系统好用的工作软件,盘点十... 你有没有发现,自从你把手机里的安卓系统升级后,工作效率好像提高了不少呢?今天,就让我来给你细细道来,...
qz777app安卓系统,安卓... 你有没有听说过那个超火的qz777app安卓系统?最近,这款应用在朋友圈里可是掀起了一股热潮呢!今天...
安卓系统设备网络异响,安卓设备... 你有没有遇到过这种情况?手机屏幕上突然出现了一阵奇怪的“嗡嗡”声,或者是那种让人心烦的“嘀嘀”声?这...
安卓系统可以刷吗,深度解析刷机... 你有没有想过,你的安卓手机是不是也能来个华丽变身呢?没错,今天就要来聊聊这个热门话题——安卓系统可以...
可绘画的安卓系统平板,解锁创意... 你有没有想过,拥有一款可以随心所欲绘画的安卓系统平板,那会是多么酷炫的事情啊!想象手指轻轻一触,就能...
安卓系统能用流量卡吗,流量卡使... 你有没有想过,你的安卓手机是不是也能用流量卡呢?这可是个挺实用的问题,毕竟现在谁不想随时随地都能畅游...
安卓系统更新字体变大,体验全新... 最近发现了一个超级实用的小秘密,那就是安卓系统更新后字体竟然变大了!是不是觉得这个变化有点神奇?那就...
手机刷双系统安卓win,畅享安... 你有没有想过,你的手机可以同时运行安卓和Windows系统呢?没错,就是那种一边刷着抖音,一边还能处...
安卓项目讲座管理系统,打造高效... 你有没有想过,一个讲座管理系统竟然能让你轻松管理安卓项目中的各种讲座信息?没错,就是那种能让你在忙碌...
苹果手机植入安卓系统,开启全新... 你有没有想过,如果有一天你的苹果手机里装上了安卓系统,会是怎样的场景呢?想象那熟悉的iOS界面突然变...
安卓系统福鼎天气预报,实时掌握... 你知道吗?最近天气变化真是让人捉摸不透,尤其是对于我们这些手机不离手的现代人来说,一款靠谱的天气预报...
华为重新启用安卓系统,再创辉煌... 你知道吗?最近科技圈可是炸开了锅,华为这个巨头竟然重新启用了安卓系统!这可不是一个小小的新闻,它背后...
葫芦侠支持安卓系统,畅享海量游... 你知道吗?最近有个超级好玩的游戏,它就是葫芦侠!而且,最让人兴奋的是,这个葫芦侠竟然支持安卓系统!是...
盘锦攻略系统和安卓手机,安卓手... 你打算去盘锦旅行了吗?别急,别急,让我来给你支个招儿!现在市面上有很多旅行攻略,但今天我要给你介绍的...
华为安卓系统固件下载,解锁新功... 你有没有发现,最近华为的新款手机简直不要太火啊!不过,你知道吗?想要让你的华为手机发挥出最大的性能,...
插画安卓系统有哪些类型,从经典... 你有没有发现,现在手机上的插画风格真是五花八门,让人眼花缭乱?尤其是安卓系统,简直就是插画爱好者的天...
安卓系统信息储存卡,揭秘存储奥... 你有没有发现,手机里的照片越来越多,视频也越来越长,安卓系统的存储空间似乎总是不够用?别急,今天就来...
如何在苹果系统上下安卓,跨平台... 你有没有想过在苹果系统上也能用安卓应用呢?是不是觉得这有点像是在苹果园里种西瓜,听起来有点不可思议?...
极简版安卓rom系统,畅享高效... 亲爱的读者,你是否厌倦了手机上那些繁杂的界面和功能?想要一个简洁、高效的操作体验?那就得来了解一下极...