mysql主从配置

不同场景下MySQL的迁移方案

心不动则不痛 提交于 2019-11-27 11:05:35
一、为什么要迁移 MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续性。就像柔软的沙滩上,两个天真无邪的小孩,把一堆沙子挪向其他地方,铸就内心神往的城堡。 生产环境中,有以下情况需要做迁移工作,如下: 1、磁盘空间不够。 比如一些老项目,选用的机型并不一定适用于数据库。随着时间的推移,硬盘很有可能出现短缺; 2、业务出现瓶颈。 比如项目中采用单机承担所有的读写业务,业务压力增大,不堪重负。如果 IO 压力在可接受的范围,会采用读写分离方案; 3、机器出现瓶颈。 机器出现瓶颈主要在磁盘 IO 能力、内存、CPU,此时除了针对瓶颈做一些优化以外,选择迁移是不错的方案; 4、项目改造。 某些项目的数据库存在跨机房的情况,可能会在不同机房中增加节点,或者把机器从一个机房迁移到另一个机房。再比如,不同业务共用同一台服务器,为了缓解服务器压力以及方便维护,也会做迁移。 一句话,迁移工作是不得已而为之。实施迁移工作,目的是让业务平稳持续地运行。 二、MySQL 迁移方案概览 MySQL 迁移无非是围绕着数据做工作,再继续延伸,无非就是在保证业务平稳持续地运行的前提下做备份恢复。那问题就在怎么快速安全地进行备份恢复。 一方面,备份。针对每个主节点的从节点或者备节点,都有备份。这个备份可能是全备,可能是增量备份。在线备份的方法

MySQL 手动清除binlog

感情迁移 提交于 2019-11-27 10:52:46
新接手的四套库MySQL库,采用主从结构。之前配置的伙计备库的bin log 日志全部是打开状态。运维人员反映,空间告警几次。均手动上去处理。 备库开启了bin log 也影响备库的性能,虽然这四套MySQL库的压力不大,但是本着优化的态度,还是对这四套库做一次彻底的清楚。 1. 查看备库当前的bin log: show binary logs; 直接刷出了七百多个bin - log。从上线之初到现在一年时间, 只有1T的bin log 2. 查看备库的slave 运行状态 show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.180.213.58 Master_User: rep581 Master_Port: 3301 Connect_Retry: 60 Master_Log_File: mysql-bin.000266 Read_Master_Log_Pos: 429863077 Relay_Log_File: mysql-relay-bin.000780 Relay_Log_Pos: 429863287 Relay_Master_Log

Mysql运维常用命令回顾整理

回眸只為那壹抹淺笑 提交于 2019-11-27 10:44:19
前景 Mysql作为开源数据库的中坚力量之一,虽然目前已被甲骨文收购,面临闭源风险,但是mysql扔是我们运维工作中最常面对的工作,那如何做好mysql运维工作,甚至做好mysql的基础运维,都是维稳业务持久层的关键,故本文收集相关资料整理MySQL运维工作常用的命令,以作记录,供日常运维时参考查证。 Mysql运维 MySQL运维工作常用命令和操作主要包括:对MySQL数据库状态的查看、性能的优化(连接数,存储,集群等),MySQL表及索引的检查、分析、修复、优化,MySQL数据库的导出导入、冷热备份等。 1、工具篇 常用工具: 1)myisampack:压缩MySQL的MyISAM表以产生更小的只读表的一个工具。myisampack可以压缩MyISAM表来解决空间占用过大的问题。myisampack分别压缩表中的每一列。通常,myisampack可以将数据文件压缩到40%-70%。当以后使用表时,解压缩列需要的信息被读入内存。当访问具体的记录时性能会更好,因为你只需要解压缩一个记录。 2)mysqlaccess:检查访问主机名、用户名和数据库组合的权限的脚本。它可作为MySQL的一个诊断工具,检查访问权限的主机名、用户名和数据库组合。其检查功能只访问user、db和host这3个表,而不检查在tables_priv、columns_priv或procs_priv表等信息; 3

python MySql

