Code前端首页关于Code前端联系我们

mysql主从分离主数据库配置,MySQL主从数据库

terry 2年前 (2023-09-30) 阅读数 44 #Mysql
文章标签 Mysql

本文内容概述:

  • 1.如何配置mysql主从分离?
  • 2、mysql中如何配置主从数据库
  • 3、MySQL主从,5分钟就能掌握
  • 4.Ubuntu配置MySQL主从数据库
  • 5、mysql主从配置需要什么网络环境?
  • 6.如何配置mysql主从原理

如何配置mysql主从分离

1。在主从服务器上安装MySQL数据库。我在Windows系统上安装了mysql_5.5.25.msi版本,在Ubuntu上安装了mysql-5.6.22-linux-glibc2.5-i686.tar。 Windows上如何安装mysql我就不讲了。地球上的大多数人应该知道如何做到这一点。让我告诉你一些关于 Ubuntu 中 MySQL 安装的事情。我建议不要在线下载安装,而是离线安装。你可以参考一下这个人,我不知道他是大哥还是姐妹,他写得很好,你可以这样安装。安装过程中可能会出现各种现象。您可以参考解决办法:

(1)如果您不是root用户登录,建议使用su - root切换到root用户安装,这样就不需要全部sudo了时间。

(2)保存解压后的mysql文件夹。最好将文件夹名称改为mysql

(3)在./support-files/mysql.server start中启动MySQL时,可能会出现警告,中文。这意味着当服务启动并读取文件时,my.cnf 文件将被忽略。那是因为my.cnf的文件权限有问题,mysql会认为该文件是危险的,不会运行它。不过,MySQL仍然会启动成功,但是如果接下来的配置更改了服务器参数的my.cnf文件,你会注意到该文件已经被更改,但是当服务重新启动时,更改的配置不会被执行,你can可以显示mysql文件夹。您会发现许多中间文件,例如.my.cnf.swp。这都是因为MySQL启动时没有读取my.cnf。此时只需将my.cnf的文件权限更改为与my_new.cnf相同的权限即可。命令:chmod 644 my.cnf 就可以了

(4) Ubuntu中没有用于修改文档内容的Vim。最好安装 Vim 并使用 apt-get install vim,否则你可能会发疯。

此时我认为需要安装MySQL。

2。配置Master主服务器

(1)在MySQL Master上创建一个用户repl,并允许其他Slave服务器远程访问Master,并通过该用户读取二进制日志,进行数据同步到达。

创建读取日志的数据库用户

(2) 找到MySQL安装文件夹,修改my.ini文件。 mysql中有几种日志记录方式,不是今天的重点。我们只需要启动二进制 log-log-bin 就可以了。

在[mysqld]下添加以下几行代码

查看代码

(3)查看日志

mysql SHOW MASTER STATUS;

+----------- - -------+----------+--------------+---------------- - --+

|文件|位置 | Binlog_Do_DB | Binlog_Ignore_DB |

+--------------------+------------------------+ ------------- --+-----------------+

| master-bin.000001 | 1285 | 1285 | |

+--------------------+--------------------+---------------- - +-- ----------------+

集合中的 1 行(0.00 秒)

重新启动 MySQL 服务

3。配置从服务器(Windows)

(1)找到MySQL安装文件夹,修改my.ini文件。 [mysqld]

my.cnf 配置下添加以下几行代码

重启 MySQL 服务

(2) 连接 Master

change master in master_host='192.168.0.104', // 主服务器 Ip

master_port=3306,

master_user='repl',

master_password='mysql',

master_log_file='master-bin.000001', //Master服务器生成的日志

master_log_pos=0;

(3)启动Slave

启动slave;

4. Slave-slaveserver (Ubuntu)

(1) 找到MySQL安装文件夹,编辑文件my.cnf,vim my.cnf

s

(2) ./support-files/myql.server restart 重启启动MySQL服务, ./bin/mysql 进入MySQL命令窗口

(3) 连接Master

change master to master_host='192.168.0.104', //主服务器IP

master_port=3306 ,

master_user='repl',

master_password ='mysql',

master_log_file='master-bin.000001',//Master服务器生成的日志

master_log_pos=0;

(4)启动从站

启动从站;

