02、MySQL-------主从复制

目录

  • 七、MySql主从复制
    • 启动主从复制:
    • 原理:
    • 实现:
      • 1、创建节点
      • 2、创建数据库
      • 3、主从配置
        • 1、主节点
        • 2、从节点
      • 4、测试:
      • 5、问题:
        • 1、uuid修改
        • 2、service_id
        • 3、读写不同步
          • 方法1:
          • 方法2:

七、MySql主从复制

启动主从复制:

1、打开虚拟机 150(主master)、 152(从slave)

2、 mysql -uroot -p123456 进入主和从数据库

​ 服务器mysql -u root -p出现错误:-bash: mysql: command not found
​ 输入:alias mysql=/usr/local/mysql/bin/mysql

3、查看从数据库状态是否正确,是否有两个yes,没有两个yes就是没成功

​ (启动从服务:start slave;)查看状态: show slave status \G

​ 没成功就进行修改,查看【七-5-3读写不同步解决】

4、启动mycat: /usr/local/mycat/bin/mycat start

​ 重启mycat:/usr/local/mycat/bin/mycat restart

5、查看mycat日志: tail -f -n 50 /usr/local/mycat/logs/wrapper.log

重启mysql:service mysqld restart

原理:

主数据库用于写数据、修改数据,从数据库用于读数据

要控制写入的数据都到主数据库,就需要用到 mycat中间件,进行读写分离

在这里插入图片描述

实现:

1、创建节点

主节点master

先克隆一个 192.168.209.150 的虚拟机,作为mysql的master主节点

创建的步骤如截图中所示,截图不是克隆mysql的,是之前的。

在这里插入图片描述

在这里插入图片描述

从节点slave

跟主节点一样,ip 设置为:192.168.209.152

2、创建数据库

主节点数据库:

在这里插入图片描述

从节点数据库**

和主节点数据库一样进行创建连接

3、主从配置

1,在主服务器 vi /etc/my.cnf 中添加://给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号(比如192.168.209.150 取150)server-id=150log-bin=master-binlog-bin-index=master-bin.index
2,启动主服务器(就是启动mysql);
3,执行show master status; 查看主服务器状态;
4,复制当前主服务器中的数据库内容;
5,在从服务器中创建主服务器数据库;
6,在从服务器vi /etc/my.cnf中添加:server-id=152relay-log-index=slave-relay-bin.indexrelay-log=slave-relay-bin 
7,启动从服务器(就是启动mysql);
8,在从服务中执行:
解释:change master to master_host='192.168.209.150', //Master 服务器Ipmaster_user='root', #主节点的账号master_password='123456', #主节点的密码master_log_file='master-bin.000001',//Master服务器产生的日志master_log_pos=156; #主节点的position在mysql输入这些命令change master to master_host='192.168.209.150',master_user='root',master_password='123456',master_log_file='master-bin.000001',master_log_pos=156;9,启动从服务:start slave;查看状态:  show slave status \G10,在主服务器中添加一条数据,查看在从服务器中是否同步成功;
//注意克隆服务器,需要 
mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf_bak 
然后再重新启动mysql
1、主节点

修改配置文件

在这里插入图片描述

登录mysql

服务器mysql -u root -p出现错误:-bash: mysql: command not found
输入:alias mysql=/usr/local/mysql/bin/mysql
再重复mysql -u root -p,输入mysql口令即可

在这里插入图片描述
查看主服务器状态

在这里插入图片描述

2、从节点

克隆服务器作为从节点,然后修改配置文件

在这里插入图片描述
重新启动服务器

在这里插入图片描述

在从节点的数据库中修改配置

在这里插入图片描述
查看从节点的状态,这里出了个 主从数据库uuid因为拷贝而一样的问题,修改步骤往下看

在这里插入图片描述

4、测试:

1、主数据库创建数据库,看从数据库会不会自动创建

在这里插入图片描述

2、在主数据库中创建一张表,看从数据库是否能同步(会)

3、在从数据库中创建一张表,看主数据库会不会同步(不会)

在这里插入图片描述
4、在主数据库的表中修改数据,看从数据库是否会同步(会)

5、在从数据库的表中修改数据,看主数据库是否会同步(不会)

在这里插入图片描述

5、问题:

从节点出现这个问题

在这里插入图片描述

在这里插入图片描述

1、uuid修改

1、查看uuid是否一致,两个服务器的mysql的uuid不能一样的

查询这个 auto.cnf 文件的地址,因为虚拟机是拷贝的,所以uuid可能会一一致,需要修改。

在这里插入图片描述

从数据库的uuid随便改个字母,不跟主数据库一样就可以了

在这里插入图片描述
重启一下:systemctl restart mysqld
在这里插入图片描述

重新登录

mysql -uroot -p 登录mysql

stop slave; 停止链路

start slave; 启动链路

show slave status \G; 查看链路

在这里插入图片描述
成功变成两个yes

不过下面有显示一个错误,先不理。

在这里插入图片描述

原因只是查看的时候 \G 多了个 ; 分号而已,去掉就好了。

在这里插入图片描述

2、service_id

这个是查看service_id的,影响不大。上面的uuid改好就可以了

2、查看service_id 是否因为两个虚拟机是拷贝的而出现id一致的情况

在数据库里面输入命令查看:show variables like ‘server_id’;

发现主节点是 150 , 从节点是1(这个应该是我们设置的152,要重启mysql看看),并没有重复

在这里插入图片描述

重启数据库,这个value的值变成 152 才是正确的
在这里插入图片描述

