mysql主从复制搭建(一主一从)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
    • MySQL复制过程分为三部:
  • 一、准备工作
  • 二、配置==>主库Master
  • 三、配置==>从库Slave
      • Slave_IO_Running: Yes
      • Slave_SQL_Running: Yes
  • 四、测试
    • 至此,主库分离成功实现


前言

介绍

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制然后解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具

在这里插入图片描述

MySQL复制过程分为三部:

==> master将改变记录到二进制日志(binary log)

==> slave将master的binary log拷贝到它的中继日志(relay log)

==> slave重做中继日志中的事件,将改变应用到自己的数据库中


一、准备工作

1、提前准备好两台服务器,分别安装Mysql
==> 主库Master 192.168.100.66

==> 从库Slave 192.168.100.67

2、使用克隆弄出另一台服务器的注意事项
博主两台linux服务器都是使用VMware虚拟机搭建的,为了避免重装mysql的麻烦,另外一台linux服务器是克隆出来的,克隆之后必须修改Mac地址,ip,UUID,还有mysql的UUID。

二、配置==>主库Master

1、在/etc/hosts里添加两侧主机的IP和主机名(选做)

192.168.100.66 mysql57
192.168.100.67 mysql57b


2、 先让所有的MYSQL数据库的UUID保持不同(如果你是直接复制的安装好MYSQL的虚拟机,那么每个虚拟机上搭载的MYSQL数据库UUID是一致的)

vi /data/mysql_data/auto.cnf

[auto]
server-uuid=f787ff18-b491-11eb-9910-080027c8eeff
如果大家发现所有的MYSQL的uuid都是一个,那么你就给他改一下
[auto]
server-uuid=f787ff18-b491-11eb-9910-080027c8eefa


3、主节点参数修改Mysql数据库的配置文件/etc/my.cnf

#MASTER-SLAVE
server-id = 1
binlog-do-db=hr
#binlog-do-db=
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#expire_logs_days=7

参数说明:
server-id = 1 主节点的server-id,集群中每一台服务器的server-id都不允许相同
binlog-do-db=hr 你需要复制的库 hr
#binlog-do-db=test
binlog-ignore-db=mysql #不需要复制的库
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#expire_logs_days=7 binlog日志过期天数设置


4、重新启动mysql数据库服务
servicer mysqld start


5、创建复制用户(主库)
GRANT ALL PRIVILEGES ON . TO ‘repl’@‘%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
FLUSH PRIVILEGES;


三、配置==>从库Slave

1、从节点参数修改Mysql数据库的配置文件/etc/my.cnf
server-id = 2
read_only = 1
#super_read_only=1
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
master_info_repository=TABLE
relay_log_info_repository=TABLE
#relay_log_recovery=1

参数说明
server-id = 2
从服务器的server-id 不能和主服务器相同

read_only = 1
#super_read_only=1
设置从库只读状态,避免在从库上写操作,但该指令对超级管理员是无效的,mysql5.7增加了一个新的参数super_read_only,该参数使得超级管理员也无法进行写操作。但是super_read_only这个参数大部分都是关闭掉的

relay-log=slave-relay-bin
中转(中继)日志文件前缀名(base name) 也是默认在datadir目录下

relay-log-index=slave-relay-bin.index
中转(中继)日志后缀名,默认host_name-relay-bin.index,在datadir目录下。

master_info_repository=TABLE 把master.info(主从状态,配置信息)记录下来,默认记录到file里面,建议使用表记录

relay_log_info_repository=TABLE
realy_log_info_repository用来决定slave同步的位置信息记录在哪里,同样有两个参数。如果relay_log_info_repository=file,就会创建一个realy-log.info,如果relay_log_info_repository=table,就会创建mysql.slave_relay_info表来记录同步的位置信息。

#relay_log_recovery=1 #从机禁止写
为了让从库是crash safe的必须要设置relay_log_recovery=1,该参数的含义是:当从库发生崩溃或重启时,它会把那些未做完的中继日志删除,并向主库重新获取日志,再次产生中继日志的恢复,建议在从库上开启relay_log_recovery参数,默认是关闭的。当然了你为了从库得到更好的优化效果的话,请把它关掉


2、查看主库状态信息

show master status\G;
show master status;

mysql> show master status;
+-----------------+----------+--------------+-------------------------------------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |
+-----------------+----------+--------------+-------------------------------------------------+-------------------+
| mysqlbin.000017 |      154 | hr           | mysql,information_schema,performance_schema,sys |                   |
+-----------------+----------+--------------+-------------------------------------------------+-------------------+

3、登录Mysql数据库,配置将连接的主库信息
从库按照主库给出信息进行修改
change master to
master_host=‘192.168.100.66’,
master_port=3306,
master_user=‘repl’,
master_password=‘123456’,
master_log_file=‘mysqlbin.000017’,
master_log_pos=154;

注:里面的信息要写自己主库的信息,账号写自己创建的账号


4、查看从库信息状态
启动从库 进行测试
start slave;
stop slave;
show slave status \G;

