mysql 8.0

1. 下载mysql8.0

https://edelivery.oracle.com/osdc/faces/SoftwareDelivery

image.png

image.png

 

image.png

 

image.png

 

2. 准备环境

(1)卸载mariadb

rpm -qa|grep mariadb

rpm -qa|grep maria|awk '{print "rpm -e ",$1,"--nodeps"}'|sh

(2)创建用户和目录

mkdir /mysql

cd /mysql

mkdir bin_log

mkdir log

mkdir data

mkdir undo_tbls

mkdir relay_log

groupadd -g 512 mysql

useradd -u 512 -g 512  -d /mysql mysql

chown -R mysql.mysql /mysql

(3)配置文件

cat /etc/my.cnf

[client]

socket=/var/lib/mysql/mysql.sock

[mysqld]

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

server_id=1

gtid_mode=ON

enforce_gtid_consistency=ON

master_info_repository=TABLE

relay_log_info_repository=TABLE

binlog_checksum=NONE

log_slave_updates=ON

log_bin=binlog

binlog_format=ROW

auto_increment_increment=3

auto_increment_offset=1

port=3306

datadir=/mysql/data

socket=/var/lib/mysql/mysql.sock

log-error=/mysql/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

log-bin=/mysql/bin_log/mysql-binlog

slow_query_log_file=/mysql/log/slow.log

general_log_file=/mysql/log/general.log

log_timestamps=SYSTEM

relay_log=/mysql/relay_log/mysql-relaylog

transaction-isolation = READ-COMMITTED

character-set-server=utf8

collation-server=utf8_bin

lower_case_table_names

expire_logs_days=7

(4)创建pid和socket目录

cd /var/lib

mkdir mysql

chown -R mysql.mysql mysql/

cd /var/run

mkdir mysqld

chown -R mysql.mysql mysqld/

3. 安装

(1)解压下载的源码包

cd /usr/local

unzip /soft/V984933-01.zip

tar -xvf mysql-commercial-8.0.19-el7-x86_64.tar.gz

mv mysql-commercial-8.0.19-el7-x86_64 mysql

chown -R mysql.mysql mysql

(2)配置/etc/profile

export MYSQL=/usr/local/mysql

export PATH=$MYSQL/bin:$PATH

source /etc/profile

(3)mysql初始化

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/data

(4)启动mysql

mysqld_safe --user=mysql &

(5)修改root密码

使用/mysql/log/mysqld.log中的临时密码登录

mysql -uroot -p

alter user root@'localhost' identified by '123';

create user root@'%'  identified by '123';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION;

 

GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`%` WITH GRANT OPTION;

 

GRANT PROXY ON ''@'' TO 'root'@'%'  WITH GRANT OPTION;

mysql8默认的密码插件是caching_sha2_password,但是我们mysql5.7默认的是mysql_native_password,若使用5.7的客户端或者navicate连接mysql8会报错,需要将密码插件修改成mysql_native_password

 

alter user root@'%'  identified with mysql_native_password by '123';

 

mysql8自带的mysqlbackup默认的插件是caching_sha2_password,而组复制默认的插件是mysql_native_password,这感觉是mysql8的不足之处

(6)设置开机自启

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

vi  /etc/init.d/mysqld

basedir=/usr/local/mysql

datadir=/mysql/data

image.png

service mysqld status

image.png

chkconfig --add mysqld

chkconfig --level 2345 mysqld on

chkconfig --list

4. 测试新功能clone plugin

(1)安装插件

INSTALL PLUGIN clone SONAME 'mysql_clone.so';

或者在/etc/my.cnf中添加

plugin-load-add=mysql_clone.so

(2)创建克隆用户,并赋予权限

CREATE USER clone_user@'%' IDENTIFIED by '123';

GRANT BACKUP_ADMIN ON *.* TO 'clone_user';

(3)创建测试库和测试表

(4)本地克隆

mysql -uclone_user -p123

CLONE LOCAL DATA DIRECTORY = '/mysql/clone/data';

/mysql/clone属主是mysql,且data盘不存在

cd /mysql/clone/data

image.png

可以在原库新增一些数据,用于比较

service mysqld stop

mysqld_safe --user=mysql --datadir=/mysql/clone/data &

image.png

(5)远程克隆

远程数据库按照上述2,3安装

源端和目标端都配置clone plugin相关:

INSTALL PLUGIN clone SONAME 'mysql_clone.so';

CREATE USER clone_user@'%' IDENTIFIED by '123';

