linux中mariadb数据库升级

2023-11-08

前言

    在使用mariadb的数据库(mysql有同样的问题)过程中,发现老版本的数据库的一些问题:

(1)自增字段是在内存里的,数据库重启后就会丢失,新的自增字段是根据表中已有数据的最大值+1(数据表的如果没有记录,自增字段又从头开始了);

(2)数据库的主从数据库配置,有部分配置项在重启过程中也会丢失。

    因为公司业务需要,上述数据库问题会使公司业务产生bug,因此决定对公司在用的mariadb 10.1.40数据库进行升级

在官网中 https://mariadb.com/kb/en/auto_increment-handling-in-innodb/

可以看到AUTO_INCREMENT Values是在mariadb10.2.3之后改为持久化的,再加上其他的一些问题,公司决定将数据库升级至最新的稳定版本 mariadb 10.5.9

一、备份数据库

1、备份数据库

备份数据库数据

mysqldump -u root -p --all-databases > /home/alldb.sql

数据库data目录也可以备份一份

2、备份配置

cp /etc/my.cnf /etc/my.cnf.bak

3、停止数据库运行

service mysql stop

二、删除数据库

1、为什么要删除原有数据库服务

备注:我有尝试过不删除数据库,直接安装,尝试了一下方式:

(1)通过 yum install 命令安装新版本,会提示有原有老版本,无法安装。

(2)通过 yum update 命令更新版本,通过日志可以看到正常下载了新的安装包,但是在安装时会提示执行预执行的脚本发生错误,无法安装。

(3)官网查看maridb 更新操作   https://mariadb.com/kb/en/upgrading/   也是说明需要先 uninstall 然后再 install 新版本。

2、 删除老版本数据库

yum remove MariaDB-server
//如果有其他组件,也可以一并删除
yum remove MariaDB-client  //  等等

三、安装新版本数据库

建议使用MariaDB官方推荐的stable稳定版:

https://downloads.mariadb.org/mariadb/
http://yum.mariadb.org/

1、添加MariaDB yum源

vim /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.5 CentOS repository list
# http://yum.mariadb.org/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64/
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1

2、清除yum源缓存并建立数据源

yum clean all 
yum makecache

3、安装MariaDB新版本

yum install mariadb mariadb-server
yum install mariadb mariadb-client

4、启动新版MariaDB

service mysql start 

// 启动后查看状态

service mysql status

5、升级已有数据库

mysql_upgrade -uroot -p --force

6 、配置开机自启动

systemctl enable mariadb

7、登录并检查数据

mysql -uroot -p

四、数据和配置恢复

1、恢复配置

查看配置是否丢失,如果出现丢失,拿最开始备份的配置恢复

vim /etc/my.cnf

2、恢复用户和数据

登录查看用户、存储过程、数据等,出现丢失,用户可以重新创建、数据拿最初的备份恢复

mysql -u root -p </home/alldb.sql

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux中mariadb数据库升级 的相关文章

  • MySQL 导入 125000 行 CSV 的最快方法?

    这是我第一次使用 MySQL 除了对现有数据库进行一些基本查询之外 所以我不擅长解决这个问题 我有一个包含 125 000 条记录的 CSV 我想将其加载到 MySQL 中 我安装了版本 8 和工作台 我使用导入向导加载 CSV 它开始导入
  • 使用mysql在一个查询中选择多个表中的子项总数

    我整个下午都在尝试处理一个查询 或两个或三个 以获得三个表的所有子表的计数 看看我的设计 用户表 id user name 1 foo 2 bar 赢表 id won user 1 1 2 1 3 2 绘制表格 id draw user 1
  • MYSQL中收盘价的简单移动平均线计算和更新表

    我可以使用一些帮助 最好是虚拟指南 来更新下表 CREATE TABLE SYMBOL day date NOT NULL open decimal 8 3 DEFAULT NULL high decimal 8 3 DEFAULT NUL
  • MySQL InnoDB 查询性能

    我正在尝试优化一个简单的 sql 查询 该查询将多次运行大量数据 这是场景 MySQL 与 InnoDB 表 where 和 join 中使用的所有字段都已索引 表有 FK 我不需要查询的整个缓存 但每个表的缓存是可能的 表有更多的更新 插
  • MySQL 按主键排序

    某些 SQL 服务器允许使用通用语句 例如ORDER BY PRIMARY KEY 我不相信这适用于 MySQL 是否有任何此类解决方法可以允许跨多个表自动选择 或者是否需要查找查询来确定主键 我一直在研究的解决方法包括调用SHOW COL
  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • 在docker中使用MySQL数据库设置aspnetcore

    我正在尝试设置一个 docker compose 文件 其中包含 asp net core mysql 数据库和 phpmyadmin 的容器 设置我的 mysql 服务器没有问题 我可以使用 phpmyadmin 访问它 我的 asp n
  • MySQL+子串怎么做? + 替换?

    我不太擅长 SQL 希望能够变得更好 我在尝试执行某些表操作时遇到一些麻烦 我希望能够从下面的 ProgUID 列中选择子字符串 就像是 SUBSTRING table ProgUID 3 12 这将为我提供 ProgUID P CAMVE
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