浪尽此生 提交于 2019-11-27 08:47:25
初识数据库 数据库优势 程序稳定性:程序崩溃不会影响数据和服务 数据一致性:所有数据存储在一起 并发:数据库本身支持并发 效率:使用数据库对数据进行的增删改查效率要高 数据: 描述事物的符号记录称为数据 (Data) 数据库: 专门用来存储数据 (DataBase,简称DB) mysql: 数据库软件 (DataBase Management System 简称DBMS) 数据库管理员 管理数据库软件(DBA) 数据库服务器-:运行数据库管理软件 数据库管理软件:管理-数据库 数据库:即文件夹,用来组织文件/表 表:即文件,用来存放多行内容/多条记录 数据库分类 关系型数据库(表结构):  特点相对慢,数据关联性强  关系型数据库 : mysql oracle sqllite sql server db2 access 非关系型数据库(key,value):  特点相对快,数据与数据的关联性小  非关系型数据库 : redis mongodb memcache区别:  关系型数据库存储效率相对低,数据与数据之间关联紧密  关系型数据库存储效率相对高,数据与数据之间的关系是key:value Mysql语句分为三种(了解)   DDL 语句, 数据库定义语言:数据库,表,视图,索引,存储过程,例如create,drop,alter   DML 语句,数据库操纵语言:插入、删除、更新

mysql数据库优化

别等时光非礼了梦想. 提交于 2019-11-27 08:13:56
1.表设计 遵循三范式,但必要的时候做数据冗余,举例说明:在权限模型中可能会用到5张表 用户表、角色表、权限表,还有用户角色关联表和角色权限关联表。如果此时要通过用户查询权限则必须关联查询或者使用多条sql查询,此时可以在用户表增加一个字段来存储用户的权限(例如将权限值使用逗号隔开),这样可以如果查询某用户的权限可以直接在用户表中查询,查询后再用程序来处理。 设计表时要选用合适的存储引擎,对于经常查询的表,并且不需要事务等应用,优先选用MyISAM(例如新闻表),如果需要事务处理对稳定性要求高的表优先选用InnoDB存储引擎(例如订单表,订单商品表),目前InnoDB已经成为新版MySQL的默认存储引擎,在高并发写入时的稳定性相比MyISAM更高,在读取速度上速度也比较快,所以推荐使用此引擎。 不需要永久保存的数据可以选用Memory存储引擎(例如session,购物车) 对于不同的字段选用合适的字段类型,例如IP地址应该存储为整型,见 将IP以整型的方式存储到数据库中 。固定长度的字符串要使用char,例如md5加密的密码。 2.分表技术 横向分表(各个表的字段类型与数量是完全一致的),例如用户表,可以按用户首字母横向切分;交易记录可以按照年份或者月份切分,每张表的字段一致,至于按什么规则来来区分可以看具体的业务。 纵向分表(各个表的字段不一致,但条数是一致的)

MySQL主从复制配置

廉价感情. 提交于 2019-11-27 08:12:39
MySQL主从复制步骤很简单,仔细看,你一定懂 环境: A: 192.168.1.1 作为master,没有数据 B: 192.168.1.2 作为slave,没有数据 一:主服务器上: 注意:mysql参数 binlog-do-db = 数据库名 (你要备份的数据库) binlog-ignore-db = 数据库名 (你不需要备份的数据库) 如果没有在/etc/my.cnf添加以上2个参数,那就是说明备份所有数据库 (1) 确保/etc/my.cnf 中有如下参数,一般情况下都是都有的,但是以确保实验的成功率还是检查一下比较好。假如没有如下参数,自己手动添加,并重启mysql服务器 [mysqld] log-bin=mysql-bin (启动二进制文件) server-id=1 (服务器ID) ( 2 ) :登录mysql服务器,添加一个叫做beifen的用户,并授权给从服务器 [root@localhost ~]# mysql -uroot –p123456 登录mysql 这里需要指明一下啊 这个123456是我的mysql的密码 mysql> grant replication slave on *.* to 'beifen'@'192.168.1.2' identified by '123'; 创建 beifen用户,密码设置为123 并授权给192.168.1.2使用。

