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