show slave status \G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.100.66Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysqlbin.000017Read_Master_Log_Pos: 154Relay_Log_File: slave-relay-bin.000002Relay_Log_Pos: 319Relay_Master_Log_File: mysqlbin.000017Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 154Relay_Log_Space: 526Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 1Master_UUID: 497bc227-19c5-11ee-a978-080027b1fb7dMaster_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position: 0Replicate_Rewrite_DB:Channel_Name:Master_TLS_Version:
1 row in set (0.00 sec)

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

状态显示yes正常搭建成功

如果你的虚拟机崩溃了恢复后导致无法同步,或者你多次配置从库的主库信息初始化阶段失败的话。

报错信息为:初始化信息失败

ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

先执行
reset slave; 清空你之前的配置的从库信息
然后再重启从库
start slave;

重点说明的是:如果你是第一次配置主从复制集群的话,一般不会出现这个问题。

四、测试

主库和从库同步完成

至此,主库分离成功实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/67551.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【虫洞攻击检测】使用多层神经网络的移动自组织网络中的虫洞攻击检测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Redis实践篇】使用Redisson 优雅实现项目实践过程中的5种场景

文章目录 1.前言2.使用方式1. 添加Redisson依赖:2. 配置Redis连接信息3. 使用场景3.1. 分布式锁3.2. 限流器(Rate Limiter)3.3. 可过期的对象(Expirable Object)3.4. 信号量(Semaphore)3.5. 分布…

一百五十五、Kettle——Linux上安装的kettle9.3连接MySQL数据库

一、目的 kettle9.3在Linux上成功安装后,就建立数据库连接,第一个就是MySQL数据库 二、前提准备 提前准备好MySQL驱动包 (一)MySQL版本 (二)注意:由于我的MySQL版本比较高,所以特…

应急响应-钓鱼邮件的处理思路溯源及其反制

0x00 钓鱼邮件的危害 1.窃取用户敏感信息,制作虚假网址,诱导用户输入敏感的账户信息后记录 2.携带病毒木马程序,诱导安装,使电脑中病毒木马等 3.挖矿病毒的传输,勒索病毒的传输等等 0x01 有指纹的钓鱼邮件的溯源处理…

numba 入门示例

一维向量求和: C A B 在有nv 近几年gpu的ubuntu 机器上, 环境预备: conda create -name numba_cuda_python3.10 python3.10 conda activate numba_cuda_python3.10conda install numba conda install cudatoolkit conda install -c nvi…

Nginx安装及Minio集群反向动态代理配置(二)

安装所需插件 1、安装gcc gcc是linux下的编译器在此不多做解释,感兴趣的小伙伴可以去查一下相关资料,它可以编译 C,C,Ada,Object C和Java等语言 命令:查看gcc版本 [rootwww ~]# gcc -v -bash: gcc: 未找到命令 说明没有安装: 那就直接yu…

猿辅导《暑假一本通》:28天科学规划,帮助孩子保持学习状态

一直以来,有效利用寒、暑假期查漏补缺、解决偏科问题、初步养成好的自主学习习惯等是很多家长对学生的期望。但当前市面上教辅品类繁多,内容质量却参差不齐。据北京开卷统计数据显示,2022年前三季度零售市场上的教辅图书超过8000种&#xff0…

DevOps系列文章 之 SpringBoot整合GitLab-CI实现持续集成

在企业开发过程中,我们开发的功能或者是修复的BUG都需要部署到服务器上去,而这部分部署操作又是重复且繁琐的工作,GitLab-CI 持续集成为我们解决了这一痛点,将重复部署的工作自动化,大大的节省了程序员们的宝贵时间。本…

认识Node.js及三个模块

文章目录 1.初识 Node.js1.1 什么是 Node.js1.2 Node.js 中的 JavaScript 运行环境1.3 Node.js 可以做什么1.4 Node.js 环境的安装1.4.1 区分 LTS 版本和 Current 版本的不同1.4.2 查看已安装的 Node.js 的版本号1.4.3 什么是终端1.4.4 终端中的快捷键 1.5 在 Node.js 环境中执…

Python 图形界面框架TkInter(第八篇:理解pack布局)

前言 tkinter图形用户界面框架提供了3种布局方式,分别是 1、pack 2、grid 3、place 介绍下pack布局方式,这是我们最常用的布局方式,理解了pack布局,绝大多数需求都能满足。 第一次使用pack() import …

文献综述|NLP领域后门攻击、检测与防御

前言:在信息安全中后门攻击(Backdoor Attack)是指绕过安全控制而获取对程序或系统访问权的方法。而随着深度学习以及各种神经网络模型的广泛应用,神经网络中存在的后门问题也引起了研究人员的广泛关注。神经网络后门攻击就是使网络…

使用插件实现pdf,word预览功能

效果 代码&#xff1a; 插件地址&#xff1a; https://github.com/501351981/vue-office <a-modalv-model:visible"visible":title"title"ok"handleOk":bodyStyle"bodyStyle":width"1200":maskClosable"false"…