CentOS7.x 安装mysql5.7 XtraBackUp备份工具使用命令详解
来源:脚本之家
时间:2023-01-01 16:14:51 140浏览 收藏
本篇文章给大家分享《CentOS7.x 安装mysql5.7 XtraBackUp备份工具使用命令详解》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。
mysql安装
1.mysql下载
# 官网 https://www.mysql.com/ # 下载模块 https://downloads.mysql.com/archives/community/ # 官网下载链接 https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
# 创建目录命令
mkdir /app && mkdir /app/mysql57 && cd /app/mysql57 # lunix下载命令 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar # 解压 tar -xvf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar [root@localhost mysql57]# ls mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar mysql-community-libs-5.7.18-1.el7.x86_64.rpm mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-minimal-debuginfo-5.7.18-1.el7.x86_64.rpm mysql-community-devel-5.7.18-1.el7.x86_64.rpm mysql-community-server-5.7.18-1.el7.x86_64.rpm mysql-community-embedded-5.7.18-1.el7.x86_64.rpm mysql-community-server-minimal-5.7.18-1.el7.x86_64.rpm mysql-community-embedded-compat-5.7.18-1.el7.x86_64.rpm mysql-community-test-5.7.18-1.el7.x86_64.rpm mysql-community-embedded-devel-5.7.18-1.el7.x86_64.rpm [root@localhost mysql57]#
2.安装mysql
# 安装 community-common rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm # 卸载 mariadb rpm -qa | grep mariadb [root@localhost mysql57]# rpm -qa | grep mariadb mariadb-libs-5.5.68-1.el7.x86_64 # 卸载 rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 # 安装库 rpm -ivh --force --nodeps mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm # 安装客户端 rpm -ivh --force --nodeps mysql-community-client-5.7.18-1.el7.x86_64.rpm # 安装net-tools yum install net-tools -y # 安装server rpm -ivh --force --nodeps mysql-community-server-5.7.18-1.el7.x86_64.rpm # 检查安装情况 mysql -uroot -p # 查看mysql 安装目录 which mysql /usr/bin/mysql
3.配置mysql
vim /etc/my.cnf #在 [mysqld]下面 添加 跳过登录校验 # 跳过登录校验 skip-grant-tables # 修改mysql服务端口 也可以不换 port=23306 # 启动mysql systemctl start mysqld.service # 进入mysql mysql # 设置登录密码 update mysql.user set authentication_string=password('admin123') where user='root'; # 刷新 flush privileges; # 推出 exit; # 重启 systemctl restart mysqld.service # 停止 systemctl stop mysqld.service # 注释掉登录校验 vim /etc/my.cnf #在 [mysqld]下面 添加 跳过登录校验 # 跳过登录校验 # skip-grant-tables # 启动 systemctl start mysqld.service # 登录 mysql -h 127.0.0.1 -P 3306 -u root -padmin123 mysql -uroot -padmin123 # 设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW set global validate_password_policy=LOW; //设置最小长度 set global validate_password_length=4; set password=password('admin123'); #在 mysql 数据库的 user 表中查看当前 root 用户的相关信息 select host, user, authentication_string, plugin from user; #授权 root 用户的所有权限并设置远程访问 #刷新权限列表 flush privileges; # 增加新用户 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码" # 如,增加一个用户rent密码为admin123,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。 grant select,insert,update,delete on *.* to rent@localhost Identified by "admin123" with grant option; grant all privileges on *.* to 'root'@'%' Identified by "admin123" with grant option; flush privileges; exit; # 打开mysql 防火墙 33306 /没修改端口则是3306 firewall-cmd --zone=public --add-port=3306/tcp --permanent # 重新载入 firewall-cmd --reload #opyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # The MySQL Server configuration file. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /app/mysql57/mysql #log-error = /var/log/mysql/error.log # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 event_scheduler=ON max_connections = 2000 max_user_connections = 1900 max_connect_errors = 100000 max_allowed_packet = 50M lower_case_table_names=1 character_set_server=utf8 collation-server=utf8_general_ci log_timestamps=SYSTEM default-time-zone = '+8:00' [mysqld] skip-name-resolve sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION wait_timeout=315360 interactive_timeout=31536000 #开启慢日志 slow_query_log = ON slow_query_log_file=/var/log/mysql/error.log long_query_time=4
4.数据库备份
4.1备份的种类
备份方式的二分类维度:状态、格式内容 备份方式并没有绝对的好坏,只有不同的用途 1.备份时数据库的状态 2.备份文件的格式 3.备份的内容
4.2备份时数据库的状态
Hot Backup (热备):正常运行中直接备份 Cold BackUp (冷备):完全停止后备份 Warm BackUp (冷备):数据库只读
4.3备份文件的格式
1.逻辑备份:输出文件或SQL语句 2.物理备份(裸文件):备份数据库底层文件
4.4备份内容
1.完全备份: 备份完整数据 2.增量备份:备份上次备份的数据差异 3.日志备份:备份Binlog
4.5备份工具
mysqldump:逻辑、热、全量备份 xtrabackup: 物理、热、全量+增量备份
4.6OUTFILE命令
1.Mysql原生的SQL指令 2.最原始的逻辑备份方式 3.备份的功能和效果取决于如何写SQL语句 4.在innoDB事务下。可以做到一致性试图 5.修改分隔符:fileds terminated by 6.修改换行符: lines terminated by 缺点: 1.输出的文本比较简略 2.很难进行还原,现在往往用来简单的导出
4.6.1查出Mysql的导出路劲
# mysql 可以操作的文件夹 show variables like '%secure%'; +--------------------------+-----------------------+ | Variable_name | Value | +--------------------------+-----------------------+ | require_secure_transport | OFF | | secure_auth | ON | | secure_file_priv | /var/lib/mysql-files/ | +--------------------------+-----------------------+ # 使用into outfile 指令将查询结果到处至文件 select * into outfile '/var/lib/mysql-files/out_file_test' from Z; # 查询数据库 show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ # 切换库 use sys; # 查询表 show tables; +-----------------------------------------------+ | Tables_in_sys | +-----------------------------------------------+ | host_summary | | host_summary_by_file_io | | host_summary_by_file_io_type | # 查询语句 select * from host_summary; +-------------+------------+-------------------+-----------------------+-------------+----------+-----------------+---------------------+-------------------+--------------+----------------+------------------------+ | host | statements | statement_latency | statement_avg_latency | table_scans | file_ios | file_io_latency | current_connections | total_connections | unique_users | current_memory | total_memory_allocated | +-------------+------------+-------------------+-----------------------+-------------+----------+-----------------+---------------------+-------------------+--------------+----------------+------------------------+ | 192.168.1.8 | 50 | 11.16 ms | 223.24 us | 24 | 0 | 0 ps | 1 | 7 | 2 | 0 bytes | 0 bytes | | localhost | 175 | 36.15 ms | 206.55 us | 9 | 174 | 13.49 ms | 1 | 2 | 1 | 0 bytes | 0 bytes | +-------------+------------+-------------------+-----------------------+-------------+----------+-----------------+---------------------+-------------------+--------------+----------------+------------------------+ # 将查询的结果放到文件里面 select * into outfile '/var/lib/mysql-files/host_summary' from host_summary; Query OK, 2 rows affected (0.01 sec) # 推出到系统中查看 [root@localhost mysql]# tail -f /var/lib/mysql-files/host_summary 192.168.1.8 50 11.16 ms 223.24 us 24 0 0 ps 1 7 2 0 bytes 0 bytes localhost 256 55.90 ms 218.36 us 10 176 13.62 ms 1 2 1 0 bytes 0 bytes # 备份一致性表的内容 开启事务再导入 fields terminated by ',' 添加分隔符 begin; select * into outfile '/var/lib/mysql-files/host_summary3' fields terminated by ',' from host_summary; [root@localhost mysql]# tail -f /var/lib/mysql-files/host_summary3 192.168.1.8,50,11.16 ms,223.24 us,24,0,0 ps,1,7,2,0 bytes,0 bytes localhost,526,85.30 ms,162.16 us,14,213,14.04 ms,1,3,1,0 bytes,0 bytes
4.7使用mysqldump进行备份
1.自动发select语句。不需要手动 2.自动开启事务 3.输出 inster语句,可以直接用来还原 4.非常常用的mysql逻辑备份工具 5.Mysql server自带 6.输出的而备份内容为SQL语句,平衡了阅读和还原 7.SQL语句占空间较小 8.mysqldump可以使用以下语句对数据进行备份 SQL_NO_CACHE 查询出的数据不会进入SQL的缓存 select SQL_NO_CACHE FROM t; 9.mysqldump使用以下语句对数据进行备份 mysqldump -uroot -padmin123 --databases d1 --single-transaction > test.sql; 10.直接执行导出的sql文件即可进行还原 source test.sql;
4.7.1测试
# 新建数据库 my_db_1 /新建表/添加数据 mysql> use my_db_1; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-------------------+ | Tables_in_my_db_1 | +-------------------+ | gen_table | | gen_table_column | | sys_config | | sys_dept | | sys_dict_data | | sys_dict_type | | sys_job | | sys_job_log | | sys_logininfor | | sys_menu | | sys_notice | | sys_oper_log | | sys_post | | sys_role | | sys_role_dept | | sys_role_menu | | sys_user | | sys_user_post | | sys_user_role | +-------------------+ 19 rows in set (0.00 sec) # 推出客户端 备份my_db_1数据库 exit; mysqldump -uroot -padmin123 --databases my_db_1 --single-transaction > test.sql; # 直接输入mysqldump命令 [root@localhost mysql]# mysqldump Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS] For more options, use mysqldump --help mysqldump --defaults-file="/etc/my.cnf" -hlocalhost -uroot -padmin123 --databases my_db_1 --single-transaction > my_db_1.sql [root@localhost back]# mysqldump --defaults-file="/etc/my.cnf" -hlocalhost -uroot -padmin123 --databases my_db_1 --single-transaction > my_db_1.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@localhost back]# ls my_db_1.sql # 里面有建表语句和insert into 语句 锁表语句 cat my_db_1.sql
4.7.2注意事项
1.--single-transaction: 在RR级别下进行 2.--lock-all-tables: 使用FTWRL锁所有表(MyISAM) 3.--lock-tables:使用READ LOCAL 锁当前库的表(MySAM) 4.--all-database:备份所有库
4.7.3优缺点
1.mysqldump使用简单、可以热备 2.sql文件可以直接执行、占空间小、可以阅读 3.备份还原性能不如物理备份
4.8mysqldump+binlog增量备份
1.binlig中记录了Mysql数据的变化 2.mysqllddump全量备份之后,可以用binlog作为增量 3.mysqllddump全量备份时,切换新的binlog文件 4.从零还原时,采用全量还原+binlog还原 # mysql数据路径 cd /var/lib/mysql
4.8.1备份步骤全量备份
1.mysqldump使用以下语句对数据进行全量备份 2.--flush-logs备份之后切换binlog文件 3.-master-data=2 记录切换后的binlog文件名 4. vim /etc/my.cnf 在[mysqld]标签下添加: 重启mysql log-bin=mysql-bin server-id=1 # 重启 systemctl restart mysqld.service # 执行备份 mysqldump --defaults-file="/etc/my.cnf" -hlocalhost -uroot -padmin123 --databases my_db_1 --single-transaction --flush-logs --master-data=2 > my_db_1_back2.sql
4.8.2备份步骤增量备份
1.需要增量备份时,切换binlog文件,会生成一个新的binlog文件 mysqladmin -hlocalhost -uroot -padmin123 flush-logs 2. 1.mysqldump使用以下语句对数据进行全量备份 mysqldump --defaults-file="/etc/my.cnf" -hlocalhost -uroot -padmin123 --databases my_db_1 --single-transaction --flush-logs --master-data=2 > my_db_1_back2.sql
4.8.3恢复
source test.sql; # 然后将binlog增量还原至数据库 mysqlbinlog mysql-bin.000006 | mysql -uroot -padmin123
4.8.4总结
1.mysqldump+binlog可以有效对数据进行全量+增量备份 2.两个组件各司其职,是工程时间中的静待你作法 3.理论上来说,可以将数据库恢复至binlog的任意时刻 4.缺点操作起来较为复杂 5.需要执行sql,解析数据,影响数据库性能
4.8.5测试
1.先全量备份 mysqldump --defaults-file="/etc/my.cnf" -hlocalhost -uroot -padmin123 --databases my_db_1 --single-transaction --flush-logs --master-data=2 > my_db_1_back2.sql 2.刷新binlog mysqladmin -hlocalhost -uroot -padmin123 flush-logs 3.修改数据刷新binlog mysqladmin -hlocalhost -uroot -padmin123 flush-logs 4.修改数据刷新binlog mysqladmin -hlocalhost -uroot -padmin123 flush-logs 5.删库 DROP DATABASE IF EXISTS my_db_1; show databases; 6.恢复全量数据 source /var/lib/mysql/my_db_1_back.sql; 7.恢复binlog数据 exit; mysqlbinlog mysql-bin.000010 | mysql -uroot -padmin123
5.物理备份工具XtraBackUp
1.直接备份InnoDB底层数据文件 2.导出不需要转换,速度快 3.工作时对数据库的压力较小 4.更容易实现增量备份 5.物理备份是一种高效的备份方式 6.XtraBackup采用了备份ibd——备份期间redo log方式 7.XtraBackUp是最常用的Mysql物理备份工具8 8.缺是不能直接阅读备份的文件
5.1实现物理+热备份+全量 备份思路
1.启动redo log 监听线程,开始手收集redo log 2.拷贝ibd数据文件 3.停止收集redo log 4.加FTWRL锁拷贝元数据Frm
5.2实现物理+热备份+增量 备份思路
1.思路:与全量级别相同 2.如何确定增量:根据每个页的LSN号,确定变化的页
5.3如何实现物理还原
1.思路:mysqld crash崩溃恢复流程相似 2.还原ibd文件,重放redo log
5.4ibbackup工具
1.命名MySQL Enterprise Backup InnoDB官方出品 商业版收费 2.实现了上述的功能,性能优秀
5.5XtraBackup工具
1.Percona公司开发的开源版本,实现ibbackup所有功能 2.XtraBackup 8.0->8.0 3.XtraBackUp 2.4 -> MySql 5.1,5.2,5.5,5.6,5.7
6.XtraBackup安装方法
1.官网下载 https://www.percona.com/ 2.下载页 https://www.percona.com/downloads/ 3.2.4下载版本选择页 https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/ 4.下载链接 wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm # 百度网盘 链接: https://pan.baidu.com/s/1nVORg8ox5rgTFsVztCAjHg?pwd=j3kb 提取码: j3kb 5.安装 rpm -ivh --force --nodeps percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm 6.备份 innobackupex --user=root --password=admin123 /app/mysql57/back / 7.数据还原 停掉mysqld systemctl stop mysqld.service 8.关闭数据库 sudo systemctl stop mysqld 9.清空现有数据目录 sudo rm -r /var/lib/mysql/* ls -lh /var/lib/mysql/ 10.注意:如果不清空数据目录,会报如下错误,并终止恢复: Original data directory /var/lib/mysql is not empty! 11. 执行恢复数据库命令 /app/mysql57/back/2022-04-10_00-30-18 备份的位置 innobackupex --defaults-file=/etc/my.cnf --copy-back /app/mysql57/back/2022-04-10_00-30-18 12. 修改数据库文件的所有者用户 sudo chown -R mysql.mysql /var/lib/mysql/* 13.启动 systemctl start mysqld.service 查看恢复情况 14.增量备份方法 innobackupex --user=root --password=admin123 输出目录/ --incremental-basedir'/bakdir/XXXX-XX-XX' 15.增量备份合并至全量备份 innobackupex --apply-log bakdir/XXXX-XX-XX/ -incremental-dir=backdir/YYYY-YY-YY/
7.mylvmbackup备份工具
1.mylvmbackup 备份磁盘 2.物理问呗 3.利用LVM(Logical Volume Manager) 逻辑卷管理器 4.直接备份磁盘数据
8.mydumper
1.跟mysqldump类似的工具 2.实现了多线程并发的备份还原 3.速度更快 4.对于数据库性能影响更大,不过影响时间更短
9.Zmanda Recovery Manager
1.功能强大的备份恢复管理工具 2.集成了多种备份工具 3.继承binlog分析功能
10.数据库权限、审计、伪删表、完备流程
1.给业务应用分配的账号只给DML权限 2.开发同学使用只读账号 3.DBA平时使用时使用只读账号,特殊操作时切换账号 4.DBA在开发环境审计即将上线的SQL语句 5.开发同学修改在线数据,提交给DBA执行 6.inception自动审核工具 7.删表之前将表改名,观察业务是否受影响 8.不直接删表,给表明加特殊后缀,用脚本删除 9.上线之前备份数据 10.准备生产环境事故预案
以上就是《CentOS7.x 安装mysql5.7 XtraBackUp备份工具使用命令详解》的详细内容,更多关于mysql的资料请关注golang学习网公众号!
声明:本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
-
342 收藏
-
270 收藏
-
485 收藏
-
252 收藏
-
152 收藏
最新阅读
更多>
-
209 收藏
-
497 收藏
-
335 收藏
-
467 收藏
-
303 收藏
-
176 收藏
课程推荐
更多>
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
评论列表
-
- 自觉的大神
- 这篇博文太及时了,太细致了,感谢大佬分享,收藏了,关注老哥了!希望老哥能多写数据库相关的文章。
- 2023-03-17 04:48:32
-
- 体贴的绿茶
- 赞 👍👍,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢老哥分享博文!
- 2023-02-28 23:55:29
-
- 曾经的滑板
- 受益颇多,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢老哥分享技术贴!
- 2023-01-25 13:51:03
-
- 轻松的羊
- 写的不错,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢作者分享文章内容!
- 2023-01-16 09:08:39
-
- 壮观的芒果
- 这篇博文太及时了,太全面了,很有用,码起来,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-01-14 16:14:13
-
- 英俊的小笼包
- 好细啊,码起来,感谢作者的这篇技术文章,我会继续支持!
- 2023-01-12 23:09:40
-
- 香蕉红酒
- 这篇技术文章太及时了,楼主加油!
- 2023-01-12 08:06:52
-
- 甜美的红牛
- 这篇博文出现的刚刚好,很详细,受益颇多,码起来,关注楼主了!希望楼主能多写数据库相关的文章。
- 2023-01-02 19:12:48
-
- 超级的热狗
- 这篇技术贴真及时,太全面了,很棒,已加入收藏夹了,关注楼主了!希望楼主能多写数据库相关的文章。
- 2023-01-01 22:28:27