kirnoのBlog

  • 首页

  • 归档

Mysql数据库备份

发表于 2019-07-31

备份数据库:

使用的工具为 Xtrabackup

Xtrabackup8 适用于mysql8, mysql8以下的数据库用 Xtrabackup2.4

一、 安装

建议从系统的软件库安装,自己编译简直是自取灭亡,官方安装方法

1. CentOS

  1. Centos6及以上系统

    Centos5不行,以下是官方给出的原因

    RHEL/Centos 5 doesn’t support installing the packages directly from the remote location so you’ll need to download the package first and install it manually with rpm:

    1
    2
    3
    > $ wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm
    > $ rpm -ivH percona-release-latest.noarch.rpm
    >

    安装软件源

    1
    $ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

    中途的确认 y 确认就好

  2. 测试源

    1
    yum list | grep percona

    这个命令会列出源内所有以 percona 开头的软件,如果其中包括了 percona-xtrabackup-24 就没什么问题了

  3. 安装

    1
    yum install percona-xtrabackup-24

    完成!!😊

2. Ubuntu

  1. 从官方获取软件源

    1
    $ wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
  2. 安装下载下来的源

    1
    $ sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
  3. 更新软件列表

    1
    sudo apt-get update
  4. 安装

    1
    sudo apt-get install percona-xtrabackup-24

    完成

二、 备份

1
innobackupex --user=root --password=123456 --compress --database=数据库名 /备份路径

参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 常用参数
--user:该选项表示备份账号。
--password:该选项表示备份的密码。
--port:该选项表示备份数据库的端口。
--host:该选项表示备份数据库的地址。
--socket:该选项表示mysql.sock所在位置,以便备份进程登录mysql。
--defaults-file:该选项指定了从哪个文件读取MySQL配置,必须放在命令行第一个选项的位置。
--databases:该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"db1 db2",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表。此外,此选项也可以接受一个文件为参数,文件中每一行为一个要备份的对象。

#压缩参数
--compress:该选项表示压缩innodb数据文件的备份。
--compress-threads:该选项表示并行压缩worker线程的数量。
--compress-chunk-size:该选项表示每个压缩线程worker buffer的大小,单位是字节,默认是64K。

#加密参数
--encrypt:该选项表示通过ENCRYPTION_ALGORITHM的算法加密innodb数据文件的备份,目前支持的算法有ASE128,AES192,AES256。
--encrypt-key:该选项使用合适长度加密key,因为会记录到命令行,所以不推荐使用。
--encryption-key-file:该选项表示文件必须是一个简单二进制或者文本文件,加密key可通过以下命令行命令生成:openssl rand -base64 24。
--encrypt-threads:该选项表示并行加密的worker线程数量。
--encrypt-chunk-size:该选项表示每个加密线程worker buffer的大小,单位是字节,默认是64K。

#增量备份参数
--incremental:该选项表示创建一个增量备份,需要指定--incremental-basedir。
--incremental-basedir:该选项表示接受了一个字符串参数指定含有full backup的目录为增量备份的base目录,与--incremental同时使用。
--incremental-lsn:该选项表示指定增量备份的LSN,与--incremental选项一起使用。
--incremental-dir:该选项表示增量备份的目录。
--incremental-force-scan:该选项表示创建一份增量备份时,强制扫描所有增量备份中的数据页。
--incremental-history-name:该选项表示存储在PERCONA_SCHEMA.xtrabackup_history基于增量备份的历史记录的名字。Percona Xtrabackup搜索历史表查找最近(innodb_to_lsn)成功备份并且将to_lsn值作为增量备份启动出事lsn.与innobackupex--incremental-history-uuid互斥。如果没有检测到有效的lsn,xtrabackup会返回error。
--incremental-history-uuid:该选项表示存储在percona_schema.xtrabackup_history基于增量备份的特定历史记录的UUID。

#主从
--slave-info:该选项表示对slave进行备份的时候使用,打印出master的名字和binlog pos,同样将这些信息以change master的命令写入xtrabackup_slave_info文件。可以通过基于这份备份启动一个从库。
--safe-slave-backup:该选项表示为保证一致性复制状态,这个选项停止SQL线程并且等到show status中的slave_open_temp_tables为0的时候开始备份,如果没有打开临时表,bakcup会立刻开始,否则SQL线程启动或者关闭知道没有打开的临时表。如果slave_open_temp_tables在--safe-slave-backup-timeount(默认300秒)秒之后不为0,从库sql线程会在备份完成的时候重启。

