mysql主从配置

数据库集群 MySQL主从复制

纵饮孤独 提交于 2020-03-25 11:42:58
MySQL主从复制 本节内容我们联系使用 MySQL的主从复制功能配置Master和Slave节点,验证数据MySQL的数据同步功能。 因为要使用多个 MySQL数据库,所以不建议在电脑上安装多个MySQL数据库,最好的办法是使用多个绿色版的MySQL数据库。 MariaDB数据库是MySQL创始人Michael 创建的 MySQL重要分支。由于Oracle 持有了 MySQL的版权,MySQL存在闭源的隐患,加之Oracle对MySQL的更新不太重视,所以业界许多公司纷纷采用了完全开源的MariaDB数据库。MariaDB建立在MySQL5.5版本上,所以MariaDB与MySQL的兼容性非常好,并且性能上也做出了很大的优化,社区活跃,软件版本更新迅速,包括谷歌、Facebook等企业纷纷改用MariaDB数据库。 Master数据库 首先把安装到C:\Program Files 里面的 MariaDB目录复制一份,放置的路径没有要求,但是尽量把数据库放在C盘或者D盘上面,改名DB1。因为这两个盘符的空间处在硬盘磁碟的外圈,所以线速度很快,数据读写速度也很理想。 DB1将要当做主库使用,创建my.ini文件,然后编辑文件内容。 [mysqld] # 数据库字符集 character_set_server = utf8 #MySQL 主机名 ( 只可以是数字 ) server_id

binlog2sql之MySQL数据闪回实践

吃可爱长大的小学妹 提交于 2020-03-24 06:41:01
DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此法费时费力,甚至需要停机维护,并不适合快速回滚。也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。现在有不少好用而且效率又高的开源闪回工具如binlog2sql、mysqlbinlog_flashback,这些工具在工作中给DBA减轻了不少痛苦,以下针对binlog2sql的使用进行实践演练。 binlog2sql的用途: 数据快速回滚(闪回) 主从切换后数据不一致的修复 从binlog生成标准SQL,带来的衍生功能 安装binlog2sql前先安装git和pip: yum -y install epel-release yum -y install git python-pip 安装binlog2sql: git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql pip install -r requirements.txt MySQL的配置要开启以下选项: [mysqld] server_id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog

一条update语句的执行过程

别说谁变了你拦得住时间么 提交于 2020-03-24 01:56:28
3 月,跳不动了?>>> 以前有过一篇关于 MySQL查询语句的执行过程 ,这里总结一下update语句的执行过程。由于update涉及到数据的修改,所以,很容易推断,update语句比select语句会更复杂一些。 1,准备 创建一张test表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) NOT NULL DEFAULT '0' COMMENT '数值', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表'; 插入三条数据 INSERT INTO `test` (`c`) VALUES (1), (2), (3); 2,测试 加入我要把第一条数据的 c 值 加 1,则 UPDATE `test` SET `c` = `c` + 1 WHERE `id` = 1; 按照我们平常的思路,就是找出这条记录,把它的值改好,保存就OK了。 但我们追究一下细节,由于涉及到修改数据,所以涉及到日志了。 3 操作顺序 3.1 查找记录:执行器先找引 擎取 id=1这一行。ID是主键,引擎直接用树搜索找到这一行。如果id=1这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存

为什么数据库读写分离可以提高性能

我与影子孤独终老i 提交于 2020-03-23 17:59:32
3 月,跳不动了?>>> 虽然知道处理大数据量时,数据库要做读写分离,但是为什么读写分离可以提高性能呢? 下面是搜来的一些解释,看看再说! 一 什么是读写分离 MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中 的从数据库。 当然,主服务器也可以提供查询服务。使用读写分离最大的作用无非是环境服务器压力。可以看下这张图: 二 读写分离的好处 1.增加冗余 2.增加了机器的处理能力 3.对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上的延迟。 三 读写分离提高性能之原因 1.物理服务器增加,负荷增加 2.主从只负责各自的写和读,极大程度的缓解X锁和S锁争用 3.从库可配置myisam引擎,提升查询性能以及节约系统开销 4.从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的 5.读写分离适用与读远大于写的场景,如果只有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能不高。

Mysql-windows安装

为君一笑 提交于 2020-03-23 17:14:06
1.mysql下载 Mysql-window下载 1.1 环境变量配置 1)首先在官网下载最新的mysql8.0.11数据库,解压到你需要放置的盘符最好不要有中文,然后新建MYSQL_HOME 2)参数为mysql解压后安装文件的bin文件路径如我的: 变量名:MYSQL_HOME 变量值:E:\tools\database\mysql\mysql8.0.11\mysql-8.0.11-winx64\bin 3)然后在Path变量开头添加%MYSQL_HOME%;然后确定保存即可 2.创建my.ini 在解压后的目录中,如:E:\tools\database\mysql\mysql8.0.11\mysql-8.0.11-winx64 创建my.ini文件,并创建数据目录。文件内容如下: [client] port=3306 [mysql] no-beep # default-character-set= [mysqld] port=3306 # mysql根目录 (修改点!) basedir=D:\\software\\mysql-8.0.11-winx64 # 放所有数据库的data目录 (修改点!) datadir=D:\\software\\mysql-8.0.11-winx64\\data # character-set-server=utf8mb4 #

