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
成功:
Slave_IO_Running:yes
Slave_SQL_Running:yes
在主服务器上输入 show master status
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