--include:该选项表示使用正则表达式匹配表的名字[db.tb],要求为其指定匹配要备份的表的完整名称,即databasename.tablename。
--tables-file:该选项表示指定含有表列表的文件,格式为database.table,该选项直接传给--tables-file。
--no-timestamp:该选项可以表示不要创建一个时间戳目录来存储备份,指定到自己想要的备份文件夹。
--rsync:该选项表示通过rsync工具优化本地传输,当指定这个选项,innobackupex使用rsync拷贝非Innodb文件而替换cp,当有很多DB和表的时候会快很多,不能--stream一起使用。
--stream:该选项表示流式备份的格式,backup完成之后以指定格式到STDOUT,目前只支持tar和xbstream。
--ibbackup:该选项指定了使用哪个xtrabackup二进制程序。IBBACKUP-BINARY是运行percona xtrabackup的命令。这个选项适用于xtrbackup二进制不在你是搜索和工作目录,如果指定了该选项,innoabackupex自动决定用的二进制程序。
--kill-long-queries-timeout:该选项表示从开始执行FLUSH TABLES WITH READ LOCK到kill掉阻塞它的这些查询之间等待的秒数。默认值为0,不会kill任何查询,使用这个选项xtrabackup需要有Process和super权限。
--kill-long-query-type:该选项表示kill的类型,默认是all,可选select。
--ftwrl-wait-threshold:该选项表示检测到长查询,单位是秒,表示长查询的阈值。
--ftwrl-wait-query-type:该选项表示获得全局锁之前允许那种查询完成,默认是ALL,可选update。
--galera-info:该选项表示生成了包含创建备份时候本地节点状态的文件xtrabackup_galera_info文件,该选项只适用于备份PXC。
--defaults-extra-file:该选项指定了在标准defaults-file之前从哪个额外的文件读取MySQL配置,必须在命令行的第一个选项的位置。一般用于存备份用户的用户名和密码的配置文件。
----defaults-group:该选项表示从配置文件读取的组,innobakcupex多个实例部署时使用。
--no-lock:该选项表示关闭FTWRL的表锁,只有在所有表都是Innodb表并且不关心backup的binlog pos点,如果有任何DDL语句正在执行或者非InnoDB正在更新时(包括mysql库下的表),都不应该使用这个选项,后果是导致备份数据不一致,如果考虑备份因为获得锁失败,可以考虑--safe-slave-backup立刻停止复制线程。
--tmpdir:该选项表示指定--stream的时候,指定临时文件存在哪里,在streaming和拷贝到远程server之前,事务日志首先存在临时文件里。在 使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话 xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。
--history:该选项表示percona server 的备份历史记录在percona_schema.xtrabackup_history表。 --close-files:该选项表示关闭不再访问的文件句柄,当xtrabackup打开表空间通常并不关闭文件句柄目的是正确的处理DDL操作。如果表空间数量巨大,这是一种可以关闭不再访问的文件句柄的方法。使用该选项有风险,会有产生不一致备份的可能。
--compact:该选项表示创建一份没有辅助索引的紧凑的备份。--throttle:该选项表示每秒IO操作的次数,只作用于bakcup阶段有效。apply-log和--copy-back不生效不要一起用。

三、还原

1
innobackupex --copy-back [--defaults-file=MY.CNF] [--defaults-group=GROUP-NAME] BACKUP-DIR
1
2
3
4
5
6
7
8
9
10
11
12
13
nnobackupex --copy-back [--defaults-file=MY.CNF] [--defaults-group=GROUP-NAME] BACKUP-DIR
innobackupex --move-back [--defaults-file=MY.CNF] [--defaults-group=GROUP-NAME] BACKUP-DIR

--copy-back:做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir。
--move-back:这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本

