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

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

时间:2023-06-18 18:22:04浏览次数:70  
标签:Slave slave SQL mysql Master MySQL master 主从 图文

文章目录


前言

主从原理:
在这里插入图片描述
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 为数据库的名称

1234567891011121314

在这里插入图片描述

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’@’%’

12345678910111213141516

在这里插入图片描述

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

代码如下(示例):

查看log_bin日志是否属于开启状态
show variables like ‘log_bin’;

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


1234567

在这里插入图片描述
在这里插入图片描述
这里要记住 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


1234567891011

在这里插入图片描述
在这里插入图片描述

//执行完后开启slave
start slave;
12

在这里插入图片描述
查看同步状态

show slave status \G
若下面两个状态都是yes,则搭建成功,若是Slave_IO_Running为NO,则去查看master和slave的uuid是否一致
  Slave_IO_Running: No
  Slave_SQL_Running: Yes
1234
*************************** 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)

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960

3.UUID的相关配置

//查看主机与从机的uuid
Show variables like ‘%uuid%’
//如果两边一致就需要将从库的auto.cnf文件删除
//可以选择备份 或者删除
//备份
mv auto.cnf  ./auto.cnf.back
//删除
rm -rf auto.cnf
12345678
删除后在启动从机mysql服务进入客户端执行salve状态
show slave status \G
//状态会变为
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

123456

四、测试

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

在linux环境下安装JDK、tomcat和mysql(详细图文):https://blog.csdn.net/Unparalleled1004/article/details/109606331

关注微信公众号,了解更多知识
在这里插入图片描述

标签:Slave,slave,SQL,mysql,Master,MySQL,master,主从,图文
From: https://www.cnblogs.com/xiondun/p/17489444.html

相关文章

  • mysql记录多行结果的小实验
    通过#保存多个记录,比如,下线开始时间#下线多少天,下线结束时间如果想要做数据计算可以通过SUBSTRING_INDEX(offline_record,'#',3)拿到对应的结果。比如我要对比获取第三个的所有数据,现在时间是2023-06-1814:20:21超过这个时间的就要离线了。我要查询到所有的数据。SELECT*......
  • 2023.6.18 11.数据库主从复制
    11.数据库主从复制1.MySQL数据库传统复制2.MySQL数据库Gtid复制3.MySQL数据库多源复制4.MysQL数据库读写分离5.MySQL数据库架构演变Mysql的主从架构模式,是很多企业⼴泛使⽤,并且是⼴为熟知的⼀种架构模式,这是DBA所应该熟练掌握的技能。1.mysql主从复制主要⽤途a.⽤于......
  • Linux安装mysql登录问题-适用root强制登录
    安装mysql后,常规方法登录出现错误提示。直接:/etc/my.cnf添加以下加粗的三句:#cacheinMySQL.Startat70%oftotalRAMfordedicatedserver,else10%.#innodb_buffer_pool_size=128M##Removeleading#toturnonaveryimportantdataintegrityoption:loggi......
  • mysql -- 根据变量a的不同值设置变量b(case when + set)
    需求:根据变量 @period_endtime的不同值,设置相对应的@end_type@period_endtime@end_type03311063020930312314 实现:set@i_period='20230331';SET@period_endtime=RIGHT(@i_period,4);SET@end_type=CASE@period_endtime......
  • 基于Eclipse+MySQL+J2EE开发的天猫商城
    基于Eclipse+MySQL+J2EE开发的天猫商城项目介绍......
  • mysql:报错Incorrect string value:’\xF0\x9F\x94\xA6\xF0\x9F…’
     一,报错信息:1,报错:Incorrectstringvalue:'\xF0\x9F\x94\xA6\xF0\x9F...'forcolumn'content'atrow1报错的原因:字符串中包含了emoji表情:如:......
  • MySQL数据库页存储结构学习与了解
    MySQL数据库页存储结构学习与了解背景MySQL总是出现奇奇怪怪的问题.想着自己能够学习与提高一下.最近看了很多文档.关于MySQL数据库相关的.想着总结和提炼一下,希望能够给未来的工作提供一下指导.MySQL的存储引擎MySQL有多种存储引擎,主要有:InnoDB:是MySQL的默认存储引擎。......
  • mysql中的索引
    1、索引是什么?在mysql当中,内部系统它有两种查询方式,一种是(全盘扫描查询),另外一种是通过(索引检索查询),通过添加了索引的字段进行查询,可以大大提高查询效率mysql中的索引相当于一本书中的目录,通过索引查询数据类似于与通过书的目录查找内容,查询速度可以大大增加。MySQL中的索引......
  • 【后端面经】MySQL主键、唯一索引、联合索引的区别和作用
    目录0.简介1.主键2.唯一索引3.联合索引4.索引对数据库操作的影响5.其他索引5.1普通索引5.2全文索引5.3前缀索引6.总结7.参考资料0.简介索引是一类特殊的文件,用来存储检索信息,使数据库查找更加快速。1.主键主键是一类特殊的唯一索引,选择某一列元素作为主键,用来表......
  • Mysql union和union all用法
    1:什么时候用union和unionall?  我们经常会碰到这样的应用,两个表的数据按照一定的查询条件查询出来以后,需要将结果合并到一起显示出来,这个时候就需要用到union和unionall关键字来实现这样的功能,union和unionall的主要区别是unionall是把结果集直接合并在一起,而union......