登录数据库 时,可能会出现如图错误
1.确认是否部署MySQL服务
2.过滤MySQL端口号,查看服务是否开启(如图上半部分,则是服务未开启)
3.如图部分,则是密码错误
4.如果忘记了 mysql 的密码,或者登陆提示报错,然后密码不对的解决办法
1)修改 MySQL 的登录设置: # vi /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出 vi。
2)重新启动 mysql
3)登录修改MySQL密码
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
flush privileges;
4)将 MySQL 的登录设置修改回来 # vi /etc/my.cnf 将刚才在[mysqld]的段中加上的 skip-grant-tables 删除 保存并且退出 vi。 5)重新启动 mysql
远程连接数据库很慢,响应很久,可以在/etv/my.cnf中添加配置(即跳过名称解析)
使用Xtrabackup工具备份与恢复
Xtrabackup是由Percona团队开发的用于MySQL数据库的物理热备份工具。它支持InnoDB和XtraDB存储引擎,具备备份速度快、不影响业务运行、支持压缩和自动校验等特点。Xtrabackup目前被各大云厂商广泛采用,是MySQL备份的首选方案之一。
1.安装Xtrabackup(上传软件包percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17.tar.gz与qpress-11-linux-x64.tar)
tar zxf percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17.tar.gz
mv percona-xtrabackup-2.4.29-Linux-x86_64.glibc2.17 /usr/local/xtrabackup
echo 'export PATH=$PATH:/usr/local/xtrabackup/bin' >> /etc/profile
source /etc/profile
tar -xf qpress-11-linux-x64.tar -C /usr/local/bin
source /etc/profile
登录MySQL服务,创建用户管理备份恢复
CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO
'bkpuser'@'localhost';
#刷新配置
FLUSH PRIVILEGES;
开始备份
bakdir="/backup/fullbackups/$(date '+%F')"
mkdir -p $bakdir
# --backup 备份
# --compress 压缩
xtrabackup --defaults-file=/etc/my.cnf --user=bkpuser --password=s3cret --backup --compress --target-dir=$bakdir
成功备份则会回显信息 备份到的位置 /backup/fullbackups/下的文件里
恢复
#关闭数据库
systemctl stop mysqld
# 解压备份数据
xtrabackup --defaults-file=/etc/my.cnf --user=bkpuser --password=s3cret --decompress --target-dir=$bakdir
# 准备备份文件以供恢复
xtrabackup --prepare --target-dir=$bakdir
# 恢复数据
xtrabackup --defaults-file=/etc/my.cnf --user=bkpuser --password=s3cret --copy-back --target-dir=$bakdir
# 修改权限,替换成自己的数据存储目录
chown -R mysql:mysql /usr/local/mysql/data/
# 然后启动MySQL即可
systemctl start mysqld
增量备份
基于完全备份的基础上
由于上述操作中创建了一个文件,会引起冲突,所以增量前,删除文件
rm -rf /backup/fullbackups/2024-08-04/
#开始备份
fulldir="/backup/fullbackups/$(date '+%F')"
incdir="/backup/incrementalbackups/$(date '+%F')"
mkdir -p $fulldir
mkdir -p $incdir
xtrabackup --defaults-file=/etc/my.cnf --user=bkpuser --password=s3cret --backup --compress --target-dir=$fulldir
#在数据库创建差异数据,用来对照实验
#开始增量备份
xtrabackup --defaults-file=/etc/my.cnf --user=bkpuser --password=s3cret --backup --compress --target-dir=$incdir --incremental-basedir=$fulldir
如图代表增量备份完成,上面是完全备份存放的数据,下面是增量备份存放的数据
增量恢复
#关闭服务
systemctl stop mysqld
# 解压备份数据
xtrabackup --defaults-file=/etc/my.cnf --user=bkpuser --password=s3cret --decompress --target-dir=$fulldir
xtrabackup --defaults-file=/etc/my.cnf --user=bkpuser --password=s3cret --decompress --target-dir=$incdir
# 准备数据
xtrabackup --prepare --apply-log-only --target-dir=$fulldir
# 把增量备份的数据合并到完整备份里面
xtrabackup --prepare --apply-log-only --target-dir=$fulldir --incremental-dir=$incdir
# 恢复数据
xtrabackup --defaults-file=/etc/my.cnf --user=bkpuser --password=s3cret --copy-back --target-dir=$fulldir
# 修改权限,替换成自己的数据存储目录
chown -R mysql:mysql /usr/local/mysql/data/
# 然后启动MySQL即可
systemctl start mysqld