mysql-备份与恢复-03「建议收藏」

mysql-备份与恢复-03「建议收藏」1.mysql二进制包安装 二进制包下载 https://downloads.mysql.com/archives/community/ [root@vm1 src]# ll total 62870…

	mysql-备份与恢复-03[数据库教程]

目录
  • 1.mysql二进制包安装
    • 1.1 安装
      • 创建mysql用户
      • 解压安装包
      • 添加环境变量
      • 建立数据存放目录
      • 初始化数据库
      • 生成配置文件
      • 添加到service服务
      • 启动mysql服务
      • 登陆mysql并修改root密码
  • 2.数据备份与恢复
    • 2.1 备份方案
    • 2.2 备分工具mysqldump
    • 2.3 备份与恢复
    • 2.4 差异备份

1.mysql二进制包安装

  • 二进制包下载
https://downloads.mysql.com/archives/community/
[root@vm1 src]# ll
total 628704
drwxr-xr-x. 2 root root         6 May 11  2019 debug
drwxr-xr-x. 2 root root         6 May 11  2019 kernels
-rw-------. 1 root root 643790848 Oct 25 14:56 mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

1.1 安装

创建mysql用户

[root@vm1 src]# groupadd -r mysql
[root@vm1 src]# useradd -M -s /sbin/nologin -g mysql mysql
[root@vm1 src]# id mysql
uid=1000(mysql) gid=992(mysql) groups=992(mysql)

解压安装包

  • 解压到安装目录
[root@vm1 src]# tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
  • 添加软连接
[root@vm1 src]# cd /usr/local/
[root@vm1 local]# ln -sv mysql-5.7.22-linux-glibc2.12-x86_64/ mysql
‘mysql‘ -> ‘mysql-5.7.22-linux-glibc2.12-x86_64/‘
[root@vm1 local]# ll
total 0
..................................
lrwxrwxrwx. 1 root root  36 Oct 25 15:23 mysql -> mysql-5.7.22-linux-glibc2.12-x86_64/
drwxr-xr-x. 9 root root 129 Oct 25 15:21 mysql-5.7.22-linux-glibc2.12-x86_64
..................................
  • 修改目录属性
[root@vm1 local]# chown -R mysql.mysql /usr/local/mysql*
[root@vm1 local]# ll mysql* -d
lrwxrwxrwx. 1 mysql mysql  36 Oct 25 15:23 mysql -> mysql-5.7.22-linux-glibc2.12-x86_64/
drwxr-xr-x. 9 mysql mysql 129 Oct 25 15:21 mysql-5.7.22-linux-glibc2.12-x86_64
[root@vm1 local]# 

添加环境变量

[root@vm1 local]# echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
[root@vm1 local]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@vm1 local]# source /etc/profile.d/mysql.sh 
[root@vm1 local]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@vm1 local]# 

建立数据存放目录

[root@vm1 local]# mkdir /opt/mysql_data
[root@vm1 local]# chown -R mysql.mysql /opt/mysql_data/
[root@vm1 local]# ll /opt/mysql_data/ -d
drwxr-xr-x. 2 mysql mysql 6 Oct 25 15:37 /opt/mysql_data/

初始化数据库

[root@vm1 local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/mysql_data/
2020-10-25T07:42:17.677524Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-10-25T07:42:18.017186Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-10-25T07:42:18.095020Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-10-25T07:42:18.110566Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 9b9506e2-1695-11eb-8a78-000c29d6e1c9.
2020-10-25T07:42:18.112445Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed‘ cannot be opened.
2020-10-25T07:42:18.114197Z 1 [Note] A temporary password is generated for root@localhost: 2CJJ,NgX6Dg5
##临时密码2CJJ,NgX6Dg5,密码随机

生成配置文件

[root@vm1 local]# vi /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/mysql_data
socket = /opt/mysql.sock
port = 3306
pid-file = /opt/mysql_data/mysql.pid
user = mysql
skip-name-resolve

添加到service服务

[root@vm1 support-files]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@vm1 support-files]# sed -ri ‘s#^(basedir=).*#1/usr/local/mysql#g‘ /etc/init.d/mysqld
[root@vm1 support-files]# sed -ri ‘s#^(datadir=).*#1/opt/mysql_data#g‘ /etc/init.d/mysqld