OK 全部配置完成。此时就可以在Master Mysql中进行测试了。由于我们监控所有Master Mysql操作日志,因此您执行的任何修改主服务器数据库的操作都会同步到从服务器。创建一个数据库并尝试一下。 。 。

mysql中如何配置主从数据库

5.6 mysql中进行主从配置

在master数据库中新建数据库rep_test。

接下来,编辑主数据库my.ini文件

在[mysqld]节点添加以下内容:

server-id=1 #指定唯一ID,1到32,必填

日志- bin=mysql-log-bin #指定二进制日志存储路径,必填

binlog-do-db=rep_test #指定要同步的数据库,必填

#binlog-ignore-db=mysql #指定不同步的数据库。如果指定了binlog-do-db则不需要指定这个条目

MySQL主从,5分钟教你

MySQL Master 和 Slave 一直是面试的常客。虽然里面的知识点都是基础的,但是能够全部答对的学生并不多。

比如楼哥之前面试小米的时候,被问到主从复制的原理以及主从延迟的解决方案。由于他的回答非常好,给面试官留下了很好的印象。之前面试中遇到过哪些MySQL主从问题?

所谓MySQL主从就是建立两个相同的数据库,一个是主库,一个是从库。主库提供远程读写,从库提供远程读。接下来是主人和奴隶。模式:

对于独立数据库部署,4核8G机器上的MySQL 5.7大概可以支持500 TPS和10,000 QPS。某些活动和突发需求流量需要主从分离。 。

大多数系统的访问模型是多读少写。读写请求的差异可以达到几个数量级,因此我们可以使用一主多从。主库只负责某些核心逻辑的编写和查询。多个从库单独负责执行查询,提高查询性能,减轻主库的负担。

MySQL主从也能实现高服务可用性。当主库出现故障时,从库可以切入主库,保证服务高可用性。那么主数据库还可以进行数据的容灾备份。

一般场景总结如下:

MySQL 的主从复制依赖于 binlog,binlog 记录了对 MySQL 所做的所有更改,并以二进制形式存储在磁盘上的二进制日志文件中。

主从复制是将binlog中的数据从主库传输到从库。一般来说,这个过程是异步的,即对主库的操作不等待binlog同步完成。

详细流程如下:

主备库数据同步时突然中断怎么办?因为主库和从库之间维护着一条长链接,所以主库内部有一个线程专门为从库的这条长链接服务。

对于下面的情况,如果主库运行下面的SQL,其中a和create_time都是索引:

我们知道,如果数据选择了索引a和create_time索引,数据就会出来与极限 1 的情况通常不同。 。

所以就会出现这种情况:binlog=statement格式下,主库执行这条SQL时,使用索引a,从库执行这条SQL时,使用索引create_time,最终主从数据不一致。 。

那么我们该如何解决呢?

您可以将 binlog 格式更改为 row。 binlog登录行格式不记录原始SQL文本,而是记录两个事件:Table_map和Delete_rows。

Table_map 事件描述要服务的表。 Delete_rows事件用于定义删除的行为并记录删除的具体行数。行格式的binlog记录了要移除的主键ID信息,这样就不会出现主从不一致的问题。

但如果SQL删除10万行数据,使用行格式会占用大量空间。 10万条数据全部都在binlog中,写binlog也需要大量的IO。但binlog指令格式会导致数据不一致。

设计MySQL的大叔想出了一个折中的方案。混合格式binlog实际上是行格式和语句格式的组合。当MySQL判断数据可能不一致时,使用行格式,否则使用语句格式。

有时候,当我们遇到奇怪的问题,无法从数据库获取信息时,我们会纠结代码中是否存在某种逻辑会删除之前写的内容,但过一段时间你会发现查询时可以再次读取数据。这主要是主从延迟造成的。

主从延迟基本上就是“打从库”完成时间和“主库写binlog”完成时间的差异,导致从库请求的数据与主库请求的数据不一致图书馆。

在讲MySQL数据库的主从同步延迟原理时,我们应该从MySQL的主从复制原理开始:

我们来总结一下主从延迟的主要原因:主要是主从延迟发生在“中继日志回放”步骤中。当主库TPS并发较高,生成的DDL数量超过从库一个SQL线程可以承受的范围时,就会出现延迟。当然,从库的大查询指令也会出现锁等待。