mysql8.0.17复制搭建及其gtid的1062和1032异常

≯℡__Kan透↙ 提交于 2019-11-27 07:59:09
mysql8.0.17复制搭建及其gtid的1062和1032异常 参考资料: https://blog.csdn.net/wzy0623/article/details/91982743 https://blog.51cto.com/20131104/2397443 # 附录 附录:mysql参数sql_log_bin配置 如果想在主库上执行一些操作,但不复制到slave库上,可以通过修改参数sql_log_bin来实现。 比如说,模拟主从同步复制异常。 -- 在从库上执行 mysql> set sql_log_bin=0;#设为0后,在Master数据库上执行的语句都不记录binlog mysql> delete from t1 where id = 3; mysql> set sql_log_bin=1; -- 要慎重使用global修饰符(set global sql_log_bin=0),这样会导致所有在Master数据库上执行的语句都不记录到binlog,这肯定不是你想要的结果 # 环境: /* 主库:10.192.30.53 从库:10.192.30.60 用户名:admin_m 密码:rA75MQy*R*y@KO4z%LZe */ # 创建同步复制账号 CREATE USER 'repl'@'10.192.30.%' IDENTIFIED WITH mysql

LVS+Keepalived实现DBProxy的高可用

为君一笑 提交于 2019-11-27 07:46:14
目的 在上一篇文章 MySQL ProxySQL读写分离使用初探 里初步介绍了ProxySQL的使用,本文继续介绍它的一些特点和DBProxy的性能差异。深入一些去了解ProxySQL,通过例子来说明ProxySQL的一些特性和用sysbench对其进行测试来对比分析说明。 环境: Distributor ID: Ubuntu Description : Ubuntu 14.04.5 LTS Release : 14.04 Codename : trusty MySQL Master :192.168.200.202 MySQL Slave :192.168.200.132 APP IP :192.168.200.25/64 测试 本文测试环境是在上一篇文章的基础上进行的,所以已经做了一主一从的读写分离。在此基础上,若从库挂了,会怎么样?这里先把从库(132)shutdown掉,看看读去了哪里。 tips:如何修改管理接口的用户名密码?除了初始化时候修改配置文件,还有一个方法是在管理端口设置: admin@127.0.0.1 : (none) 12:52:53>set admin-admin_credentials='zjy:zjy'; Query OK, 1 row affected (0.00 sec) admin模块修改(select * from global

mysql 主从数据库探讨

*爱你&永不变心* 提交于 2019-11-27 07:05:02
1、如何在windows下创建多个mysql: https://blog.csdn.net/qq_36371218/article/details/78787208 2、laravel 配置数据库主从: https://blog.csdn.net/hackercn9/article/details/54881068 3、mysql 主从同步延迟的原因及解决方案 : https://blog.csdn.net/hao_yunfeng/article/details/82392261 来源: https://www.cnblogs.com/sz-xioabai/p/11349740.html

MySQL主从复制和读写分离

两盒软妹~` 提交于 2019-11-27 06:24:39
Mysql主从复制: Mysql主从复制原理: Mysql的主从复制和mysql的读写分离有着紧密的联系,首先要先部署主从复制,才能部署读写分离,因为读写分离就是建立在主从复制的基础上。 Mysql主从同步定义: 主从服务器使得数据库可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器。 Mysql主从同步机制: 服务器之间同步是基于二进制日志机制,主服务器使用二进制机制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主从服务器的数据一致。在使用二进制日志文时,主服务器的所有操作都会被记录下来,然后从服务器会收到该日志的一个副本,从服务器可以执行该日志中的任何操作,默认会执行日志中的所有语句。 Mysql支持的复制类型: 基于语句的复制: 在主服务器上执行的SQL语句,在从服务器上执行同样的语句。这是mysql默认采用的复制类型,效率较高;简称(SBR),其优点是binlog文件较小,binlog文件可以用于实时的还原,而不是仅仅用于复制。 基于行的复制: 把改变的内容复制过去,而不是把命令在从服务器上执行一遍;简称(RBR),其优点是任何情况下都可以被复制,和其他大多数数据库的复制技术一样。 混合类型的复制: