MySQL运营经验

来源:http://www.tk-web.com 作者:赌博糖果派对手机版 人气:199 发布时间:2019-11-07
摘要:原标题:MySQL运转经历 MySQL运维实行 5.1-MySQL日志系统 1. 概要 如何是日记 日志(log)是大器晚成种顺序记录事件流水的文书 记录电脑程序运维进程中爆发了什么 用处八种 援救剖析程序问

原标题:MySQL运转经历

MySQL运维实行

70365糖果派对bb电子 1

5.1-MySQL日志系统

1. 概要

如何是日记

  • 日志(log)是大器晚成种顺序记录事件流水的文书
  • 记录电脑程序运维进程中爆发了什么
  • 用处八种
  • 援救剖析程序问题
  • 浅析服务须要的特色、流量等
  • 判断职业是还是不是中标施行
  • ……

每台机器都使用多实例的模子。 每一个机器放七个实例,每一种实例放八个DB。

MySQL日志的分类

  • 服务器日志
    • 笔录进度运维运作进度中的特殊事件,帮忙分析MySQL服务遭逢的难点
    • 依靠须要抓取特定的SQL语句,跟踪品质可能存在的主题材料的业务SQL
  • 政工日志
    • 笔录应用程序对数据的有所退换
    • 可用来数据复苏
    • 可用于实例间数据同步
分类 日志名称
服务器日志 服务错误日志
服务器日志 慢查询日志
服务器日志 综合查询日志
事务日志 存储引擎事务日志
事务日志 二进制日志

多实例之间平昔不张开能源隔开,这么做是让种种实例都能宣布最大品质。

劳动错误日志

  • 记录实例运营运作进程中根本音信
  • 布置参数 log_error = /data/mysql_data/node-1/mysql.log
  • 剧情实际不是全部是大谬不然音讯
  • 若是mysqld进程不可能寻常运维第大器晚成查看错误日志

现阶段多数焦点业务已切换到My罗克s引擎,在机器硬件配置不改变的景色,约可节约一半机械。

慢查询日志

  • 记录实施时间超过一定阈值的SQL语句
  • 布局参数
slow_query_log = 1
slow_query_log_file = /data/mysql_data/node-1/mysql-slow.log
long_query_time = 5
  • 用于剖判连串中只怕存在品质问题的SQL

身处My罗克s上的着力业务首要有:Feed、Post、社交图谱等读写混合业务。

综合查询日志

  • 若果翻开将会记录系统中具有SQL语句
  • 配备参数
general_log = 1
general_log_file = /data/mysql_data/node-1/mysql-slow.log
  • 偶尔用于协理深入分析系统难点,对品质有震慑

MyRocks项目地址:

询问日志的出口与公事切换

  • 日志输出参数

log_output={file|table|none}

  • 生龙活虎旦日志文件过大,能够依期截断并切换新文件

flush log;

此外,MariaDB 10.2版本也就要整合My罗克s引擎。

累积引擎事务日志

  • 部分存储引擎装有重做日志(redo log)
  • 如InnoDB, TokuDB等WAL(Write Ahead Log)机制存款和储蓄引擎
  • 日志随着事务commit优先持久化,确认保障极度恢复生机不丢数据
  • 日志顺序写质量较好

2. 高可用机制

InnoDB事务日志重用机制

  • InnoDB事务日志选用两组文件交替重用