启动mysql服务

[root@vm1 init.d]# service mysqld start
Starting MySQL.Logging to ‘/opt/mysql_data/vm1.localdomain.err‘.
.. ERROR! The server quit without updating PID file (/opt/mysql_data/vm1.localdomain.pid).

##启动失败,重新初始化
[root@vm1 mysql_data]# /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/opt/mysql_data/ 
2020-10-26 00:38:57 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2020-10-26 00:39:00 [WARNING] The bootstrap log isn‘t empty:
2020-10-26 00:39:00 [WARNING] 2020-10-25T16:38:57.381349Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead

##删除/opt/mysql_data/*,使用mysqld --initialize重新初始化
[root@vm1 mysql_data]# rm -rf *
[root@vm1 mysql_data]# 
[root@vm1 mysql_data]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/opt/mysql_data/ 
2020-10-25T16:40:43.194427Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-10-25T16:40:43.554603Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-10-25T16:40:43.637823Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-10-25T16:40:43.653065Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: d32f9d09-16e0-11eb-ab7d-000c29d6e1c9.
2020-10-25T16:40:43.655116Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed‘ cannot be opened.
2020-10-25T16:40:43.656976Z 1 [Note] A temporary password is generated for root@localhost: 48q(pej35,Bp
[root@vm1 mysql_data]# ls
auto.cnf  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  sys
[root@vm1 mysql_data]# service mysqld start
Starting MySQL.Logging to ‘/opt/mysql_data/vm1.localdomain.err‘.
 SUCCESS! 
[root@vm1 tmp]# ss -antl
State           Recv-Q          Send-Q                     Local Address:Port                     Peer Address:Port          
LISTEN          0               128                              0.0.0.0:22                            0.0.0.0:*             
LISTEN          0               80                                     *:3306                                *:*             
LISTEN          0               128                                 [::]:22                               [::]:*             
[root@vm1 tmp]# ps -ef|grep mysqld
root        1710       1  0 00:41 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/opt/mysql_data --pid-file=/opt/mysql_data/vm1.localdomain.pid
mysql       1805    1710  0 00:41 pts/0    00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/opt/mysql_data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=vm1.localdomain.err --pid-file=/opt/mysql_data/vm1.localdomain.pid
root        1850    1199  0 00:49 pts/0    00:00:00 grep --color=auto mysqld
[root@vm1 tmp]# 

登陆mysql并修改root密码

[root@vm1 ~]# mysql -uroot -p
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
[root@vm1 ~]# yum install libncurses* -y 
......................................
Installed:
  ncurses-c++-libs-6.1-7.20180224.el8.x86_64   ncurses-compat-libs-6.1-7.20180224.el8.x86_64  

Complete!
[root@vm1 mysql_data]# mysql -uroot -p
Enter password:                          ##初始化生成的临时密码
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)

##创建软连接
[root@vm1 tmp]# ln -s /opt/mysql_data/mysql.sock /tmp/mysql.sock
[root@vm1 tmp]# ll
total 4
-rwx------. 1 root root 1379 Oct 22 10:19 ks-script-7li_m2mk
lrwxrwxrwx. 1 root root   26 Oct 26 01:07 mysql.sock -> /opt/mysql_data/mysql.sock

##初密码登陆后修改密码
[root@vm1 tmp]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.7.22

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘h‘ for help. Type ‘c‘ to clear the current input statement.

mysql> ^C
mysql> set password=password(‘123456‘);
Query OK, 0 rows affected, 1 warning (0.01 sec)

2.数据备份与恢复

2.1 备份方案