如果有一个特别大的访问量到数据库上,怎么做优化?主从复制、读写分离

余生颓废 提交于 2020-03-23 17:07:34
第一个就是使用优化查询的方法。这个在前期的内容中有具体说明,这里不再做说明。 第二、这里简要说明一个以下几个方法:    主从复制、读写分离、负载均衡    目前,大部分的主流关系型数据库都提供了主从复制的功能,通过配置两台(或多台)数据库的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站可以利用数据库的这一功能, 实现数据库的读写分离,从而改善数据库的负载压力。 一个系统的读操作远远多于其写操作,因此写操作发向master,读操作发向slaves进行操作(简单的轮循算法来决定使用哪个slave)。   利用数据库的读写分离,web服务器在写数据的时候,访问著数据库(Master),主数据库通过主从复制机制将数据更新同步到从数据库(Slave),这样web服务器读数据的时候,就可以通过从数据库获得数据。这一方案使得在大量读操作的web应用可以轻松地读取数据,而主数据库也只会承受少量的写入操作,还可以实现数据热备份,可谓是一举两得的方案。 1.复制的基本原则    MySQL复制是异步的且串行化的;   每个Slave只有一个Master;   每个Slave只有一个唯一的服务器ID;   每个Master可以有多个Slave; 2.一主一从常见配置:   MySQL版本一致且后台以服务运行;   主从都配置在[mysqld]结点下,都是小写,主机修改my

华为云3

跟風遠走 提交于 2020-03-23 09:14:03
[root@room9pc01 ~]# scp -r /var/ftp/local/ 139.9.60.12:/var/ftp/local/ [root@ecs-abc local]# cat /etc/yum.repos.d/local.repo [local] name=local baseurl=file:///var/ftp/local enabled=1 gpgcheck=0 [root@ecs-abc local]# ls mysql-community-client-5.7.17-1.el7.x86_64.rpm mysql-community-common-5.7.17-1.el7.x86_64.rpm mysql-community-devel-5.7.17-1.el7.x86_64.rpm mysql-community-embedded-5.7.17-1.el7.x86_64.rpm mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm mysql-community-libs-5.7.17-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.17

mysql高可用之MHA+半同步复制

白昼怎懂夜的黑 提交于 2020-03-22 23:43:38
1,MHA概述 MHA目前在mysql高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为mysql高可用性环境下故障切换和主从提升的高可用软件。在mysql故障切换过程中,MHA能做到在0-30秒之内自动完成数据库的故障切换操作,并且在进行故障切换操作的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用,MHA里由两个角色一个是MHA Node(数据节点),另一个是MHA Manager(管理节点)。MHA Manager可以单独部署在一台读立的服务器上管理多个master-slave集群,也可以部署在一台slave节点上。 MHA Node运行在每台mysql服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程中对应用程序完全透明。 在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度地保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用mysql 5.5的半同步复制

MySQL数据备份及还原(一)

谁说我不能喝 提交于 2020-03-22 10:58:04
关于删库跑路的事故现在已经屡见不鲜了,数据备份的必要性是企业数据管理极其重要的一项工作。关于数据备份、恢复也有很多场景及方法,本系列也会将主要的几种工具通过案例进行演示。 本系列将从逻辑备份及恢复开始讲起,逻辑备份的工具主要有mysqldump/mydumper等其中mydumper可以指定多线程工作,本文介绍的是mysqldump。 1. mysqldump 备份 mysqldump是MySQL数据库自带的逻辑备份工具,属于热备工具。它的备份结果是根据设置的参数将数据库中的信息通过生成创建库、表等对象以及对应表的insert语句组成。 mysqldump 参数选项特别多,可以通过mysqldump --help 查看对应的参数及说明() [root@testdb ~]# mysqldump --helpmysqldump Ver 10.13 Distrib 5.7.25-28, for Linux (x86_64)Copyright (c) 2009-2019 Percona LLC and/or its affiliatesCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle

Mysql Replication配置

好久不见. 提交于 2020-03-22 02:49:05
使用场景:mysql的实时备份或者读写分离。 环境: vmware虚拟机,并且安装了linux系统(我用的是centos7),linux上安装了mysql 第一台mysql安装好了之后,将当前linux系统克隆一份。 我的两个linux系统的IP地址分别是128,129; 128为master,129为slave; 两台服务器上的mysql配置当前完全一样。 克隆过来之后,需要把另一个mysql的(/ect/my.cnf)server_id改掉。 这里我把128上的mysql的server_id改成128; 129机子上的mysql的server_id改成129; 修改好配置文件后,启动两台机子上的mysql 启动: /etc/init.d/mysqld start 重启: /etc/init.d/mysqld restart 锁定master flush tables with read lock; 查看master状态 show master status 记住这个信息,后面配置slave信息的时候,会用到; 配置slave 登录129服务器的mysql mysql -uroot -pgys 关闭slave 给slave配置master 这里的master_log_file='guoyansi128.000004',master_log_pos=120