应用基于GTID的黄金时代主多从组织,外加叁个基于lossless semi-sync机制的mysqlbinlog实现的binlog server(能够精晓为MySQL 5.7的loss zero replication卡塔 尔(阿拉伯语:قطر‎。

二进制日志binlog

  • binlog (binary log)
  • 笔录数据引起数据变动的SQL语句或数量逻辑变化的剧情
  • MySQL服务层记录,无关存储引擎
  • binlog的显要功效:
    • 依据备份苏醒数据
    • 数据库主从同步
    • 钻井深入分析SQL语句

听他们说好些个派完结全自动选主。

开启binlog

  • 主要参数
log_bin = c:/tmp/mylog/mysql-bin
sql_log_bin = 1
sync_binlog = 1
  • 查看binlog

show binary logs;

听闻配置基本完毕切换,未利用VIP。

binlog管理

  • 重要参数
max_binlog_size = 100MB
expire_logs_days = 7
  • binlog始生平成新文件,不会引用

  • 手工业清理binlog

purge binary logs to 'mysql-bin.000009';
purge binary logs before '2016-4-2 21:00:40'

在以为semi-sync复制可确定保证核心数据生龙活虎致性的比如前提下,爆发故障切换时,利用上述的binlog server中的日志实行补全后再选新主、切换。

查看binlog内容

  • 日志
show binlog events in 'mysql-bin.000011';
show binlog events in 'mysql-bin.000011' from 60 limit 3;
  • mysqlbinlog工具
mysqlbinlog c:/tmp/mylog/mysql-bin.000001
--start-datetime | --stop-datetime
--start-position | --stop-position

若个别情况下是因为特别原因,现身从库全体挂掉的景况,会将全体央求切到主库,由它扛起全部的作业服务压力。

binlog格式

  • 主要参数

binlog_format = {ROW|STATEMENT|MIXED}

  • 查看row模式的binlog内容

mysqlbinlog --base64-output=decode-rows -v c:/tmp/mylpg/mysql-bin.000001

某些从库挂掉时,能够动态摘除。

5.2-MySQL数据备份

3. 备份机制

骨干指数 - 备份用处

  • MySQL运营经验。多少打算
    • 应对硬件故障数据错过
    • 应对人工或程序bug招致数据删除
  • 制作镜像库以供服务
    • 供给将数据迁移、计算解析等用处
    • 供给为线上数据创立八个镜像

享有的备份都是基于mysqldump实现,之所以选择mysqldump逻辑备份好处有:

基本知识 - 备份内容

  • 数据
    • 数据文件或文本格式数据
  • 操作日志(binlog)
    • 数据库改造日志
  • 不要备份索引,只备份数据;
  • 备份文件压缩比高,更省去磁盘空间;
  • 改革了mysqldump,备份进度中还拓宽额外压缩;

基本知识 - 冷备份与热备份

  • 冷备份
    • 关门数据库服务,完整拷贝数据文件
  • 热备份
    • 在不影响数据库读写服务的意况下备份数据库

上边提到,因为运用多实例、多DB结构,备份时可以多DB并行备份。当然了,也会操纵并行备份的多寡,防止影响在线专门的工作个性。

基本知识 - 物理备份与逻辑备份

  • 概况备份
    • 以数据页的款型拷贝数据
  • 逻辑备份
    • 导出为裸数据或许SQL(insert)语句

备份放在聚集积累(HDFS卡塔尔上, 听大人说已达EB品级体积。

基本知识 - 本地备份与长途备份

  • 本土备份
    • 在数据库服务器本地开展备份
  • 远程备份
    • 长途连接数据库进行备份

至于备份的效果定位:

基本知识 - 全量备份与增量备份

  • 全量备份
    • 备份完整的数据库
  • 增量备份
    • 只备份上一遍备份以来发出校正的多少
  • 供数据剖判景况拉数据
  • 供魔难复苏

基本知识 - 备份周期

杜撰因素:

  • 数据库大小(决定备份时间)
  • 复原速度供给(飞速or慢速)
  • 备份格局(全量or增量)

4. 怎么样火速布置从库

常用工具及用法

  • mysqldump - 逻辑备份,热备
  • xtrabackup - 物理备份, 热备
  • Lvm/zfs snapshot - 物理备份
  • mydumper - 逻辑备份,热备
  • cp - 物理备份,冷备

可使用xtrabackup在存活存活的SLAVE实例上备份,也可在主库上发起备份,再接收WDT(恐怕是BT卡塔尔公约传输到异乡,用于拉起从库。

常用工具及用法 - mysqldump

MySQL官方自带的命令行工具

注重示例:

  • 演示使用mysqldump备份表、库、实例
# 备份所有数据库
mysqldump -uroot -p123456 --socket=/var/run/mysqld/mysqld.sock --all-databases > /dbbackup/all_db.sql
# 备份指定的数据库
mysqldump -uroot -p123456 --socket=/var/run/mysqld/mysqld.sock --databases db2 > /dbbackup/db2.sql
# 备份单个表
mysqldump -uroot -p123456 --socket=/var/run/mysqld/mysqld.sock db2 t1 >/dbbackup/db2_t1.sql
# 还原表
mysql > source /dbbackup/db2_t1.sql
  • 演示使用mysqldump制作风姿浪漫致性备份
mysqldump --single-transaction -uroot -p123456 --all-databases > /dbbackup/add_db_2.sql
  • 示范使用mysqldump远程备份一个数据库
mysqldump -utest -ptest -h192.168.0.68 -P3306 --all-databases > /dbbackup/remote_bakall.sql
  • 亲自过问使用mysqldump导出多少为csv格式
mysqldump -uroot -p123456 --single-transaction --fields-terminated-by=, db1 -T /tmp

关于WDT项目:

常用工具及用法 - xtrabackup

特点:

  • 开源,在线备份InnoDB表
  • 支撑限制速度备份,防止对业务变成影响
  • 协理流备
  • 支撑增量备份
  • 援救备份文件压缩与加密
  • 扶持相互备份与回复,速度快

5. 中度自动化

xtrabackup备份原理

  • 基于InnoDB的crash-recovery功能
  • 备份期间允许顾客读写,写央浼产生redo日志
  • 从磁盘上拷贝数据文件
  • 从InnoDB redo log file实时拷贝走备份期间发生的有着redo日志
  • 还原的时候 数据文件 + redo日志 = 后生可畏致性数据

直面广大的数据库实例,手工业管理完全不具体。近来在facebook首借使利用Python开垦内部DB运营平台,所以Python技巧方面供给比较高。

实用脚本innobackupex

  • 开源Perl脚本,封装调用xtrabackup及大器晚成层层相关工具与OS操作,最终产生备份进度
  • 支撑备份InnoDB和任何内燃机的表
  • 备份风度翩翩致性保障

应用他们自已的osc工具执行Online DDL(也是此番DTCC大会上lulu的分享宗旨卡塔 尔(英语:State of Qatar),它最初用PHP开荒,虽已经开源,但骨子里不好用,所以大约只在里边使用。那些工具区别于pt-osc,相对来讲更有优势,比方可防止止接纳pt-osc最常碰到的中心数据延迟难点。

innobackupex备份宗旨流程

start xtrabackup_log -> copy .ibd; ibdata1 -> FLUSH TABLE WITH READ LOCK -> copy .FRM; MYD; MYI; misc files -> Get binary log position -> UNLOCK TABLES -> stop and copy xtrabackup_log

品类地址:

innobackupex使用

重要示例:

  • 全量备份
innobackupex --user=root --password=123456 --defaults-file=/etc/mysql/my.cnf /dbbackup
  • 增量备份
innobackupex --user=root --password=123456 --defaults-file=/etc/mysql/my.cnf --incremental --incremental-dir /dbbackup/2016-4-3_13:24:32 /dbbackup
  • 流情势备份
innobackupex --user=root --password=123456 --defaults-file=/etc/mysql/my.cnf --stream=xbstream /dbbackup/ > /dbbackup/stream.bak
  • 相互备份
innobackupex --user=root --password=123456 --defaults-file=/etc/mysql/my.cnf --parallel=4 /dbbackup/
  • 限流备份
innobackupex --user=root --password=123456 --defaults-file=/etc/mysql/my.cnf --throttle=10 /dbbackup/
  • 压缩备份
innobackupex --user=root --password=123456 --defaults-file=/etc/mysql/my.cnf --compress --compress-thread 4 /dbbackup/

6. 共青团和少先队协会及技艺树

怎么着拟定备份计策

须要酌量的成分

  • 数据库是或不是都以innodb引擎表 -> 备份方式,热备or冷备
  • 数据量大小 -> 逻辑备份or物理备份,全量or增量
  • 数据库当地球磁性盘空间十一分丰厚 -> 备份到本地or远程
  • 内需多块恢复生机 -> 备份频率 小时or天

DBA团队越来越多的是担负私有DB云平台的建设。

5.3-MySQL数据恢复生机

Schema设计及DB拆分等由质量优化团队担负。

如曾几何时候须要苏醒数据

  • 硬件故障(如磁盘损坏)
  • 人造删除(如误删除数据、被黑)
  • 事务回滚(如游戏bug须要回档)
  • 健康必要(如布署镜像库、查看历史某时刻数据)

在线表结构退换:数据库能源申请由品质服务组织担当,做到财富的合理性布满、分配,如若有些业务只供给个位数等第的DB实例,可以自行在私有DB云平新北申存候插,当数码超级大时,供给先通过品质服务公司评估通过。

数据复苏的须要条件

  • 卓有成效备份
  • 全体的数据库操作日志(binlog)

数据库财富申请由质量服务公司负担,做到财富的客观遍及、分配。若是有些业务须求小量DB实例,能够自动在私有DB云平新竹申请布署;当数码异常的大时,必要先经过质量服务组织评估通过才得以。回到和讯,查看越来越多

数据苏醒思路

  • 摩登三回备份 + binlog复苏到故障时间点(适用于种种数码错过现象)
  • 开挖最终一回备份到故障点之间的binlog获取相关SQL语句,构造反转SQL语句并动用到数据库(只是用于记录遗失,且binlog必得是row格式)

主要编辑:

反转SQL语句

例:

t1(id primary key, a int)

反转SQL语句:

insert into t(id, a) values(1, 1) -> delete t1 where id=1 and a=1
update t1 set a=5 where id=1 -> update t1 set a=1 where id=1
delete from t1 where id=1 -> insert into t(id, a) values(1, 1)

数据库复苏工具与命令

  • mysqldump备份 -> source恢复
  • xtrabackup备份 -> xtrabackup恢复
  • binlog备份 -> mysqlbinlog恢复

详见示例讲明

  • 光复某几条误删数据
  • 还原误删表、库
  • 将数据库复苏到指准期期点

70365糖果派对bb电子,复苏误删除数据

case:误操作,删除数据忘记带完整条件,履行delete from user where age > 30 [and sex=male]

供给:将被去除的数码复苏

过来前提:完整的数据库操作日志(binlog)

delete from user where sex='female';

# 首先需要找到binlog里的信息
mysqlbinlog -vv mysql-bin.000001
# 找出sql语句,然后写出反转sql语句

复原误删表、库

case:业务被黑,表被删去了(drop teble user)

急需:将表复苏

前提:备份 + 备份以来完整binlog

innobackupex --apply-log /dbbackup/filename
# 查看binlog的位置点
cat xtrabackup_binlog_info
# 查看结束点
mysqlbinlog -vv filename

mysqlbinlog -vv --start-position=2556990 -- stop-position=2776338
mysqlbinlog -vv --start-position=2556990 -- stop-position=2776338 | mysql -uroot -p123456 --sock=/dbbackup/mysql_3309/mysqld.sock

学科小结

  • 苏醒是早就不行苦逼的饭碗,尽量防止做。我们要做多少卫士实际不是救火队员。(线上理应严厉把控权限,数据变动操作应事先测量检验,操作时做好备份)
  • 使得备份(+binlog)是重大,对数据库准期备份是必得的
  • 备份是整套数据苏醒的底工

5.4-MySQL线上布置

MySQL线上配备

考虑因素:

  • 本子接受, 5.1、5.5还是5.6?
  • 分层选取,官方社区版? percona server? Mariadb?
  • 设置方式,包安装?二进制包安装?源码安装?
  • 路径配置,参数配置(尽量模板化、标准化)
  • 二个实例七个库 or 三个实例单个库?

二进制安装MySQL

  • 下载软件包
  • 解压放到钦赐目录(举例/usr/local)
  • 将MySQL目录放到PATH中
  • 发轫化实例,编辑配置文件并运维
  • 账户安全设置

编写翻译安装MySQL

  • 下载MySQL源码安装包
  • 安装须要包(make cmake bison-devel ncurses-devel build-essential)
  • Cmake配置MySQL编写翻译选项,能够定制须求安装的意义
  • make && make install
  • 起先化实例,编辑配置文件并运营
  • 账户安全设置

MySQL升级

  • 下载MySQL5.6安装包并配置MySQL5.6安装包安装路线
  • 闭馆MySQL5.5实例,更正部分参数,使用MySQL5.6软件运维
  • 执行MySQL5.6路径下mysql_upgrade脚本
  • 证实是或不是成功进级

MySQL多实例安装

  • 部署好mysql软件
  • 编纂三个布局文件,伊始化五个实例
  • 启动MySQL实例

MySQL多实例安插

缘何多实例计划?

  • 丰富利用系统能源
  • 财富隔开分离
  • 业务、模块隔开

MySQL线上安装小结

  • 依据要求接纳得当的版本以至分支,建议接纳或晋级到较高版本5.5或5.6
  • 假设急需定制MySQL成效的话,能够思虑编写翻译安装,不然的话提议使用二进制包安装,比较便捷
  • 基于机器配置采取布置多个MySQL实例如故单个实例,机器配置相当好的话,建议陈设多实例

5.5-MySQL主从复制

MySQL主从复制

  • 风流倜傥主生机勃勃从
  • 主主复制
  • 生龙活虎主多从
  • 多主生机勃勃从
  • 联级复制

MySQL主从复制用场

  • 实时灾备,用于故障切换
  • 读写抽离,提供查询服务
  • 备份,防止影响工作

本文由bb电子糖果派对发布于赌博糖果派对手机版,转载请注明出处:MySQL运营经验

关键词:

最火资讯