GRANT CLONE_ADMIN  on *.* TO 'clone_user';

grant BACKUP_ADMIN on *.* to 'clone_user'@'%';

 

目标端:

SET GLOBAL clone_valid_donor_list = '10.45.5.11:3306';

 

目标端:

用clone用户登录

mysql -uclone_user -p123

CLONE INSTANCE FROM 'clone_user'@'10.45.5.11':3306 IDENTIFIED BY '123';

此时会自动重启mysqld进程

image.png

进mysql发现已经有了donor的数据

performance_schema.clone_progress表可以查询克隆的进度

image.png

或者可以set global log_error_verbosity=3;

然后CLONE INSTANCE FROM 'clone_user'@'10.45.5.11':3306 IDENTIFIED BY '123';

在/mysql/log/mysql.log中查看进展

(6)clone plugin的用途和限制

clone plugin可用在mgr的创建、新增mgr节点、测试环境搭建、备份、创建主从复制等

 

捐赠者和接受者都需要安装克隆插件;

捐赠者和接受者分别需要有至少BACKUP_ADMIN/CLONE_ADMIN权限的账号;

克隆目标目录必须有写入权限;

克隆操作期间不允许使用 DDL,允许并发DML。要求相同版本号,您无法MySQL 5.7和MySQL 8.0之间进行克隆,而且要求版本>=8.0.17;

同一平台同一架构,例如linux to windows、x64 to x32 是不支持;

可以克隆操作一般表空间,但必须要有目录权限,不支持克隆使用绝对路径创建的一般空间。与源表空间文件具有相同路径的克隆表空间文件将导致冲突;

远程克隆时不支持CLONE INSTANCE FROM中通过使用mysqlx的端口;

克隆插件不支持克隆MySQL服务器配置文件my.cnf等;

克隆插件不支持克隆二进制日志;

克隆插件仅克隆存储的数据 InnoDB,不克隆其他存储引擎数据。MyISAM并且 CSV存储在包括sys模式的任何模式中的表都被克隆为空表;

不支持通过MySQL router连接到捐赠者实例;

一些参数是必须一致的,例如innodb_page_size、innodb_data_file_path、lower_case_table_names;

如果克隆加密或页面压缩数据,则捐赠者和接收者必须具有相同的文件系统块大小;

如果要克隆加密数据,则需要安全连接ssl;

clone_valid_donor_list 在接受者的设置必须包含捐赠者 MySQL 服务器实例的主机地址;

必须没有其他克隆操作正在运行,操作要确定克隆操作是否正在运行,请查询该 clone_status表;

默认情况下,克隆数据后会自动重新启动接受者 MySQL实例

5. mysql5.7和8对比

除了mysql8新功能clone plugin,mysql8的其他新功能如下:

(1)Document Store

(2)BLOB, TEXT, GEOMETRY, and JSON这些大字段允许设置默认值

(3)不用mysql_upgrade,新版本安装后,自动升级数据字典表(如sys,mysql下的表)

(4)数据字典表由myisam引擎变为innodb引擎

(5)支持隐式索引(不被优化器使用的索引)隐式索引可以用于索引存在与否是否提高查询性能的测试

(6)支持倒序索引,可以提高desc查询效率

(7)新BACKUP_ADMIN权限,拥有Backup lock的能力,允许热备的dml操作,但会阻止会导致非一致快照的操作

(8)归档redo

(9)哈希join的优化

(10)默认的字符编码从latin1变为utf8mb4

(11)根据网上各种测试文档,有的说8性能有提高,有的说反而8不如5.7.待精确的数据测试,此文暂不涉及

(12)安全方面,5.7企业版开始使用TDE(Transparent Data Encryption)加密插件加密数据文件,8.0引入了加密redo、undo、binlog等

INSTALL PLUGIN keyring_file soname 'keyring_file.so';

由以下变量控制:

binlog_encryption

default_table_encryption

(13)双重密码功能,当密码过期修改密码后,原密码还能使用一段时间

(14)mysqlbackup已经集成在安装包中

(15)默认的密码插件是caching_sha2_password,而5.7是mysql_native_password,这个有坑,低版本的客户端无法连接mysql8,而且mgr的复制通道就是用的mysql_native_password,建复制用户时需要注意

(16)

 

6. 参考文档

https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html

https://dev.mysql.com/doc/refman/8.0/en/clone-plugin-remote.html

https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

https://www.jianshu.com/p/11ac3d323d3c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值