注意:
1.datadir目录必须为空。除非指定innobackupex --force-non-empty-directorires选项指定,否则--copy-backup选项不会覆盖
2.在restore之前,必须shutdown MySQL实例,你不能将一个运行中的实例restore到datadir目录中
3.由于文件属性会被保留,大部分情况下你需要在启动实例之前将文件的属主改为mysql,这些文件将属于创建备份的用户
chown -R my5711:mysql /data1/dbrestore
以上需要在用户调用Innobackupex之前完成
--force-non-empty-directories:指定该参数时候,使得innobackupex --copy-back或--move-back选项转移文件到非空目录,已存在的文件不会被覆盖。如果--copy-back和--move-back文件需要从备份目录拷贝一个在datadir已经存在的文件,会报错失败。

四、备份脚本

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
echo "开始备份"
innobackupex --user=root --password=cdkj2017 --database=common_db --compress /home/databasebackup
echo "备份成功"
echo "删除7天前的备份"
a=`date -d -7day +%Y-%m-%d*`
# 删除7天前的备份
echo "7天前的时间为${a}"
rm -rf /home/databasebackup/${a}
# 发送备份成功通知
curl -d "text=畅点数据库备份成功通知&desp=数据库名 common_db 备份成功" https://sc.ftqq.com/SCU17509Te58a968e0e85f6103d14a4ad257470db5c6fce4fc5d5b.send

五、定时备份

linux中使用 crontab

  1. crontab -l 列出定时任务

  2. crontab -e 编辑定时任务

    格式大概是这样的 五个号代表的意思分别是分,时,日,月,周

    比如每天凌晨2点执行

    1
    0 2 * * * /home/databasebackup/backup.sh

在vscode中使用Typescript开发node

发表于 2019-07-16

使用Typescript开发node的话,可以使用ts-node库,这样就可以直接运行,不需要另外编译。

阅读全文 »

hexo 折腾日记

发表于 2019-07-12

Hexo 也用了一段时间了,记录一下折腾日记

hexo主题推荐之 Next

主题风格挺好看的,简单明了,具体配官方比较全。

阅读全文 »

在nodejs使用mysql库中连接mysql8的问题

发表于 2019-07-12

由于mysql8.0的更新,mysql的默认认证方式从 mysql_native_password更换为caching_sha2_password所以导致 mysql 库用不了,报错

阅读全文 »

redux

发表于 2019-07-04 更新于 2019-07-12

img

从今天开始,我要坚持每天一篇文章!!!

Redux

Redux由Dan Abramov在2015年创建的科技术语。是受2014年Facebook的Flux架构以及函数式编程语言Elm启发。很快,Redux因其简单易学体积小在短时间内成为最热门的前端架构。

以上是百科的介绍,之所以学习Redux,目的就是解决没有关系的组件之间的通信问题。

typesafe-actions-zh

发表于 2019-07-03 更新于 2019-07-12


# typesafe-actions

> 主要是学习翻译用的,目前翻译不完整

Typesafe utilities designed to reduce types verbosity
and complexity in Redux Architecture.

阅读全文 »

构建electron、typescript、react、antd应用

发表于 2019-06-14 更新于 2019-07-12

这个研究了很旧,还没研究透,先记录,以免忘记

阅读全文 »

Hello World

发表于 2019-01-27

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

dnsCheck

发表于 2018-07-10 更新于 2019-01-27

使用dig命令进行检测。
运行 dig 主机记录命令进行检测或者运行 dig 主机记录 @8.8.8.8命令指定使用谷歌DNS进行验证。例如, dig txt b.aliyuntest.com @8.8.8.8。

如果返回结果中存在类似图示中的TXT记录,且记录值与订单进度页面中的记录值一致,表示您的DNS配置正确且已生效;如果记录值不同,请按照订单进度页面中的记录值在DNS域名解析服务商处更新该验证记录。
如果返回结果中不存在TXT记录,可能是DNS配置有误或者配置未生效。如配置错误,请按照订单进度页面中的配置要求在DNS域名解析服务商处重新配置;如果配置长时间未生效,请联系域名托管商。

linux常用命令

发表于 2018-07-02 更新于 2019-01-27
  1. 查看apt-get下载的软件的位置
12

kirno

25 日志
23 标签
RSS
GitHub
Creative Commons
© 2019 kirno
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Gemini v7.2.0