当前位置: 首页 > news >正文

中山做网站排名艺术生搭建wordpress个人博客

中山做网站排名,艺术生搭建wordpress个人博客,做美陈网站,哪个搜索引擎最好1、xtrabackup说明 xtrabackup是percona开源的mysql物理备份工具。 xtrabackup 8.0支持mysql 8.0版本的备份和恢复。 xtrabackup 2.4支持mysql 5.7及以下版本的备份和恢复。 这里我以xtrabackup 8.0为例讲解备份和恢复的具体操作方法。 xtrabackup 2.4版本的使用上和8.0版本相…1、xtrabackup说明 xtrabackup是percona开源的mysql物理备份工具。 xtrabackup 8.0支持mysql 8.0版本的备份和恢复。 xtrabackup 2.4支持mysql 5.7及以下版本的备份和恢复。 这里我以xtrabackup 8.0为例讲解备份和恢复的具体操作方法。 xtrabackup 2.4版本的使用上和8.0版本相差并不大。 官网 https://github.com/percona/percona-xtrabackup 1.1、备份过程说明 在 XtraBackup 工具的备份过程中默认情况下是不会锁定整个数据库的表的。XtraBackup 使用了多版本并发控制MVCC来确保备份期间数据库的一致性并避免对数据库的读取和写入操作造成影响。 在备份过程中XtraBackup 会先执行 LOCK INSTANCE FOR BACKUP 操作这个操作会获得全局锁Global Lock但它的持有时间非常短暂只是为了确保备份的一致性而进行的。在获取全局锁期间XtraBackup 将不会执行任何其他操作。 一旦获得了全局锁XtraBackup 就会释放该锁并转而使用多版本并发控制MVCC来读取数据库的数据这意味着备份期间数据库的读取和写入操作不会被阻塞。 这种备份方式称为 “Online Backup”它允许在备份过程中继续对数据库进行读写操作因此不会影响数据库的正常运行。由于备份期间不会锁定整个数据库表所以备份过程对数据库的性能影响相对较小。 2、安装 Percona XtraBackupXtraBackup wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm yum -y localinstall percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm xtrabackup --version3、 Mysql测试环境 3.1、安装部署mysql版本 8.0.21 部署过程忽略 3.2、写入一些测试数据 进入数据库 /opt/apps/mysql/bin/mysql -uroot -p -S /opt/data/data_16303/mysql.sock执行SQL语句 create database school character set utf8; create table school.student( 学号 char(20), 姓名 char(20), 性别 char(5), 手机号 int(11), 通信地址 char(50)); ALTER TABLE school.student MODIFY COLUMN 手机号 BIGINT; insert into school.student values(NSD2023002,蛇精,女,1389999999,上海),(NSD181003,爷爷,男,1387777777,长白山);select * from school.student;附加Python写入更多的测试数据 import random import string import pymysql import time# MySQL数据库配置 db_config {host: 172.16.11.1,port: 16303,user: mync,password: bR5!eA7~bA,database: school, }# 生成随机字符串 def generate_random_string(length):letters string.ascii_lettersreturn .join(random.choice(letters) for i in range(length))# 生成随机数据 def generate_random_data():students [{学号: fNSD{random.randint(100000, 999999)},姓名: generate_random_string(5),性别: random.choice([男, 女]),手机号: 1 .join(random.choice(string.digits) for _ in range(10)), # 生成11位数字字符串通信地址: generate_random_string(10),}for _ in range(5) # 更改要插入的随机记录数]return students# 将随机数据插入MySQL数据库 def insert_random_data(data):try:# 连接到MySQL数据库conn pymysql.connect(**db_config)cursor conn.cursor()# 插入数据到表中insert_query INSERT INTO school.student (学号, 姓名, 性别, 手机号, 通信地址) VALUES (%s, %s, %s, %s, %s)for student in data:values (student[学号],student[姓名],student[性别],student[手机号],student[通信地址],)cursor.execute(insert_query, values)# 提交更改并关闭连接conn.commit()cursor.close()conn.close()print(数据插入成功。)except pymysql.Error as error:print(f错误{error})if conn and conn.open:cursor.close()conn.close()if __name__ __main__:try:while True:# 生成随机数据random_data generate_random_data()# 将随机数据插入表中insert_random_data(random_data)# 等待一段时间例如5秒time.sleep(5)except KeyboardInterrupt:print(手动停止数据插入。)4、全量各种备份操作 4.1、本地全量备份 4.1.1、将整个数据库备份到本地的指定目录。 mkdir -p /data/backup/ /usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir/opt/data/data_16303 --target-dir/data/backup/ --port16303 2 /tmp/xtrabackup.log参数说明 /usr/bin/xtrabackup: 这是执行 XtraBackup 工具的路径。 backup发起全量备份 --slave-info记录slave复制位点信息。 -uroot: 这是连接 MySQL 数据库时使用的用户名。 -p: 这是连接 MySQL 数据库时使用的密码选项,在命令中没有指定具体的密码值所以执行命令时会提示您输入密码。 -S /opt/data/data_16303/mysql.sock: 这指定了 MySQL 服务器的 Unix 套接字路径。这个选项用于指定连接到 MySQL 服务器的套接字。 --datadir/opt/data/data_16303: 这是 MySQL 数据目录的路径,XtraBackup 将从该路径读取数据库文件进行备份。 --target-dir/data/backup/: 这是备份数据输出目录的路径。XtraBackup 将备份的数据输出到指定的目录中。 --port16303指定数据库端口 2 /tmp/xtrabackup.log: 这部分将标准错误输出 (stderr) 重定向到 /tmp/xtrabackup.log 文件。4.1.2、执行命令之后查看日志信息 可以观察到xtrabackup备份过程中的重要操作。比如何时锁表、何时解锁、何时开始备份、何时完成备份、备份是否成功等。 图中可以看到 completed OK!: 说明备份过程已成功完成。 4.1.3、查看备份出来的文件 每个文件的解释 backup-my.cnf: 备份期间使用的 MySQL 配置文件。 ibdata1: InnoDB 存储引擎的系统表空间文件。它包含了表结构、数据和索引等信息。 mysql-bin.000005: 二进制日志文件用于记录数据库的更改操作以支持数据复制和恢复。 performance_schema: MySQL 的性能架构表用于存储性能监控数据。 slave-bin.index: 从服务器的二进制日志索引文件记录了从服务器的复制日志文件名。 undo_001: InnoDB 存储引擎的回滚段文件用于支持事务的回滚操作。 xtrabackup_binlog_info: 备份期间的二进制日志信息包括文件名和位置等。 xtrabackup_info: 备份的元数据信息包括备份开始和结束时间、备份类型等。 xtrabackup_slave_info: 备份期间的主从复制信息记录了主服务器的位置等信息。 ib_buffer_pool: InnoDB 存储引擎的缓冲池文件用于缓存数据页。 mysql: MySQL 数据库的目录其中可能包含其他表和数据文件。 mysql.ibd: MySQL 系统表的表空间文件。 school: 数据库中名为 school 的数据库的目录其中可能包含其他表和数据文件。 sys: MySQL 的系统库包含了系统视图和存储过程等。 undo_002: InnoDB 存储引擎的回滚段文件用于支持事务的回滚操作。 xtrabackup_checkpoints: 备份期间生成的检查点信息用于增量备份。 xtrabackup_logfile: 备份期间生成的日志文件。 xtrabackup_tablespaces: 备份期间生成的表空间信息用于支持 InnoDB 表的恢复。4.2、备份到远程主机 xtrabackup支持流式备份备份文件本地不落盘直接备份到远程主机避免单个主机故障导致数据库和备份文件同时丢失。 本地主机跟远程主机提前做好SSH免密 /usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir/opt/data/data_16303 --streamxbstream --target-dir/data/backup/ --port16303 2 /tmp/xtrabackup.log | ssh root1.1.1.1 cat - /data/backup/backup.s1命令执行后由于做了SSH免密只需输入MySQL的root密码。 命令解释 这个命令执行了一个数据库备份操作并将备份数据通过SSH传输到另一台远程主机。 /usr/bin/xtrabackup: 这是执行备份操作的命令。 --backup: 这是xtrabackup的选项之一表示执行备份操作。 --slave-info: 这是xtrabackup的选项之一表示在备份数据时包含复制相关的信息以便在进行复制恢复时使用。 -uroot: 这是连接MySQL数据库的用户名这里使用root用户进行连接。 -p: 这是连接MySQL数据库时的密码选项命令中没有指定密码因此在运行命令后需要手动输入MySQL的密码。 -S /opt/data/data_16303/mysql.sock: 这是连接MySQL数据库时指定的UNIX套接字文件路径用于指定数据库的连接方式。 --datadir/opt/data/data_16303: 这是MySQL数据库的数据目录路径指定要备份的数据库的数据目录。 --streamxbstream: 这是xtrabackup的选项之一表示将备份数据流式传输给stdout以便在管道中传递到远程主机。 --target-dir/data/backup/: 这是备份数据输出的目标目录路径。 --port16303: 这是连接MySQL数据库时使用的端口号。 2 /tmp/xtrabackup.log: 这部分将标准错误输出重定向到/tmp/xtrabackup.log文件中以便记录备份过程中可能出现的错误和警告。 |: 这是管道符号它将前面命令的输出作为后面命令的输入。 ssh root1.1.1.1: 这是SSH命令用于远程登录到IP地址为1.1.1.1的主机并使用root用户进行连接。 cat - /data/backup/backup.s1: 这部分是在远程主机上执行的命令cat用于将标准输入即前面备份命令传输的数据流输出到/data/backup/backup.s1文件中。4.3、压缩备份文件 可以在备份服务器上进行压缩也可以在远程服务器上进行压缩。 压缩软件可以使用gzip也可以使用pigz。pigz支持并行压缩和并行解压缩可以加快压缩和解压的速度。 4.3.1、备份服务器上进行压缩 大概需求 使用 Percona XtraBackup 工具备份 MySQL 数据库连接到位于 /opt/data/data_16303 目录下的 MySQL 实例使用用户名 “root”备份的同时获取复制信息备份数据输出到 /data/backup/ 目录下并将备份数据进行压缩压缩后的文件名为 backup1.gz。 /usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir/opt/data/data_16303 --target-dir/data/backup/ --port16303 2 /tmp/xtrabackup.log | gzip - /data/backup/backup1.gz命令解释 /usr/bin/xtrabackup: 这是实际执行的备份工具的路径。 --backup: 这是 Percona XtraBackup 工具的选项之一表示进行备份操作。 --slave-info: 这是 Percona XtraBackup 工具的选项之一表示在备份的时候也要获取复制信息。通常在配置了 MySQL 主从复制时使用以确保备份数据的一致性。 -uroot: 这是连接 MySQL 数据库的用户名这里使用了 root 用户。 -p: 这是一个选项表示在连接数据库时需要输入密码。由于没有指定密码系统会提示输入密码后才能继续执行。 -S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。 --datadir/opt/data/data_16303: 这是指定 MySQL 数据目录的路径即数据库文件所在的位置。 --target-dir/data/backup/: 这是指定备份文件输出的目录路径。在这里备份文件将会输出到 /data/backup/ 目录下。 --port16303: 这是指定要连接的 MySQL 实例的端口号这里指定为 16303。 2 /tmp/xtrabackup.log: 这是将标准错误输出stderr重定向到 /tmp/xtrabackup.log 文件中用于记录备份过程中的错误信息。 | gzip - /data/backup/backup1.gz: 这是将备份数据通过管道传送到 gzip 命令中并将压缩后的数据输出到 /data/backup/backup1.gz 文件中。4.3.2、发送到远程服务器压缩 大概需求 使用 Percona XtraBackup 工具备份 MySQL 数据库连接到位于 /opt/data/data_16303 目录下的 MySQL 实例使用用户名 “root”备份的同时获取复制信息备份数据通过 SSH 传输到位于 IP 地址为 “1.1.1.1” 的远程服务器并在远程服务器上进行压缩保存压缩后的文件名为 backup1.gz。 /usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir/opt/data/data_16303 --target-dir/data/backup/ --port16303 2 /tmp/xtrabackup.log | ssh root1.1.1.1 gzip - /data/backup/backup1.gz命令解释 /usr/bin/xtrabackup: 这是实际执行的备份工具的路径。 --backup: 这是 Percona XtraBackup 工具的选项之一表示进行备份操作。 --slave-info: 这是 Percona XtraBackup 工具的选项之一表示在备份的时候也要获取复制信息。通常在配置了 MySQL 主从复制时使用以确保备份数据的一致性。 -uroot: 这是连接 MySQL 数据库的用户名这里使用了 root 用户。 -p: 这是一个选项表示在连接数据库时需要输入密码。由于没有指定密码系统会提示输入密码后才能继续执行。 -S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。 --datadir/opt/data/data_16303: 这是指定 MySQL 数据目录的路径即数据库文件所在的位置。 --target-dir/data/backup/: 这是指定备份文件输出的目录路径。在这里备份文件将会输出到 /data/backup/ 目录下。 --port16303: 这是指定要连接的 MySQL 实例的端口号这里指定为 16303。 2 /tmp/xtrabackup.log: 这是将标准错误输出stderr重定向到 /tmp/xtrabackup.log 文件中用于记录备份过程中的错误信息。 |: 这是管道符号用于将前面命令的输出传递给后面的命令。 ssh root1.1.1.1: 这是通过 SSH 登录到远程服务器其中 root 是远程服务器的用户名1.1.1.1 是远程服务器的 IP 地址。 gzip - /data/backup/backup1.gz: 这是在远程服务器上执行的命令通过管道接收来自前面命令的备份数据并将其压缩后保存到远程服务器的 /data/backup/backup1.gz 文件中。4.4、备份到云端(OSS) xtrabackup工具中有一个xbcloud程序可以将数据库直接备份到S3对象存储中本地不落盘。 本次演示备份到阿里云OSS 4.4.1、部署ossutil工具 参考文章阿里云ossutil使用 验证命令是否安装成功 ./ossutil64 ls4.4.2、创建一个命名管道 mkfifo /data/backup/backup0625.xbstream ls -l /data/backup/backup0625.xbstream4.4.3、执行备份命令 将备份的输出重定向到步骤 4.4.2 创建的命名管道。 /usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir/opt/data/data_16303 --streamxbstream --target-dir/data/backup/ --port16303 2/data/backup/xtrabackup.log /data/backup/backup0625.xbstream命令解释 其余参数参考以上步骤 /data/backup/backup0625.xbstream: 以 xbstream 格式流式输出备份数据重定向到 /data/backup/backup0625.xbstream 文件中用于保存备份数据的 xbstream 文件。4.4.4、使用ossutil工具将备份文件上传到OSS ossutil64 cp /data/backup/backup0625.xbstream oss://ycdbbackup解释命令 ossutil64: 这是实际执行的 OSS 命令行工具 cp: 这是 ossutil64 工具的一个子命令用于复制文件或目录。 /data/backup/backup0625.xbstream: 这是本地的文件路径指定了要上传的备份文件 backup0625.xbstream 所在的位置。 oss://ycdbbackup: 这是 OSS 存储桶的路径指定了上传文件的目标位置。在这里ycdbbackup 是 OSS 存储桶的名称文件将会上传到该存储桶中。5、增量备份操作 xtrabackup支持增量备份在做增量备份之前需要先做一个全量备份xtrabackup会基于innodb page的lsn号来判断是否需要备份一个page如果page lsn大于上次备份的lsn号就需要备份该page。 5.1、进行一次全量备份。 使用 Percona XtraBackup 工具备份 MySQL 数据库并将备份数据以流式 xbstream 格式进行压缩然后保存到 /data/backup/full/backup_full.gz 文件中。 /usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir/opt/data/data_16303 --streamxbstream --target-dir /data/backup/full --port16303 --extra-lsndir/data/backup/full 2/data/backup/full/backup_full.log | gzip - /data/backup/full/backup_full.gz各参数命令解释 /usr/bin/xtrabackup: 这是实际执行的备份工具的路径。 --backup: 这是 Percona XtraBackup 工具的选项之一表示进行备份操作。 --slave-info: 这是 Percona XtraBackup 工具的选项之一表示在备份的时候也要获取复制信息。通常在配置了 MySQL 主从复制时使用以确保备份数据的一致性。 -uroot: 这是连接 MySQL 数据库的用户名这里使用了 root 用户。 -p: 这是一个选项表示在连接数据库时需要输入密码。由于没有指定密码系统会提示输入密码后才能继续执行。 -S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。 --datadir/opt/data/data_16303: 这是指定 MySQL 数据目录的路径即数据库文件所在的位置。 --streamxbstream: 这是一个选项指定备份数据以 xbstream 格式进行流式输出。xbstream 格式支持并行处理和压缩适用于备份大型数据库。 --target-dir /data/backup/full: 这是指定备份文件输出的目录路径。在这里备份文件将会输出到 /data/backup/full 目录下。 --port16303: 这是指定要连接的 MySQL 实例的端口号这里指定为 16303。 --extra-lsndir/data/backup/full: 这是指定备份过程中产生的日志文件LSN文件的存放目录。LSN文件包含备份信息和复制信息。 2/data/backup/full/backup_full.log: 这是将标准错误输出stderr重定向到 /data/backup/full/backup_full.log 文件中用于记录备份过程中的错误信息。 |: 这是管道符号用于将前面命令的输出传递给后面的命令。 gzip - /data/backup/full/backup_full.gz: 这是将备份数据通过管道传送到 gzip 命令中并将压缩后的数据输出到 /data/backup/full/backup_full.gz 文件中。综合命令解释 这个命令的含义是使用 Percona XtraBackup 工具备份 MySQL 数据库连接到位于 /opt/data/data_16303 目录下的 MySQL 实例使用用户名 “root”备份的同时获取复制信息并以 xbstream 格式流式输出备份数据备份数据输出到 /data/backup/full 目录中并将备份数据进行压缩压缩后的文件名为 backup_full.gz。同时将错误信息输出到 /data/backup/full/backup_full.log 文件中。 5.1.1、测试写入新的数据 全量备份完之后测试写入新的数据使用Python 脚本模拟写入。 5.2、发起增量备份 使用 Percona XtraBackup 工具进行增量备份将增量备份数据以流式 xbstream 格式进行压缩并保存到 /data/backup/inc1/backup_inc1.gz 文件中。 5.2.1、在全量备份的基础上做增量备份 mkdir /data/backup/inc1 /usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir/opt/data/data_16303 --streamxbstream --target-dir /data/backup/inc1 --port16303 --extra-lsndir/data/backup/inc1 --incremental-basedir/data/backup/full 2/data/backup/inc1/backup_inc1.log | gzip - /data/backup/inc1/backup_inc1.gz参数解释 /usr/bin/xtrabackup: 这是实际执行的备份工具的路径。 --backup: 这是 Percona XtraBackup 工具的选项之一表示进行备份操作。 --slave-info: 这是 Percona XtraBackup 工具的选项之一表示在备份的时候也要获取复制信息。通常在配置了 MySQL 主从复制时使用以确保备份数据的一致性。 -uroot: 这是连接 MySQL 数据库的用户名这里使用了 root 用户。 -p: 这是一个选项表示在连接数据库时需要输入密码。由于没有指定密码系统会提示输入密码后才能继续执行。 -S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。 --datadir/opt/data/data_16303: 这是指定 MySQL 数据目录的路径即数据库文件所在的位置。 --streamxbstream: 这是一个选项指定备份数据以 xbstream 格式进行流式输出。xbstream 格式支持并行处理和压缩适用于备份大型数据库。 --target-dir /data/backup/inc1: 这是指定备份文件输出的目录路径。在这里增量备份文件将会输出到 /data/backup/inc1 目录下。 --port16303: 这是指定要连接的 MySQL 实例的端口号这里指定为 16303。 --extra-lsndir/data/backup/inc1: 这是指定备份过程中产生的日志文件LSN 文件的存放目录。LSN 文件包含备份信息和复制信息。 --incremental-basedir/data/backup/full: 这是指定增量备份的基准目录即之前已经完成的完整备份full backup的目录路径。这里是指定增量备份基于 /data/backup/full 目录下的完整备份。 2/data/backup/inc1/backup_inc1.log: 这是将标准错误输出stderr重定向到 /data/backup/inc1/backup_inc1.log 文件中用于记录备份过程中的错误信息。 |: 这是管道符号用于将前面命令的输出传递给后面的命令。 gzip - /data/backup/inc1/backup_inc1.gz: 这是将增量备份数据通过管道传送到 gzip 命令中并将压缩后的数据输出到 /data/backup/inc1/backup_inc1.gz 文件中。5.2.2、在上一次增量备份的基础上进行增量备份 使用 Percona XtraBackup 工具进行第二次增量备份将增量备份数据以流式 xbstream 格式进行压缩并保存到 /data/backup/inc2/backup_inc2.gz 文件中。 需要注意的是恢复增量备份时需要增量备份前的全量备份以及该增量备份和全量备份之间的所有增量备份。 我这边的上一次增量备份目录是 /data/backup/inc1 mkdir /data/backup/inc2 /usr/bin/xtrabackup --backup --slave-info -uroot -p -S /opt/data/data_16303/mysql.sock --datadir/opt/data/data_16303 --streamxbstream --target-dir /data/backup/inc2 --port16303 --extra-lsndir/data/backup/inc2 --incremental-basedir/data/backup/inc1 2/data/backup/inc2/backup_inc2.log | gzip - /data/backup/inc2/backup_inc2.gz命令参数解释 /usr/bin/xtrabackup: 这是实际执行的备份工具的路径。 --backup: 这是 Percona XtraBackup 工具的选项之一表示进行备份操作。 --slave-info: 这是 Percona XtraBackup 工具的选项之一表示在备份的时候也要获取复制信息。通常在配置了 MySQL 主从复制时使用以确保备份数据的一致性。 -uroot: 这是连接 MySQL 数据库的用户名这里使用了 root 用户。 -p: 这是一个选项表示在连接数据库时需要输入密码。由于没有指定密码系统会提示输入密码后才能继续执行。 -S /opt/data/data_16303/mysql.sock: 这是指定 MySQL 连接使用的套接字文件路径用于连接到特定的 MySQL 实例。这里是连接到位于 /opt/data/data_16303 目录下的 MySQL 实例。 --datadir/opt/data/data_16303: 这是指定 MySQL 数据目录的路径即数据库文件所在的位置。 --streamxbstream: 这是一个选项指定备份数据以 xbstream 格式进行流式输出。xbstream 格式支持并行处理和压缩适用于备份大型数据库。 --target-dir /data/backup/inc2: 这是指定备份文件输出的目录路径。在这里第二次增量备份文件将会输出到 /data/backup/inc2 目录下。 --port16303: 这是指定要连接的 MySQL 实例的端口号这里指定为 16303。 --extra-lsndir/data/backup/inc2: 这是指定备份过程中产生的日志文件LSN 文件的存放目录。LSN 文件包含备份信息和复制信息。 --incremental-basedir/data/backup/inc1: 这是指定增量备份的基准目录即上一次已经完成的增量备份inc1 backup的目录路径。这里是指定第二次增量备份基于 /data/backup/inc1 目录下的增量备份如果上次备份的目录是其他就需要更改。 2/data/backup/inc2/backup_inc2.log: 这是将标准错误输出stderr重定向到 /data/backup/inc2/backup_inc2.log 文件中用于记录备份过程中的错误信息。 |: 这是管道符号用于将前面命令的输出传递给后面的命令。 gzip - /data/backup/inc2/backup_inc2.gz: 这是将增量备份数据通过管道传送到 gzip 命令中并将压缩后的数据输出到 /data/backup/inc2/backup_inc2.gz 文件中。6、恢复全量备份 恢复全量备份大致可以分成以下几步解压备份文件、prepare备份文件、将数据copy到目标实例相关目录、启动数据库实例。 6.1、删除测试机器上的数据库 由于之前的实验做了全量备份所以我本次可以直接删除库方便后续验证恢复。 删除之后停掉mysql服务 6.2、解压文件 如果备份时使用了xbstream需要先解压备份文件。 我们备份时使用了–streamxbstream和gzip压缩先使用gunzip接解压缩再使用xbstream将文件提取出来。 gunzip backup_full.gz xbstream -x -v backup_full这两个命令的含义如下 gunzip backup_full.gz: 这是一个解压缩命令用于解压名为 backup_full.gz 的备份文件。gunzip 命令用于解压以 .gz 结尾的压缩文件将其还原为原始格式的文件。gunzip: 这是用于解压缩文件的命令。 backup_full.gz: 这是要解压缩的文件名。在这里backup_full.gz 是待解压缩的备份文件。 xbstream -x -v backup_full: 这是使用 xbstream 工具从备份文件中还原数据的命令。xbstream: 这是 Percona XtraBackup 工具提供的命令用于从 xbstream 格式的流数据中恢复备份文件。 -x: 这是 xbstream 命令的选项表示要从流数据中还原解压备份文件。 -v: 这也是 xbstream 命令的选项表示在解压备份数据时输出详细信息verbose mode。backup_full: 这是输入重定向符号 将备份文件 backup_full 的内容作为输入传递给 xbstream 命令。这样xbstream 命令就可以从 backup_full 文件中获取数据并进行解压缩。6.3、应用redo日志 解压完成后需要使用xtrabackup --prepare命令将xtrabackup_logfile应用到备份的数据文件中将数据库恢复到备份结束时的状态。 xtrabackup --prepare命令会根据xtrabackup_checkpoints文件中记录的last_lsn来确定需要应用哪些日志。 cat xtrabackup_checkpointsxtrabackup_checkpoints 文件是 Percona XtraBackup 工具在备份过程中生成的检查点文件其中包含了备份过程的一些状态信息。这些信息的含义 backup_type full-backuped: 这是备份类型指示该备份是全量备份。 from_lsn 0: 这是备份的起始日志序列号LSN表示备份过程从哪个LSN开始。 to_lsn 18025014: 这是备份的结束日志序列号LSN表示备份过程到哪个LSN结束。 last_lsn 18025014: 这是备份过程完成时数据库的最后一个日志序列号LSN表示备份过程结束时数据库中最后一个已经完成的日志序列号。 flushed_lsn 18025014: 这是备份过程完成时数据库的刷新日志序列号LSN表示备份完成时刷新到磁盘上的最后一个日志序列号。 redo_memory 0: 这是备份过程中使用的重做日志内存大小。 redo_frames 0: 这是备份过程中使用的重做日志帧数。 这些信息对于备份的恢复非常重要。备份过程中记录的 LSN 信息用于确定备份的范围和备份点。在恢复时这些信息可以帮助确定从哪个备份点开始恢复数据。通过这些信息Percona XtraBackup 工具可以在恢复时识别已经备份的数据和未备份的数据确保数据的一致性。 在正常情况下xtrabackup_checkpoints 文件应该被 Percona XtraBackup 工具自动创建和管理无需手动修改或操作。它只是备份过程的一个辅助文件供工具在需要时参考。6.3.1执行prepare命令 命令要在刚才解压的路径下执行 xtrabackup --prepare --target-dir . prepare.log 216.3.2命令执行完成后查看日志信息 从输出可以看出备份恢复过程已经成功完成并且数据库已经恢复到了备份的状态。 如果最后一行日志不是“completed OK”说明prepare执行过程中有问题需要根据输出的日志分析具体原因。 日志信息解释 2023-07-28T17:55:20.88439708:00 0 [Note] [MY-012976] [InnoDB] 8.0.33 started; log sequence number 18025494: MySQL InnoDB 引擎已经启动并显示了当前的日志序列号。2023-07-28T17:55:20.88593908:00 0 [Warning] [MY-012091] [InnoDB] Allocated tablespace ID 1 for sys/sys_config, old maximum was 0: 在 InnoDB 启动过程中分配了一个表空间 ID 给了 sys/sys_config 表。这里的警告表示这个表空间之前的最大 ID 为 0现在被分配的 ID 是 1。2023-07-28T17:55:20.88737408:00 0 [Note] [MY-011825] [Xtrabackup] Completed loading of 3 tablespaces into cache in 0.00289571 seconds: Xtrabackup 成功加载了 3 个表空间到缓存中加载时间为 0.00289571 秒。2023-07-28T17:55:20.91495808:00 0 [Note] [MY-011825] [Xtrabackup] Time taken to build dictionary: 0.0275147 seconds: 构建数据字典所花费的时间为 0.0275147 秒。2023-07-28T17:55:20.91616308:00 0 [Note] [MY-011825] [Xtrabackup] starting shutdown with innodb_fast_shutdown 1: Xtrabackup 开始执行 MySQL 的关闭过程并且使用了 innodb_fast_shutdown 1。2023-07-28T17:55:20.91627708:00 0 [Note] [MY-012330] [InnoDB] FTS optimize thread exiting.: 全文搜索 (FTS) 优化线程正在退出。2023-07-28T17:55:21.91562308:00 0 [Note] [MY-013072] [InnoDB] Starting shutdown...: MySQL InnoDB 引擎开始关闭。2023-07-28T17:55:21.92240108:00 0 [Note] [MY-013084] [InnoDB] Log background threads are being closed...: 后台日志线程正在关闭。2023-07-28T17:55:21.93826208:00 0 [Note] [MY-012980] [InnoDB] Shutdown completed; log sequence number 18025494: MySQL InnoDB 引擎已经成功关闭并显示了关闭时的日志序列号。2023-07-28T17:55:21.94030308:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!: Xtrabackup 完成了恢复操作并成功恢复数据库到备份的状态。6.4、增加内存 xtrabackup启动的mysql临时实例buffer pool默认为100M可以通过参数–use-memory适当增加内存加快恢复的速度。官方文档建议将内存设置为1-2G。 xtrabackup --prepare --use-memory2G --target-dir . prepare.log 216.5、将数据文件复制到数据目录 xtrabackup prepare完成后的数据库可以用来直接启动。启动实例之前需要将文件复制或移动到目标实例的数据目录中。目录需要依据目标实例的参数来确定。 6.5.1、先查看一下恢复出来的文件 6.5.2、查看本机的my_16303.cnf文件 6.5.3复制文件 cd /data/backup/full/ \cp -r * /opt/data/data_16303/6.6、启动实例 /opt/apps/mysql/bin/mysqld --defaults-file/opt/conf/my_16303.cnf --userswadmin 进库验证数据 /opt/apps/mysql/bin/mysql -uroot -p -S /opt/data/data_16303/mysql.sock可以看到之前删除的库已经恢复回来了 7、恢复增量备份 恢复增量备份时需要先对基础全量备份进行恢复然后再依次按增量备份的时间进行恢复。 7.1、先再次恢复全量备份 cd /data/backup/full xbstream -x -v backup_full xtrabackup --prepare --apply-log-only --target-dir. prepare_full.log 21命令解释 xbstream -x -v backup_full: xbstream是用于处理InnoDB备份数据的工具这里使用了输入重定向符将名为backup_full的输入数据传递给xbstream命令。-x参数表示解压缩备份数据-v参数表示启用详细输出verbose mode。xbstream将解压缩后的备份数据输出到当前目录下。xtrabackup --prepare --apply-log-only --target-dir. prepare_full.log 21: xtrabackup是用于处理InnoDB备份的工具这里使用了输出重定向符将输出结果写入名为prepare_full.log的文件中。21将标准错误输出重定向到标准输出也就是一并写入到prepare_full.log文件。--prepare: 这个选项用于准备InnoDB备份数据。在准备阶段备份数据会被还原但不会被恢复到MySQL服务器上。这是为了确保数据的一致性以便在后续恢复过程中使用。--apply-log-only: 这个选项告诉xtrabackup只执行事务日志的应用而不进行真正的数据恢复。这也是准备阶段的一部分。--target-dir.: 这个选项指定备份数据的目录这里使用.表示当前目录即之前通过xbstream解压缩的备份数据所在的目录。7.2、查看日志 查看日志确认这一步骤执行成功最后一行日志显示“completed OK!” 7.3、恢复第一个增量备份 cd /data/backup/inc1 gunzip backup_inc1.gz rm -rf xtrabackup_checkpoints xtrabackup_info ## 需要先删除这两个文件否则xbstream提取文件时有冲突 xbstream -x -v backup_inc1 ## 提取文件以上命令执行完后 恢复增量备份时切换到全量备份的目录执行 cd /data/backup/full xtrabackup --prepare --apply-log-only --incremental-dir/data/backup/inc1 --target-dir. prepare_inc1.log 21恢复增量备份时加上apply-log-only参数参数–incremental-dir设置为增量备份文件所做目录。 7.4、检查执行日志 确认增量备份恢复执行成功日志最后一行显示“completed OK!” 7.5、复制文件 到这一步之后操作和恢复全量备份的操作基本是一样的。 cd /data/backup/full \cp -r * /opt/data/data_16303 chown -R swadmin:swadmin /opt/data/data_16303/*7.6、启动数据库 /opt/apps/mysql/bin/mysqld --defaults-file/opt/conf/my_16303.cnf --userswadmin 至此增量备份恢复完成。 8、将数据库恢复到指定时间点 使用全量备份和增量备份文件都只能将数据库恢复到备份结束的时间。通过binlog可以将数据库恢复到任意时间点前提是备份和该时间点之间的binlog都存在。 8.1、找到时间点对应的binlog 恢复到时间点首先需要定位该时间点对应的binlog位点binlog文件和文件内的偏移量。每个binlog头部都记录了该binlog产生的时间我们可以使用mysqlbinlog工具解析binlog查看binlog的第一个event的时间 /opt/apps/mysql/bin/mysqlbinlog -v mysql-bin.000011 | head如果我们需要恢复到某个时间点T那么我们需要找的binlog开始时间不大于T并且该binlog的下一个binlog的开始时间大于T。 8.2、批量查看binlog时间 这里提供一个python的脚本可以批量查看binlog时间 import sys import structif len(sys.argv) 2:pattern sys.argv[1] else:pattern mysql-bin.0000*print (binlog pattern: %s % pattern)def parse_binlog_header(filename):with open(filename, rb) as f:data f.read(8)return struct.unpack(i, data[4:])[0]def main():import globfrom datetime import datetimefor f in sorted(glob.glob(pattern), keylambda x: int(x.split(.)[-1])):ts parse_binlog_header(f)print f, ts, datetime.fromtimestamp(ts)if __name__ __main__:main()其中这个参数 pattern ‘mysql-bin.0000*’ 根据自己本机的名字修改 脚本定义在跟binlog同一个目录 执行脚本显示binlog时间 8.3使用mysqlbinlog解析binlog并执行 我的全量备份binlog位点是mysql-bin.000008 cat xtrabackup_binlog_info假设需求希望将数据库恢复到2023-07-28 16:45:00
http://www.pierceye.com/news/977432/