备份方案 特点
全量备份 全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。
数据恢复快。
备份时间长
增量备份 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份
与前一次相比增加和者被修改的文件
没有重复的备份数据
备份时间短
恢复数据时必须按一定的顺序进行
差异备份 备份上一次的完全备份后发生变化的所有文件。
差异备份是指在一次全备份后到进行差异备份的这段时间内
对那些增加或者修改文件的备份。在进行恢复时
我们只需对第一次全量备份和最后一次差异备份进行恢复。

2.2 备分工具mysqldump

//语法:
    mysqldump [OPTIONS] database [tables ...]
    mysqldump [OPTIONS] --all-databases [OPTIONS]
    mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
    
//常用的OPTIONS:
    -uUSERNAME      //指定数据库用户名
    -hHOST          //指定服务器主机,请使用ip地址
    -pPASSWORD      //指定数据库用户的密码
    -P#             //指定数据库监听的端口,这里的#需用实际的端口号代替,如-P3307

2.3 备份与恢复

  • 查看当前数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wisan_db           |
+--------------------+
mysql> show tables;
+--------------------+
| Tables_in_wisan_db |
+--------------------+
| student_info       |
| student_score      |
+--------------------+
2 rows in set (0.00 sec)
mysql> select * from student_info;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | xiang |   18 |
|  2 | peng  |   19 |
|  3 | fan   |   17 |
|  4 | yi    |   20 |
|  5 | jing  | NULL |
|  6 | wisan |   19 |
|  7 | flora |   18 |
|  8 | wang  | NULL |
mysql> select * from student_score;
+----+-----------+-------+-------+
| id | name      | score | grade |
+----+-----------+-------+-------+
|  2 | peng      |    88 | A     |
|  3 | fan       |    90 | A     |
|  5 | jing      |   100 | A     |
|  6 | wisan     |  NULL | C     |
|  7 | flora     |    85 | B     |
|  8 | wang      |  NULL | C     |
| 10 | lisi      |    60 | B     |
| 11 | biyue     |    85 | B     |
| 13 | zhangshan |    70 | B     |
| 15 | qiuwu     |    70 | B     |
+----+-----------+-------+-------+
##全量备份
[root@vm1 ~]# mysqldump -uroot -p  --all-databases > all-vm1.sql
Enter password: 
[root@vm1 ~]# ls
all-vm1.sql  anaconda-ks.cfg

##备份数据库的部分表
[root@vm1 ~]# mysqldump -uroot -p wisan_db student_info student_score > tb_student.sql
Enter password: 
[root@vm1 ~]# ls
all-vm1.sql  anaconda-ks.cfg  tb_student.sql

##备份数据库
[root@vm1 ~]# mysqldump -uroot -p  --databases wisan_db  > wisan_db.sql
Enter password: 
[root@vm1 ~]# ll
total 496
-rw-r--r--. 1 root root 491025 Oct 26 01:40 all-vm1.sql
-rw-------. 1 root root   1097 Oct 22 10:19 anaconda-ks.cfg
-rw-r--r--. 1 root root    788 Oct 26 01:46 tb_student.sql
-rw-r--r--. 1 root root   3137 Oct 26 01:49 wisan_db.sql

  • 误删数据