一般我们使用从库延迟时间作为监控和报警的重要数据库指标。正常时间是毫秒级别的。一旦延迟时间达到二级,就需要报警。

除了减少主从延迟时间外,还有其他方法可以解决这个问题。基本原则是尽量不查询从库。

具体解决方案如下:

在实际应用场景中,对于一些非常重要的场景,比如库存、支付订单等,需要直接查阅从库。对于其他非核心场景,不需要查询主库。

有两台机器A、B,A为主数据库,负责读写,B为从数据库,负责读取数据。

如果A库出现故障,B库成为主库负责读写。 bug修复后,A成为从库,主库B与从库A同步数据。

一主多从库。 A为主数据库,负责读写。 B、C、D是从库,负责读取数据。

如果A库出现故障,B库成为主库负责读写,C、D负责读取。 bug修复后A也成为从库,主库B与从库A同步数据。

Ubuntu配置Mysql主从数据库

此环境:虚拟机

服务器:Ubuntu

14.04

LTS

数据库:

5.5.37

端口:3306

Ho ofd IP:192 .16 8.63 .133

从机IP:192.168.63.134

授权账号:

用户:suxh

密码:111111

说完环境:我们立即配置:

第一步:主从每个服务器必须具有相同的数据库(必须同步)。这里使用的是备份

数据库(不多说了,同步开始前将主库复制到从库即可)

配置主数据库的第二步

编辑/etc/my.cnf

主要是开启二进制日志记录

以及设置要同步的数据库

等参数

#

binary

logging

format

-

mixed

推荐

binlog_format=mixed

binlog-ignore-db=mysql

binlog-do-db=backup

#必需

唯一

id

之间 和

2^32

-

1

#

默认为

1

if

主-主机

不是

设置

#

但是

但是

将会

不是

功能

as

a

master

as

省略

server-id

=

1

参数声明:

server-id

唯一,不能与从服务器相同。

binlog_format

二进制文件格式

binlog_ignore-db

忽略的数据库

binlog-do-db

要同步的数据库

设置后

重新启动数据库即可。

从数据库第三步:

同样修改/etc/my.cnf

在mysql

5.1.7版本中

不支持类似的master-host参数;

所以这里您只需配置服务器 id=2

并登录并设置

change

master

to

master_host='192.168.63.133',

master_user =' suxh in ' ,

master_password='111111';

slave

启动;

基本配置就可以了。这里是我的简单点评。

MySQL主从配置需要什么网络环境

 1。确保主库和从库完全一致。

例如:主库a的数据库有b、c、d表,那么数据库

2中应该有a的数据库和b、c、d表。在主数据库上创建同步帐户。

GRANT REPLICATION SLAVE,FILE ON *.* TO 'mstest'@'192.168.1.112' IDENTIFIED BY '123456';

192.168.1.112:使用用户的 IP 地址运行

mstest:是新创建的username

123456:是新创建的用户名

的密码,上面命令的详细解释最好去百度查一下。如果写得太多,思路就更不清楚了。

3。从主数据库配置my.ini(因为它在窗口下,所以是my.ini而不是my.cnf)。

  [mysqld]

server-id=1

log-bin=log

binlog-do-db=mstest //要同步的mstest数据库。如果要同步多个数据库,就多加几个replicate-db-db=数据库名

binlog-ignore-db=mysql //要忽略的数据库

配置mysql的主从原理

1。将主数据库服务器上有权限访问主数据库的用户添加到从服务器:

GRANT REPLICATION SLAVE ON *.* TO 'test'@'%' IDENTIFIED BY 'test';

(%表示允许所有IP,可以设置指定从服务器的IP地址)

添加用户后:

可以运行mysql -h127.0.0.1 -utest use -ptest;在从服务器上测试是否有访问主数据库的权限

2.添加主数据库配置文件:

#master config

server-id = 1

log-bin = mysql-bin

3。从服务器数据库配置文件中:

server-id = 2

master-host = 10.0.0.199

master-user = test

master-password = test

replicate-do-db = test

master-port = 3306

log-bin = mysql-bin

如果一切都配置顺利

在从服务器上输入命令: show Slave status\G

成功:

Sla​​ve_IO_Running:yes

Slave_SQL_Running:yes

在主服务器上输入 show master status

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门