相关文章:

  • 百度关键词排名销售长沙网站优化
  • 阿里云部署多个网站wordpress 导航站点
  • 网站品牌词优化怎么做全国网站建设公司
  • 沧州做网站哪家好wordpress站点进入时弹窗
  • 中国化工建设网站做淘宝网站如何提取中间的提成
  • 柳州网站制作推荐怀化网站seo
  • iis网站ip兰州网站排名分析
  • 珠海建网站多少钱网站月流量
  • 彩网站开发购物小程序源码
  • 优秀的网站建设开发案例合肥备案
  • 做网站怎么签订协议大数据下的精准营销
  • wordpress模版建站城乡建设部网站施工员证书查询
  • 手机网站前端网站开发成本包括
  • 有了主机和域名后如何做网站seo网站建站公司的主页
  • 株洲网站制作360广告联盟平台
  • 网站pv是什么意思vps开wordpress
  • 国外网站模版免费下载南通建设网站公司
  • 网站建设 广西学3d建模学费一般多少
  • 整站外包优化公司金山西安网站建设
  • 做3d动画网站广州公关公司排行榜
  • 网站开发确认表seo技术教程博客
  • 彩票网站建设一条龙淘客app
  • 泰安网站推广优化网站百度收录是什么意思
  • 免费虚拟主机控制面板长沙推广优化公司
  • 重庆企业网站建站公司建站系统
  • 规划设计网站推荐自己做采集电影网站
  • 免费学编程的网站有哪些做网站设计用什么软件
  • 网站成品超市学室内设计去哪好
  • 网站备案一个主体无锡建设银行网站
  • delphi xe10网站开发台州做网站多少钱