MySQL 5.7 对比8.0

1、备份:

Mysql8.0备份在用percona-xtrabackup备份时较Mysql5.7有了显著改变,首先在版本上Mysql5.7 一直使用的是Percona XtraBackup 2.4版本,而Mysql8.0不支持Percona XtraBackup2.4 ,Percona XtraBackup 8.0 是Percona XtraBackup新推出了一个针对MySQL8.0的版本,同时mysql 8.0.20以上只能用 Percona XtraBackup 8.0.12以上版本,否则报错。此外,Mysql8.0在使用percona-xtrabackup备份时命令也有了一些改变。

实例:

percona-xtrabackup备份

1、Mysql 5.7

1、完全备份:

备份:

innobackupex --user=root --password=‘Qf123.com' /xtrabackup/full ####备份命令

备份完成后查看 : ls /xtrabackup/full/

2017-08-01_00-00-02/

恢复:

systemctl stop mysqld

模拟数据丢失

rm -rf /var/lib/mysql/*

生成回滚日志

innobackupex --apply-log /xtrabackup/full/2017-08-01_00-00-18/

恢复文件

innobackupex --copy-back /xtrabackup/full/2017-08-01_00-00-18/

ls /var/lib/mysql

权限:注意不执行此步,数据库起不来

chown -R mysql.mysql /var/lib/mysql

systemctl start mysqld

mysql -uroot -p'Qf123.com'

2、增量备份

备份,需要在完全备份的基础上

innobackupex --user=root --password='Qf123.com' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2017-09-01_00-00-04

恢复

systemctl stop mysqld

模拟损坏

rm -rf /var/lib/mysql/*

生成回滚日志

innobackupex --apply-log --redo-only /xtrabackup/2017-09-01_00-00-04

innobackupex --apply-log --redo-only /xtrabackup/2017-09-01_00-00-04 --incremental-dir=/xtrabackup/2017-09-02_00-00-26

恢复

innobackupex --copy-back /xtrabackup/2017-09-01_00-00-06

chown -R mysql.mysql /var/lib/mysql

systemctl start mysqld

mysql -uroot -p'Qf123.com'

2、Mysql 8.0

mysql8.0不支持Percona XtraBackup2.4 ,Percona XtraBackup 8.0 是Percona XtraBackup新推出了一个针对MySQL8.0的版本,同时mysql 8.0.20以上只能用 Percona XtraBackup 8.0.12以上版本,否则报错

1、安装:

下载RPM包

安装

yum localinstall percona-xtrabackup-80-8.0.13-1.el7.x86_64.rpm

查询安装结果

rpm -ql percona-xtrabackup-80

查看版本

xtrabackup --version

2 、完全备份

命令和5.7 有不同

备份:

xtrabackup --defaults-file=/etc/my.cnf --host=localhost --user=root --password=http://Qf123.com --port=3306 --backup --target-dir=/data/backup/

或者使用参数--datadir替换掉参数--defaults-file.

xtrabackup --host=localhost --user=root --password=http://Qf123.com --port=3306 --datadir=/var/lib/mysql/ --backup --target-dir=/data/backup/

恢复

观看二进制日志位置

[root@test1 full]# cat xtrabackup_binlog_info

binlog.000002 156

停止数据库

systemctl stop mysqld

rm -rf /var/lib/mysql/*

rm -rf /var/log/mysqld.log

准备

xtrabackup --host=localhost --user=root --password=http://Qf123.com --port=3306 --prepare --target-dir=/data/backup/

拷回数据

xtrabackup --host=localhost --user=root --password=http://Qf123.com --port=3306 --datadir=/var/lib/mysql --copy-back --target-dir=/data/backup/

#########################################################

参数解释:

--datadir=name 数据恢复时候的数据目录.从my.cnf中读取,或者命令行指定

-u, --user=name 备份的用户名

-H, --host=name 备份的IP地址

-P, --port= 备份的端口

-p, --password[=name 数据库用户的密码

--copy-back 做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir

--target-dir 做数据恢复时从这个目录中获取数据恢复

--parallel=# 指定备份时拷贝多个数据文件并发的进程数,默认值为1。

########################################

chown -R mysql:mysql /var/lib/mysql

chmod -R 755 /var/lib/mysql

systemctl start mysqld

3、增量备份

xtrabackup --defaults-file=/etc/my.cnf --host=localhost --user=root --password=http://Qf123.com --port=3306 --backup --parallel=3 --target-dir=/data/int --incremental-basedir=/data/backup

##################

--incremental-basedir=name 和--backup一起使用,仅拷贝.ibd中新增的数据到指定路径,增量备份

--incremental-dir=name 和--prepare一起使用,将.delta文件和logfile保存在指定的路径.

###############

systemctl stop mysqld

准备全备份的日志:

xtrabackup --prepare --apply-log-only --target-dir=/data/backup

准备增量备份的日志:

xtrabackup --prepare --apply-log-only --target-dir=/data/backup --incremental-dir=/data/int

全备份准备:

xtrabackup --prepare --target-dir=/data/backup

拷回数据:

xtrabackup --host=localhost --user=root --password=Password --port=3306 --datadir=/var/lib/mysql --copy-back --target-dir=/data/backup/

2、授权

Mysql5.7 可以直接使用GRANT 创建用户同时授权,8.0必须先创建用户再授权,否则报错

Mysql5.7

grant replication slave, replication client on . to 'rep'@'10.18.41.%' identified by 'QianFeng@123';

Mysql8.0

和5.7不同的是,Mysql 8.0 必须先创建用户再授权

CREATE USER 'rep'@'192.168.107.%' IDENTIFIED by 'Qf123.com';

grant all on . to 'root'@'192.168.107.%' ;

3、设置持久化

MySQL 的设置可以在运行时通过 SET GLOBAL 命令来更改,但是这种更改在5.7中只会临时生效,到下次启动时数据库又会从配置文件中读取。MySQL 8.0 新增了 SET PERSIST 命令

例如:SET PERSIST max_connections = 500;MySQL 会将该命令的配置保存到数据目录下的 mysqld-auto.cnf 文件中,下次启动时会读取该文件,用其中的配置来覆盖缺省的配置文件。

4、编码

从 MySQL 8.0 开始,数据库的缺省编码将改为 utf8mb4