MySQL8.0常用命令
-----------------------------------------------------------------------------------------------------------------------------------------------------
--查询数据库中哪些线程正在执行
show processlist;#查版本
mysql -V或mysql> select version();log_bin_basename配置了binlog的文件路径及文件前缀名
log_bin_index配置了binlog索引文件的路径
系统变量有很多查询方式,以下为4种常用的查询变量值方法:
- 通过show命令查看
- 通过select命令查看
- 通过命令行工具mysqladmin查看
- 通过查询performance_schema视图查看
show variables like 'autocommit'; -- 等于show session variables like 'autocommit'; show global variables like 'autocommit';
select @@autocommit; -- 等于 select @@session.autocommit; select @@global.autocommit;
mysqladmin variables > variables.txt
通过performance_schema视图查看
MySQL的performance_schema提供了几张视图可以直接用SQL查询变量信息:
global_variables 查询所有全局变量值
session_variables 查询所有会话变量值(当前会话)
variables_by_thread 查询每个会话的变量值(比session_variables多了一个thread_id)
variables_info 查询变量最近一次的设置信息,包括变量来源,范围,修改人,修改时间等
示例:查看全局变量autocommit的值:
select * from performance_schema.global_variables where variable_name='autocommit';
set global max_connections=500; set @@global.max_connections=500;
show master status
#启动slave
stop slave
start slave
#查看slave的状态
show slave status\G(注意没有分号)
授权
cd /usr/local/mysql
ls
改变mysql/data 权限
chown -R mysql:mysql /var/mysql/data
chown -R mysql:mysql /usr/local/mysql
chmod -R 750 /var/mysql/data
chown -R mysql. /usr/local/mysql
chmod -R 777 /usr/local/mysql
跳过事务
stop slave;
set global sql_slave_skip_counter=1;
start slave;
# 服务ID
server-id=1
# binlog 配置 只要配置了log_bin地址 就会开启
log_bin = /var/lib/mysql/mysql_bin
# 日志存储天数 默认0 永久保存
# 如果数据库会定期归档,建议设置一个存储时间不需要一直存储binlog日志,理论上只需要存储归档之后的日志
expire_logs_days = 30
# binlog最大值
max_binlog_size = 1024M
# 规定binlog的格式,binlog有三种格式statement、row、mixad,默认使用statement,建议使用row格式
binlog_format = ROW
# 在提交n次事务后,进行binlog的落盘,0为不进行强行的刷新操作,而是由文件系统控制刷新日志文件,如果是在线交易和账有关的数据建议设置成1,如果是其他数据可以保持为0即可
sync_binlog = 1
查看日志列表
mysql> SHOW MASTER LOGS;
# 注:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志
mysql> FLUSH LOGS;
通过mysqlbinlog执行恢复全部
# mysqlbinlog是MySQL自带的一个工具,一般在安装MySQL时mysqlbinlog也会被放入可执行目录下,可以直接执行
# 如果不能直接使用mysqlbinlog命令,可以通过 find / -name "mysqlbinlog" 查找一下这个工具在什么位置
# 然后指定全路径执行即可:如 /usr/bin/mysqlbinlog --no-defaults ...
mysqlbinlog --no-defaults /var/lib/mysql/mysql_bin.000004 | mysql -h127.0.0.1 -P3306 -uroot -p123456
# 查看全部库
mysql> SHOW DATABASES;
# 切换到binlog_test_db库
mysql> USE binlog_test_db;
# 查看库中所有的表
mysql> SHOW TABLES;
# 查看表中的数据
mysql> SELECT * FROM binlog_test_table;
4.3、通过指定位置区间恢复
# 通过位置区间恢复
mysqlbinlog --no-defaults /var/lib/mysql/mysql_bin.000006 --start-position=232 --stop-position=2220 | mysql -h127.0.0.1 -P3306 -uroot -p123456
/var/lib/mysql/mysql_bin.000006 : 要操作binlog文件
–start-position=232 :数据恢复的起始位置
–stop-position=2220 :数据恢复的结束位置
mysql -h127.0.0.1 -P3306 -uroot -p123456 : 数据恢复需要登录数据库
1、注意:删除Linux中已存在的mysql,查看历史MySQL版本
MySQL官网下载:https://www.mysql.com
进入以后,默认页是MySQL的最新版本,如果选择之前版本,就点击 Looking for previous GA versions
我这里下载的是 mysql 8.4.3 的二进制版本
2、将Linux文件放到对应目录下:/usr/local
解压文件到当前目录并重命名为mysql-8.4.3:
tar -xvJf mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz
mv mysql-8.4.3-linux-glibc2.28-x86_64 mysql-8.4.3
3、创建date目录并赋予权限
cd mysql-8.4.3
mkdir data
chmod -R 755 /usr/local/mysql-8.4.3/data/
4、创建mysql组和mysql用户,并将安装的MySQL权限给mysql用户
groupadd mysql #创建mysql组
useradd -g mysql mysql #创建mysql用户
chown -R mysql.mysql /usr/local/mysql-8.4.3
5、MySQL初始化
进入MySQL的bin目录下执行初始化
cd bin
./mysqld --user=mysql --basedir=/usr/local/mysql-8.4.3 --datadir=/usr/local/mysql-8.4.3/data --lower-case-table-names=1 --initialize
lower-case-table-names 设置不区分表名大小写
6、配置环境变量
vim ~/.bashrc #编辑环境变量文件
export PATH=$PATH:/usr/local/mysql-8.4.3/bin #文件中添加对应PATH路径
source ~/.bashrc #变量生效
7、授权并添加服务
chmod +x /etc/init.d/mysql
cd /usr/local/mysql-8.4.3
#设置开机自启服务
cp support-files/mysql.server /etc/init.d/mysql.server
chkconfig --add mysql
8、设置配置文件my.cnf
[mysqld]
# 设置server_id,同一局域网中需要唯一
server_id=100
# 开启二进制日志
log_bin=mysql-bin
# 设置需要同步的数据库
binlog_do_db=test1
#binlog_do_db=test2
# 屏蔽系统库同步
binlog_ignore_db=mysql,information_schema,performance_schema
# 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
# 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
# 二进制日志过期清理时间。默认值为0,表示不自动清理。
binlog_expire_logs_seconds = 604800
# 设置密码规则为mysql_native_password(因为博主使用的软件未更新使用caching_sha2_password规则)
mysql_native_password = ON
plugin-load=mysql_native_password.so
plugin-dir=/usr/local/mysql-8.4.3/lib/plugin/
# 端口号
port=3306
# MySQL根目录
basedir=/usr/local/mysql-8.4.3
# MySQL的data目录
datadir=/usr/local/mysql-8.4.3/data
socket=/tmp/mysql.sock
# 设置mysql客户端默认字符集
character-set-server=UTF8MB4
# 在MySQL配置中禁用符号链接功能
symbolic-links=0
# 设置不区分表名大小写
lower-case-table-names=1
# 通过设置SQL_MODE来改变服务器的SQL语法和行为
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# 启用全局事务标识符(GTID),用于标识复制拓扑结构中多个服务器上的事务
gtid_mode=ON
# 使用基于GTID的复制时强制执行严格一致性检查,防止数据不一致性
enforce_gtid_consistency=ON
# 表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
9、启动MySQL查看对应状态
service mysql start
service mysql status
10、登录MySQL修改初始密码
mysql -u root -p #登录MySQL,输出password,初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 延伸:修改root用户对应的Host
use mysql
update user set Host='%' where User='root';
#对应的修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
11、开启防火墙并开放3306端口
systemctl start firewalld #开启防火墙
firewall-cmd --permanent --zone=public --add-port=3306/tcp #开放3306端口
firewall-cmd --reload #刷新设置
MySQL8.4版本的主从备份
1、MySQL主从库安装一致
博主是直接虚拟机复制的,这里需要注意一点,从库的server-uuid会与主库重复。
处理方式是:主库或者从库找到auto.cnf文件,并将其删除,重启MySQL服务后重新生成新的server-uuid
find / -name auto.cnf #找到auto.cnf文件位置
rm -rf /usr/local/mysql-8.4.3/data/auto.cnf #删除auto.cnf文件
service mysql restart #重启服务生成新的server-uuid
2、MySQL主节点配置HOST
sudo tee -a /etc/hosts << EOF
172.18.0.137 mysql-master
172.18.0.73 mysql-slave1
EOF
3、从库my.cnf配置
主库配置按照安装时配置的就可以了,从库需要修改下
[mysqld]
# 设置server_id,同一局域网中需要唯一
server_id=101
#设置需要同步的数据库
binlog_do_db=test1
# binlog_do_db=test2
#屏蔽系统库同步
binlog_ignore_db=mysql,information_schema,performance_schema
# 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mysql-slave-bin
# 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
# 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
# 二进制日志过期清理时间。默认值为0,表示不自动清理。
binlog_expire_logs_seconds = 604800
# 设置密码规则为mysql_native_password(因为博主使用的软件未更新使用caching_sha2_password规则)
mysql_native_password = ON
plugin-load=mysql_native_password.so
plugin-dir=/usr/local/mysql-8.4.3/lib/plugin/
# 端口号
port=3306
# MySQL根目录
basedir=/usr/local/mysql-8.4.3
# MySQL的data目录
datadir=/usr/local/mysql-8.4.3/data
socket=/tmp/mysql.sock
# 设置mysql客户端默认字符集
character-set-server=UTF8MB4
# 在MySQL配置中禁用符号链接功能
symbolic-links=0
# 设置不区分表名大小写
lower-case-table-names=1
# 通过设置SQL_MODE来改变服务器的SQL语法和行为
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# 启用全局事务标识符(GTID),用于标识复制拓扑结构中多个服务器上的事务
gtid_mode=ON
# 使用基于GTID的复制时强制执行严格一致性检查,防止数据不一致性
enforce_gtid_consistency=ON
# 表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
slave_skip_errors=1062
# relay_log配置中继日志
relay_log=mysql-relay-bin
# slave设置为只读(具有super权限的用户除外)
read_only=1
[client]
default-character-set=utf8mb4
4、重启主从库MySQL服务
service mysql restart
5、主库创建用户new@%并授权
mysql -u root -p
CREATE USER 'new'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; #新建用户
GRANT REPLICATION SLAVE ON *.* TO 'new'@'%'; #给用户授权,用于从库操作主库
FLUSH PRIVILEGES; # 刷新权限
FLUSH TABLES WITH READ LOCK; #锁定所有表并防止数据写入
SHOW BINARY LOG STATUS; # 查看主库的状态,如下
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| mysql-bin.000009 | 655 | test1 | mysql,information_schema,performance_schema | 0fe417fd-b13d-11ef-beb0-000c29ee1261:1-6 |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
UNLOCK TABLES; #释放表锁
6、从库开始主从备份
mysql -u root -p
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='172.18.0.137',
SOURCE_PORT=3306,
SOURCE_USER='new',
SOURCE_PASSWORD='123456',
SOURCE_LOG_FILE='mysql-bin.000009', # SOURCE_LOG_FILE 主库中通过SHOW BINARY LOG STATUS 查看的文件名
SOURCE_LOG_POS=655; # SOURCE_LOG_POS 主库中通过show master status 查看的文件位置
start replica; # 启动备份
show replica status \G; # 查看slave状态,如下:
*************************** 1. row ***************************
下面四项正确即无问题。
Replica_IO_Running: Yes
Replica_SQL_Running: Yes
Last_IO_Error:
Last_SQL_Error:
7、测试
主库执行:
create table test1.testtable
SELECT 'a' mark , 1 val
从库执行:
show tables;
+---------------+
| Tables_in_dws |
+---------------+
| testtable |
+---------------+
1 row in set (0.00 sec)
备份完成。
-----------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------
MySQL8.0就地升级到MySQL8.4.0
-----------------------------------------------------------------------------------------------
场景1:查询所有数据库的总大小
--查询所有数据库的总大小use information_schema;select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES;--统计一下所有库数据量SELECTSUM(AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH)/1024/1024 AS total_mbFROM information_schema.TABLES;--统计每个库大小SELECTtable_schema,SUM(AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH)/1024/1024 AS total_mbFROM information_schema.TABLES group by table_schema;场景2:查看指定数据库的大小
use information_schema;select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='pijiake';场景3:记录数 --查看所有数据库各容量大小
selecttable_schema as '数据库',sum(table_rows) as '记录数',sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'from information_schema.tablesgroup by table_schemaorder by sum(data_length) desc, sum(index_length) desc;--查看所有数据库各表容量大小selecttable_schema as '数据库',table_name as '表名',table_rows as '记录数',truncate(data_length/1024/1024, 2) as '数据容量(MB)',truncate(index_length/1024/1024, 2) as '索引容量(MB)'from information_schema.tablesorder by data_length desc, index_length desc;--查看指定数据库容量大小(例:查看mysql库容量大小)selecttable_schema as '数据库',sum(table_rows) as '记录数',sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'from information_schema.tableswhere table_schema='test'; --查看指定数据库各表容量大小(例:查看mysql库各表容量大小)selecttable_schema as '数据库',table_name as '表名',table_rows as '记录数',truncate(data_length/1024/1024, 2) as '数据容量(MB)',truncate(index_length/1024/1024, 2) as '索引容量(MB)'from information_schema.tableswhere table_schema='test'order by data_length desc, index_length desc;1.4.检查未提交的XA事务
#检查没有未提交的xa事务
mysql> xa recover;Empty set (0.00 sec)1.5.确保数据都刷到硬盘上
# 确保数据都刷到硬盘上,更改成0
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"或mysql> show variables like 'innodb_fast_shutdown';+----------------------+-------+| Variable_name | Value |+----------------------+-------+| innodb_fast_shutdown | 1 |+----------------------+-------+1 row in set (0.00 sec)mysql> set global innodb_fast_shutdown=0;Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'innodb_fast_shutdown';+----------------------+-------+| Variable_name | Value |+----------------------+-------+| innodb_fast_shutdown | 0 |+----------------------+-------+SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown1.6.升级前的初步检查
mysqlcheck -u root -p --all-databases --check-upgrade1.6.1.初步检查的内容有
1.6.1.1.不得存在以下问题
- 不能有使用过时数据类型或函数的表。
- 不能有孤立的 .frm 文件。
- 触发器不能有缺失的或空的定义符或无效的创建上下文
1.6.1.2.不能不具有本机分区支持存储引擎的分区表
不能有使用不具有本机分区支持的存储引擎的分区表。要识别此类表,请执行以下查询:
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE NOT IN ('innodb', 'ndbcluster') AND CREATE_OPTIONS LIKE '%partitioned%';查询报告的任何表都必须更改为使用 InnoDB 或不分区。要将表存储引擎更改为 InnoDB ,请执行以下语句:
ALTER TABLE table_name ENGINE = INNODB;
ALTER TABLE table_name REMOVE PARTITIONING;1.6.1.3.关键字
MySQL 8.4中可能保留了一些以前没有保留的关键字。参见第11.3节“关键字和保留字”。这可能会导致以前用作标识符的单词变为非法。若要修复受影响的语句,请使用标识符引号。
1.6.1.4.数据字典使用的表同名的表检查
MySQL系统数据库中不能有与MySQL 8.4数据字典使用的表同名的表。要标识具有这些名称的表,请执行以下查询:
SELECT TABLE_SCHEMA, TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE LOWER(TABLE_SCHEMA) = 'mysql' AND LOWER(TABLE_NAME) IN ( 'catalogs', 'character_sets', 'check_constraints', 'collations', 'column_statistics', 'column_type_elements', 'columns', 'dd_properties', 'events', 'foreign_key_column_usage', 'foreign_keys', 'index_column_usage', 'index_partitions', 'index_stats', 'indexes', 'parameter_type_elements', 'parameters', 'resource_groups', 'routines', 'schemata', 'st_spatial_reference_systems', 'table_partition_values', 'table_partitions', 'table_stats', 'tables', 'tablespace_files', 'tablespaces', 'triggers', 'view_routine_usage', 'view_table_usage' );必须删除或重命名查询报告的任何表(使用 RENAME TABLE )。这还可能需要对使用受影响表的应用程序进行更改。
1.6.1.5.外键约束名称检查
不能有外键约束名称超过64个字符的表。使用此查询可标识约束名称过长的表:
SELECT TABLE_SCHEMA, TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE TABLE_NAME IN (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+1), INSTR(SUBSTR(ID,INSTR(ID,'/')+1),'_ibfk_')-1) FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN WHERE LENGTH(SUBSTR(ID,INSTR(ID,'/')+1))>64);对于约束名称超过64个字符的表,请删除该约束,然后使用不超过64个字符的约束名称将其添加回来(使用 ALTER TABLE )。
1.6.1.6.sql_mode检查
必须没有由 sql_mode 系统变量定义的过时SQL模式。尝试使用过时的SQL模式会阻止MySQL 8.4启动。应该修改使用过时SQL模式的应用程序以避免使用它们。
1.6.1.7.视图检查
不能有显式定义的列名超过64个字符的视图(在MySQL 5.7中允许列名超过255个字符的视图)。为避免升级错误,应在升级前更改此类视图。目前,识别列名超过64个字符的视图的唯一方法是使用 SHOW CREATE VIEW 检查视图定义。您还可以通过查询InformationSchema VIEWS 表来检查视图定义。
1.6.1.8.ENUM 或 SET 列元素长度检查
表或存储过程中的单个 ENUM 或 SET 列元素的长度不得超过255个字符或1020个字节。在MySQL 8.4之前, ENUM 或 SET 列元素的最大组合长度为64K。在MySQL 8.4中,单个 ENUM 或 SET 列元素的最大字符长度为255个字符,最大字节长度为1020个字节。(The 1020字节限制支持多字节字符集)。在升级到MySQL 8.0之前,请修改任何超过新限制的 ENUM 或 SET 列元素。否则将导致升级失败并出现错误。
1.6.1.9.lower_case_table_names 参数设置
如果您打算在升级时将 lower_case_table_names 设置更改为1,请确保在升级之前将架构和表名重新命名。否则,可能会由于架构或表名大小写不匹配而导致失败。您可以使用以下查询来检查是否有包含Unicode字符的架构和表名:
mysql> select TABLE_NAME, if(sha(TABLE_NAME) !=sha(lower(TABLE_NAME)),'Yes','No') as UpperCase from information_schema.tables;
如果升级到MySQL 8.4由于上述任何问题而失败,服务器会将所有更改恢复到数据目录。在这种情况下,删除所有重做日志文件,并在现有数据目录上重新启动MySQL 8.3服务器以解决错误。重做日志文件( ib_logfile* )默认位于MySQL数据目录中。修复错误后,在再次尝试升级之前执行缓慢关机(通过设置 innodb_fast_shutdown=0 )。
1.7.备份数据库
1.7.1逻辑备份
--多个数据库备份成1个文件
mysqldump -uroot -p --databases xiaomiaoao pijiake > /root/all-databases2213.sql--备份test数据库mysqldump -uroot -p test > /data/mysqldb/tmp/test_exp_$(date +%F).sql1.7.2.目录备份
--查看进程 确定使用的配置文件 安装目录
[root@localhost ~]# ps -ef | grep mysqlmysql 2232 1 0 13:10 ? 00:00:30 /mysqldb/mysql8/bin/mysqld --defaults-file=/mysqldb/my8.cnf--确定安装目录和数据目录[root@localhost ~]# cat /mysqldb/my8.cnf | grep dirbasedir=/mysqldb/mysql8 #mysql安装根目录datadir=/mysqldb/data8 #mysql数据文件所在目录--停止数据库systemctl stop mysqld或mysql -uroot -pshutdown;或mysqladmin -u root -p shutdown[root@localhost ~]# ps -ef | grep mysql无输出--安装目录备份cp -r /mysqldb/mysql8 /mysqldb/mysql8_bak_`date +%F`--数据目录备份cp -r /mysqldb/data8 /mysqldb/data8_bak_`date +%F`--配置文件备份cp /mysqldb/my8.cnf /mysqldb/my8.cnf_bak_`date +%F`1.8.下载并安装新版本MySQL软件
#1.安装介质上传至/opt/下
#2.创建目录mkdir -p /data/mysqldb840#3.解压安装包cd /opttar -xvf mysql-8.4.0-linux-glibc2.17-x86_64.tar.xz -C /data/mysqldb840#4.文件夹重命名为mysql8 mv /data/mysqldb840/mysql* /data/mysqldb840/mysql840#5.更改文件夹所属chown -R mysql.mysql /data/mysqldb840/mysql8401.9.更改配置文件
从MySQL 8.4.0开始,默认情况下不再启用已弃用的 mysql_native_password 身份验证插件。要启用它,请使用 --mysql-native-password=ON (在MySQL 8.4.0中添加)启动服务器,或者在MySQL配置文件的 [mysqld] 部分中包含 mysql_native_password=ON (在MySQL 8.4.0中添加)。
需注释掉配置文件中default_authentication_plugin参数,替换为mysql_native_password=ON。
更改/etc/my.conf配置
vi /mysqldb/my8.cnf
#认证策略解决登录ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded##default_authentication_plugin = mysql_native_password#add by MySQL8.4.0mysql_native_password=ON二.开始升级
2.1.关闭数据库
--1.进入原5.7 mysql命令行 正确关闭数据库
法1:mysqladmin -uroot -p shutdown[root@mysql]# mysql -uroot -pEnter password: #使用mysql shell 命令util.checkForServerUpgrade('root@127.0.0.1:3307', {"password":"XXXXX", "targetVersion":"8.0.26", "configPath":"/etc/my3307.cnf"}) 检查升级到目标版本8.0.26,确认没有error级别的问题Errors: 0Warnings: 17Notices: 0#检查没有未提交的xa事务mysql> xa recover;Empty set (0.00 sec)# 确保数据都刷到硬盘上,更改成0mysql> show variables like 'innodb_fast_shutdown';+----------------------+-------+| Variable_name | Value |+----------------------+-------+| innodb_fast_shutdown | 1 |+----------------------+-------+1 row in set (0.00 sec)mysql> set global innodb_fast_shutdown=0;Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'innodb_fast_shutdown';+----------------------+-------+| Variable_name | Value |+----------------------+-------+| innodb_fast_shutdown | 0 |+----------------------+-------+mysql> shutdown;Query OK, 0 rows affected (0.00 sec)mysql> exit#查看进程和端口后,已无输出记录,确保已停止[root@localhost mysqldb8]# ps -ef | grep mysqlroot 6330 6202 0 07:35 pts/0 00:00:00 mysql -uroot -p -P2213 testroot 6466 6202 0 09:18 pts/0 00:00:00 mysql -uroot -proot 6522 6293 0 09:58 pts/1 00:00:00 mysql -uroot -proot 6603 6551 0 10:14 pts/3 00:00:00 grep --color=auto mysql[root@localhost mysqldb8]# ss -ntl | grep 22132.2.用mysql8.4.0客户端直接启动数据库
cd /data/mysqldb840/mysql840
bin/mysqld_safe --user=mysql --datadir=/mysqldb/data8 &升级过程中日志内容:
[root@localhost opt]# tail -300f /mysqldb/log8/mysqld_error.log
2.3..更改环境变量
因basedir由/mysqldb/mysql8 变成了/data/mysqldb840/mysql840,故相关环境变量修改如下
#更改环境变量
[root@localhost ~]# vi .bash_profile...MYSQL_DATA=/data/mysqldb/data#mysql8.0弃用#export PATH=$PATH://mysqldb/mysql8/bin#export MYSQL_HOME=/mysqldb/mysql8#add for mysql8.4.0export MYSQL_HOME=/data/mysqldb840/mysql840export PATH=$PATH:/data/mysqldb840/mysql840/bin#生效环境变量[root@localhost ~]# source .bash_profile#查看版本[root@localhost ~]# mysql -Vmysql Ver 8.4.0 for Linux on x86_64 (MySQL Community Server - GPL)或[root@localhost ~]# mysql -uroot -proot@localhost :(none) 10:40:24>select version();+-----------+| version() |+-----------+| 8.4.0 |+-----------+1 row in set (0.00 sec)root@localhost :(none) 10:40:30>exit2.4.更改配置文件
vi /mysqldb/my8.cnf
basedir=/mysqldb/mysql8 #mysql安装根目录替换为basedir=/data/mysqldb840/mysql840 #mysql安装根目录可用下面的批量替换:%s#/mysqldb/mysql8#/data/mysqldb840/mysql840#g2.5.配置系统服务
--配置mysql8系统服务
cp /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld.service_bak_20240508[root@localhost ~]# cat /usr/lib/systemd/system/mysqld.service[Unit]Description=MySQL ServerDocumentation=man:mysqld(8)Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlAfter=network.targetAfter=syslog.target[Install]WantedBy=multi-user.target[Service]User=mysqlGroup=mysqlExecStart=/data/mysqldb840/mysql840/bin/mysqld --defaults-file=/data/mysqldb/my.cnfLimitNOFILE=65536 LimitNPROC=655362.6.重新启动数据库
--关闭数据库
mysql -uroot -pshutdown;--通过系统服务重启数据库systemctl start mysqldsystemctl status mysqldMySQL8.0常用命令的更多相关文章
- MySQL8.0+常用命令
开启远程访问 通过以下命令开启root用户远程访问权限: CREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL ON *.* TO 'r ...
- redis3.0常用命令
1.服务器启动 1)快捷启动 $redis-server 2)指定配置文件启动 $redis-server redis.conf 2.客服端启动 1)快捷无密码启动 $redis-cli 2)有密码和 ...
- maven学习0 常用命令学习
mvn clean install -Dmaven.test.skip=truemaven的package与install命令区别: package是把jar打到本项目的target下,而instal ...
- vue-cli 2.0 常用命令
一.查询npm版本 npm -v 二.安装npm npm install npm g 三.安装webpack npm install webpack -g 四.安装vue命令行工具 npm insta ...
- ESXI常用命令
1.简介 VMware vSphere ESXi6.0常用命令使用,对于一些个人认为比较常用的命令进行总结,如果读者需要了解更多请访问VMware官网下载文档,链接如下:https://www.vmw ...
- 史上最全的Kuberenetes 常用命令手册
1.0 k8s 集群状态检查 # 查看集群信息 kubectl cluster-info systemctl status kube-apiserver systemctl status kubele ...
- 0、驱动及应用小技巧、uboot指令及环境变量配置、linux常用命令
(内核make menuconfig之后,通过insmod安装的驱动都应该重新make,可能会出现一些莫名的问题) (nor flash/SDRAM/DM9000都受内存控制器控制,需要配置内存控制器 ...
- mysql8.0版本下命令行mysqld –skip-grant-tables 失效,无法登陆的问题
1.管理员权限登陆cmd,不会使用管理员登陆的请搜索cmd,搜索结果右键. 2.命令行输入:net stop mysql;然后提示.服务停止中 --> 服务已停止,如出现其他错误请百度. 这只是 ...
- mysql8数据库修改root密码,以及创建用户遇到的坑,开启远程登录,用navicat进行mysql的远程连接,mysql8.0默认编码方式,部分参数配置查询命令
yum 安装MySQL8 echo "删除系统默认或之前可能安装的其他版本的 mysql" for i in $(rpm -qa|grep mysql);do rpm -e $i ...
- Mysql8.0命令
1.创建用户 create user 'username'@'localhost' identified by 'pwd' 2.修改访问权限 在mysql数据下修改user表用户host为'%' up ...
随机推荐
- Ubuntu安装Edge浏览器,好用的浏览器!!
秉持着简介的原则,我这里把重要的步骤记录下来,减少废话的使用量,大大缩短你们看的时间,好吧.. 步骤 首先,使用以下命令更新您的系统: sudo apt update 然后,使用以下命令安装Micro ...
- [异常笔记] zookeeper集群启动异常:Error contacting service. It is probably not running.
報錯信息 zookeeper服務已經啓動,但是狀態是Error contacting service. It is probably not running. 2021-02-23 21:00:41, ...
- P4119 Ynoi2018 未来日记
P4119 Ynoi2018 未来日记 lxl 出的题好 duliu 啊. 感谢来自 fr200110217102 的博客 题解 P4119 [Ynoi2018未来日记]. 下标分块+值域分块+并查集 ...
- Java GC 调试手记
摘要 本文记录GC调试的一次实验过程和结果. GC知识要点回顾 问题1:为什么要调试GC参数?在32核处理器的系统上,10%的GC时间导致75%的吞吐量损失.所以在大型系统上,调试GC是以小博大的不错 ...
- mysql5.7之JSON数据类型
1.json对象 1.1.方法 使用对象操作的方法进行查询:字段->'$.json属性' 使用函数进行查询:json_extract(字段, '$.json属性') 获取JSON数组/对象长度: ...
- 【C++】关于 Visual Studio 的使用技巧(保姆级教程)
目录 fliter 视图 输出文件位置设置 查看预处理结果 将目标文件转换为可读的汇编 自定义程序入口 调试时查看变量在内存中的具体值 查看代码的反汇编 fliter 视图 visual studio ...
- Jetpack Compose学习(14)——ConstraintLayout约束布局使用
原文地址: Jetpack Compose学习(14)--ConstraintLayout约束布局使用-Stars-One的杂货小窝 本文阅读之前,需要了解ConstraintLayout的使用! 各 ...
- 攻防世界:Web习题之 get_post
攻防世界:Web习题之 get_post 题目内容 https://adworld.xctf.org.cn/challenges/list 题目首先需要我们用GET方式提交一个名为a,值为1的变量: ...
- MongoDB备份脚本
#!/bin/bash #backup MongoDB #mongodump命令路径 DUMP=/home/mongodb/bin/mongodump #临时备份目录 OUT_DIR=/home/mo ...
- library initialization failed - unable to allocate file descriptor table - out of memoryAborte
问题描述: 使用Docker run container 的时候, 容器在启动几秒后自动退出 , 或者不退出,但里面的服务无法启动成功. 此例的服务是用 java -jar 来启动一个服务. 使用 d ...