start slave 后 变成两个no了
在这里插入图片描述
重新 reset slave 设置下就可以了

在这里插入图片描述

现在又回到刚刚一个yes的问题,两个sql的uuid是一样的,修改成不一样的就好了

防火墙要关的才能同步数据

3、读写不同步
方法1:

原因:主从配置的position不一致,时间太久导致主数据库的position变了,应该是这个原因

主节点的position变了
在这里插入图片描述

要在从节点修改下

在这里插入图片描述
修改:

stop slave; 不知道用不用先停掉再改,现在我是先停掉了。

在这里插入图片描述

1、mysql -uroot -p 登录mysql

2、stop slave; 停止链路

3、修改master_log_pos=xxxxxx(改这个);把下面整行都重新设置

在mysql输入这些命令
change master to master_host='192.168.209.150',master_user='root',master_password='123456',master_log_file='master-bin.000001',master_log_pos=156;

在这里插入图片描述

4、start slave; 启动链路

5、show slave status \G; 查看链路

又好了。
在这里插入图片描述
但是只要测试一次,下一次又不行了。

方法2:

这个是百度其他办法,也是改后只成功一次

mysql> stop slave ;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql> start slave ;

在这里插入图片描述

暂时先不理

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

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

相关文章

http post协议发送本地压缩数据到服务器

1.客户端程序 import requests import os # 指定服务器的URL url "http://192.168.1.9:8000/upload"# 压缩包文件路径 folder_name "upload" file_name "test.7z" headers {Folder-Name: folder_name,File-Name: file_name } # 发送POST请求…

经管博士科研基础【26】海塞矩阵

1. 海塞矩阵 海塞矩阵是一个由多变量实值函数的所有二阶偏导数组成的方块矩阵。 一元函数就是二阶导,多元函数就是二阶偏导组成的矩阵。求向量函数最小值时可以使用,矩阵正定是最小值存在的充分条件。经济学中常常遇到求最优的问题,目标函数是多元非线性函数的极值问题,尚…

连续/离散的控制系统阶跃测试(包括MATLAB里的step()函数)

阶跃测试 只要是连续时间系统,无论是传递函数还是连续状态空间形式的模型,直接可以用**step()**做阶跃测试;但是对于离散系统而言,不能用step()函数,可以自行编写代码,如下。 1、离散系统:x(k…

基础算法学习|高精度

高精度 模板 高精度加法 // C A B, A > 0, B > 0 vector<int> add(vector<int> &A, vector<int> &B) {//大的数小的数if (A.size() < B.size()) return add(B, A);vector<int> C;int t 0;for (int i 0; i < A.size(); i )…

Docker容器技术实战1

1、docker容器 docker相当于传统的货运集装箱 虚拟机&#xff08;Virtual Machine&#xff0c;VM&#xff09;是一个完整的虚拟操作系统和硬件环境。它的工作原理是通过在一台物理主机上使用虚拟化软件来创建多个虚拟机实例&#xff0c;每个实例都可以运行独立的操作系统和应用…

华为eNSP配置专题-浮动路由及BFD的配置

文章目录 华为eNSP配置专题-浮动路由及BFD的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接2.2、基本终端配置 3、浮动路由配置3.1、浮动路由的基本配置3.2、浮动路由的负载均衡问题3.3、浮动路由的优先级调整 4、BFD的配置4.1…

二维码智慧门牌管理系统升级解决方案:突破传统,实现质检与抽检的个性化配置

文章目录 前言一、引入“独立质检”二、个性化抽检类别设定三、触发重采要素的功能升级四、升级优势与展望 前言 在数字化时代&#xff0c;智慧门牌管理系统已经成为社会管理的重要工具。为了满足各种复杂需求&#xff0c;系统升级是必然趋势。本次升级主要针对质检和抽检两大…

汽车屏类产品(四):仪表Cluster

###前言 仪表Cluster/仪表盘Dashboard,作为伴随汽车诞生就存在的一个主要零部件之一,从机械到电子到数字,可以说也是逐渐发展到现在的。 目前的主流框图如下,中间processor就是主控芯片,可能有buttons/switches,有display显示屏+backlight背光,有audio->speake…

最长上升子序列(二分)代码模板

用二分的思想求最长上升子序列的思想就是保持单调性&#xff0c;用一个q[]数组来作为一个单调数组。 每次将a[i]放进q数组中&#xff0c;但是要保持单调性&#xff0c;q数组的长度就是答案。 q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。 理解q[]数组的意义…

【数据仓库】hadoop生态圈与数据仓库

文章目录 1.大数据定义2. Hadoop与数据仓库3. 关系数据库的可扩展性瓶颈4. CAP理论5. Hadoop数据仓库工具5.1. RDS和TDS5.2. 抽取过程5.3. 转换与装载过程5.4. 过程管理和自动化调度5.5&#xff0e;数据目录&#xff08;或者称为元数据管理&#xff09;5.6&#xff0e;查询引擎…

html表格标签

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><!--表格table 行 tr 列 td --> <table border"1px"><tr> <!--colsp…

Openssl数据安全传输平台004:套接字C语言API封装为C++类 / 客户端及服务端代码框架和代码实现

文章目录 0. 代码仓库1. 客户端C API2. 客户端C API的封装分析2.1 sckClient_init()和sckClient_destroy()2.2 sckClient_connect2.3 sckClient_closeconn()2.4 sckClient_send()2.5 sckClient_rev()2.6 sck_FreeMem 3. 客户端C API4. 服务端C API5. 服务端C6. 客户端和服务端代…