天天看点

日志

11.25

事物隔离级别

事物日志redo undo

事物锁 begin; update

事物日志性能优化 innodb_flush_log_at_trx_commit=0|1|2|3

innodb事务日志相关配置; show variables like '%innodb_log%';

通用日志

通用日志:记录对数据库的通用操作,包括错误的SQL语句

通用日志可以保存在:file(默认值)或 table

通用日志相关设置

general_log=ON|OFF

general_log_file=HOSTNAME.log

log_output=TABLE|FILE|NONE

慢查询(重点)

slow_query_log=on|off show profile for query 2;

long_query_time=N;

set global log_queries_not_using_indexes=ON;

二进制日志(重点)

记录导致数据改变或潜在导致数据改变的SQL语句

记录已提交的日志

不依赖于存储引擎类型

功能:通过“重放”日志文件中的事件来生成数据副本

注意:建议二进制日志和数据文件分开存放

二进制日志记录三种格式;

基于“语句”记录:statement,记录语句,默认模式

基于“行”记录:row,记录数据,日志量较大 (可恢复数据)

混合模式:mixed, 让系统自行判定该基于哪种方式进行

二进制日志只记录已提交的事物 相当于离线日志

还原数据 临时关闭二进制日志 set sqllog

显示二进制记录文件 show binary logs

查看使用中的二进制文件 show master status

查看二进制文件指定内容 show binlog events in 'mysql-bin.000010';

删除000003以前的二进制文件 purge binary logs to 'mysql-bin.000003';

创建一个新的二进制文件 flush logs;

数据库备份还原(重点)

完全备份

增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较

快,还原复杂

差异备份:仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单

前面必须有个完全备份

注意:二进制日志文件不应该与数据文件放在同一磁盘

冷、温、热备份

冷备:读写操作均不可进行

温备:读操作可执行;但写操作不可执行

热备:读写操作均可执行

MyISAM:温备,不支持热备 (不支持事务)

InnoDB:都支持 (不包括DDL语句)

物理和逻辑备份

物理备份:直接复制数据文件进行备份,与存储引擎有关,占用较多的空间,速度快

逻辑备份:从数据库中“导出”数据另存而进行的备份,与存储引擎无关,占用空间少,速度慢,可

能丢失精度

备份什么

数据

二进制日志、InnoDB的事务日志

程序代码(存储过程、函数、触发器、事件调度器)

服务器的配置文件

备份工具

cp, tar等复制归档工具:物理备份工具,适用所有存储引擎;只支持冷备;完全和部分备份

LVM的快照:先加锁,做快照后解锁,几乎热备;借助文件系统工具进行备份

mysqldump:逻辑备份工具,适用所有存储引擎,温备;支持完全或部分备份;对InnoDB存储

引擎支持热备,结合binlog的增量备份

xtrabackup:由Percona提供支持对InnoDB做热备(物理备份)的工具,支持完全备份、增量备份

MariaDB Backup: 从MariaDB 10.1.26开始集成,基于Percona XtraBackup 2.3.8实现

mysqlbackup:热备份, MySQL Enterprise Edition组件

mysqlhotcopy:PERL 语言实现,几乎冷备,仅适用于MyISAM存储引擎,使用LOCK TABLES、

FLUSH TABLES和cp或scp来快速备份数据库

重点mysqldump xtrabackup

基于LVM备份

1 请求锁定所有表

mysql>flush tables with read lock;

2 记录二进制日志文件及事物位置

mysql>flush logs; mysql>show master status;

mysql-e 'show master status'>/path/to/somefile

3 创建快照

lvcreate -L # -s -p r -n name /dev/vg_name/lvname

4 释放锁

mysql>unlock tables;

(5) 挂载快照卷,执行数据备份(6) 备份完成后,删除快照卷(7) 制定好策略,通过原卷备份二进制日志

逻辑备份工具 mysqldump,mydumper,phpmyadmin

Schema和数据存储在一起、巨大的SQL语句、单个巨大的备份文件

mysqldump备份工具

mysqldump database [tables] mysqldump -B DB1[DB2 DB3...] mysqldump -A

分库备份并压缩

利用二进制日志还原数据库

二进制日志独立存放

完全备份,并记录备份的二进制位置

mysqldump -A --master-data=2 | gzip > /backup/all

date +%F

.sql.gz

11.27

mysql的mylsam相关备份

-x

innoDB相关备份

mysqldump -uroot -A -F -E -R

备份

mysqldump -A -F --single-transetciong --master -data=2 |gzip > /backup/all -`date +%F·.sql.gz

还原

停止数据库访问(加锁) 从完全备份中,找到二进制位置

grep '-- change master to' /backup

xtrabackup用法

1 备份;对数据库做完全或增量备份 2 预制板;还原前,先对备份的数据,整理至一个临时目录

3 还原(复制);复制会数据库目录中

新版xtrabackup备份及还原

1 完全备份;xtrabackup -uroot -p123 --backup --target-dir=/backup/base

2 修改数据

3 第一次增量备份 xtrabackup --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base

4 第二次修改数据

5 第二次增量 xtrabackup --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

6 scp -r /backup/* 目标主机;/backup/

#备份过程生成三个备份目录

/backup/{base,inc1;inc2}

还原过程

mysql集群

分区

实现mysql主从复制配置

启动二进制文件

[mysqld]配置一个唯一ID号server_id=#

创建有复制权限的用户帐号

grant replication slave on . to 'repluser'@HOST' INDENTIFIED BY 'replpas''

节点配置 1启动中继日志 [mysqld] server_id=# read_only=on relay_log=relay-log

relay_log_index=relay-log.index

2 使用复制权限的用户帐号连接至主服务器,并启动复制线程

CHANGE MASTER TO MASTER_HOST='host', MASTER_USER='repluser',

MASTER_PASSWORD='replpass', MASTER_LOG_FILE=' mariadb-bin.xxxxxx',

MASTER_LOG_POS=#;

START SLAVE [IO_THREAD|SQL_THREAD];

主从复制相关 限制从服务器为只读 read_only=ON 对super权限用户无效

2 在从节点清楚信息 以下都需要先STOP SLAVE

RESET SLAVE 从服务器清楚master.info relay-log.info,

11.29

主从复制

mysql复制加密

主服务器开启SSL,配置证书私钥路径

[mysqld]

log-bin

server_id=1

ssl

ssl-ca=/etc/my.cnf.d/ssl/cacert.pem

ssl-cert=/etc/my.cnf.d/ssl/master.crt

ssl-key=/etc/my.cnf.d/ssl/master.key

需要修改权限chown -R mysql.mysql

继续阅读