mysql> drop database wisan_db;
Query OK, 2 rows affected, 2 warnings (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

  • 恢复数据
[root@vm1 ~]# mysql -uroot -p < all-vm1.sql 
Enter password: 
[root@vm1 ~]# mysql -uroot -p -e ‘show databases;‘
Enter password: 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wisan_db           |
+--------------------+

2.4 差异备份

  • 开启mysql二进制日志功能
[root@vm1 ~]# vi /etc/my.cnf 
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/mysql_data
socket = /opt/mysql_data/mysql.sock
port=3306
pid-file = /opt/mysql_data/mysql.pid
user = mysql
skip-name-resolve

server-id=1
log-bin=mysql_bin       ##开启二进制功能
 
  • 首次完全备份
##数据同上
[root@vm1 ~]# mysqldump -uroot -p970801 --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs > all-20201026.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@vm1 ~]# ll
total 496
-rw-r--r--. 1 root root   1251 Oct 26 01:57 all-20201026.sql
-rw-r--r--. 1 root root 491025 Oct 26 01:40 all-vm1.sql
-rw-------. 1 root root   1097 Oct 22 10:19 anaconda-ks.cfg
-rw-r--r--. 1 root root    788 Oct 26 01:46 tb_student.sql
-rw-r--r--. 1 root root   3137 Oct 26 01:49 wisan_db.sql

  • 增加新内容
[root@vm1 opt]# mysql -uroot -p
Enter password: 
ERROR 1524 (HY000): Plugin ‘0‘ is not loaded

mysql-备份与恢复-03

原文地址:https://www.cnblogs.com/fyjpeng/p/13876726.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6659.html

(0)
上一篇 2023-04-05
下一篇 2023-04-05

相关推荐

  • 第05问:MySQL 在处理临时结果集时,内部临时表会使用多少内存?「建议收藏」

    第05问:MySQL 在处理临时结果集时,内部临时表会使用多少内存?「建议收藏」问题: MySQL 在处理临时结果集(UNION 运算 / 聚合运算等)时,会用到内部临时表(internal temporary table)。 那么内部临时表会使用多少内存呢? 实验: 我们先创…

    2023-02-10
    156
  • 如何应对PS容差问题

    如何应对PS容差问题Photoshop是一个强大的图像编辑软件,用于进行各种图像处理和设计任务。在处理图像时,容差问题是一个常见的问题。如果您不知道如何处理容差问题,可能会导致图像质量下降,可能会对您的设计和制作工作产生不利影响。

    2024-06-13
    47
  • 数据库刷新语句_更新查询的sql语句

    数据库刷新语句_更新查询的sql语句学习重点 使用 UPDATE 语句可以更改(更新)表中的数据。 更新部分数据行时可以使用 WHERE 来指定更新对象的条件。通过 WHERE 子句指定更新对象的 UPDATE 语句称为搜索型 UPDA

    2023-04-28
    177
  • 使用Python创建多层文件夹的方法

    使用Python创建多层文件夹的方法对于科学家、程序员和数据分析师来说,文件处理是日常工作中不可避免的一部分。在这个过程中,有时候需要创建多层嵌套的目录,这就需要用到 python 创建多级目录的方法。在本文中,我们将为大家介绍如何使用 Python 创建多层文件夹的方法。

    2024-02-19
    89
  • can’t create table errno:150_MySQL server has gone away

    can’t create table errno:150_MySQL server has gone away一、基础信息 1. Centos7.4 2.MySQL 5.7.21 3.基于gtid的复制 二、异常描述 误把从节点当成主节点插入一条数据,同一条数据在主、从节点插入都进行了一次插入操作,导致主键冲

    2022-12-25
    130
  • Python如何停止线程

    Python如何停止线程在Python中,线程是一种非常常见且强大的工具。线程可以在同一进程中并行执行多个任务,以提高程序的性能和响应速度。但是,在某些情况下,我们需要停止线程。在这篇文章中,我们将学习如何在Python中停止线程。

    2024-06-25
    49
  • [20191206]隐含参数_db_always_check_system_ts.txt「建议收藏」

    [20191206]隐含参数_db_always_check_system_ts.txt「建议收藏」[20191206]隐含参数_db_always_check_system_ts.txt–//今年年头我做tab$删除恢复时,遇到的问题,就是遇到延迟块清除的问题.参考链接:http://blog.

    2022-12-25
    133
  • DataHub——实时数据治理平台

    DataHub——实时数据治理平台DataHub 首先,阿里云也有一款名为DataHub的产品,是一个流式处理平台,本文所述DataHub与其无关。 数据治理是大佬们最近谈的一个火热的话题。不管国家层面,还是企业层面现在对这个问题是越

    2023-02-25
    145

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注