Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MariaDB修改与迁移文件夹

MariaDB修改与迁移文件夹

作者头像
taixingyiji
发布于 2022-10-27 08:28:37
发布于 2022-10-27 08:28:37
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

# 前言

操作系统:centOS7

MariaDB: 10.7.3

注意

迁移前,请一定做好备份!!!

# 1.准备

一般情况下,mariadb的data文件夹会在以下路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@mariadb-t1 ~]# ll /var/lib/mysql
total 176176
-rw-rw---- 1 mysql mysql    16384 Jun  4 00:13 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Jun  4 00:13 aria_log_control
drwx------ 2 mysql mysql     4096 Jun  4 00:10 ccnet_db
drwx------ 2 mysql mysql     4096 Jun  4 00:11 ejbca
-rw-rw---- 1 mysql mysql 79691776 Jun  4 00:13 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Jun  4 00:13 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Jun  4 00:01 ib_logfile1
-rw-rw---- 1 mysql mysql        0 Jun  4 00:03 multi-master.info
drwx--x--x 2 mysql mysql     4096 Jun  4 00:01 mysql
drwx------ 2 mysql mysql       19 Jun  4 00:01 performance_schema
drwx------ 2 mysql mysql     4096 Jun  4 00:11 seafile_db
drwx------ 2 mysql mysql       19 Jun  4 00:10 seafile_t1
drwx------ 2 mysql mysql     8192 Jun  4 00:11 seahub_db

但为了安全起见,需要通过CLI确认路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#使用以下命令登入数据库
[root@mariadb-t1 ~]# mysql -u root -p
Enter password:
 
#检查data目录路径
MariaDB [(none)]> select @@datadir;
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)

然后关闭所有需要用到mariadb的程序,再执行以下命令关闭mariadb:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] ~]# systemctl stop mariadb

一定要确认mariadb已经安全地关闭,否则很有可能会使数据库损坏:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] ~]# systemctl status mariadb.service
● mariadb.service - MariaDB 10.1.33 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: inactive (dead) since Mon 2018-06-04 22:34:35 CST; 38s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 6421 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 6393 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 6372 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 6370 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 6393 (code=exited, status=0/SUCCESS)
Status: "MariaDB server is down"

Jun 04 00:45:55 mariadb-t1 systemd[1]: Started MariaDB 10.1.33 database server.
Jun 04 22:34:32 mariadb-t1 systemd[1]: Stopping MariaDB 10.1.33 database server...
Jun 04 22:34:32 mariadb-t1 mysqld[6393]: 2018-06-04 22:34:32 140630452087552 [Note] /usr/sbin/mysqld: Normal shutdown
Jun 04 22:34:32 mariadb-t1 mysqld[6393]: 2018-06-04 22:34:32 140630452087552 [Note] Event Scheduler: Purging the queue. 0 events
Jun 04 22:34:32 mariadb-t1 mysqld[6393]: 2018-06-04 22:34:32 140629698934528 [Note] InnoDB: FTS optimize thread exiting.
Jun 04 22:34:32 mariadb-t1 mysqld[6393]: 2018-06-04 22:34:32 140630452087552 [Note] InnoDB: Starting shutdown...
Jun 04 22:34:33 mariadb-t1 mysqld[6393]: 2018-06-04 22:34:33 140630452087552 [Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool
Jun 04 22:34:35 mariadb-t1 mysqld[6393]: 2018-06-04 22:34:35 140630452087552 [Note] InnoDB: Shutdown completed; log sequence number 2940637
Jun 04 22:34:35 mariadb-t1 mysqld[6393]: 2018-06-04 22:34:35 140630452087552 [Note] /usr/sbin/mysqld: Shutdown complete
Jun 04 22:34:35 mariadb-t1 systemd[1]: Stopped MariaDB 10.1.33 database server.

注意

一定要确认最后一行出现了以上内容,否则请不要进行迁移的工作。

# 2.迁移

再三确认mariadb已经安全地关闭后,在目标路径建立新的data文件夹,在这里我以以下路径作为示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/mysql_database

在根目录下新建一个名为mysql_database的文件夹,并将所有权与组修改为mysql:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#新建目录
[[email protected] ~]# mkdir /mysql_database
 
#修改权限
[[email protected] ~]# chown mysql:mysql /mysql_database

然后将原data目录中的所有文件同步或复制到新的目录中,在这里需要注意保留相关文件的权限。为此,这里有两种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#使用cp命令复制
[[email protected] ~]# cp -rp /var/lib/mysql/* /mysql_database/
 
#使用rsync命令同步
[[email protected] ~]# rsync -av /var/lib/mysql/* /mysql_database/

如果使用cp命令则需要使用“-p”选项,以便保留文件的属性;如果使用rsync则需要使用“-a”选项,同时建议使用“-v”选项以便观察同步进度。

以上命令选一即可,完成后即可查看相关文件的属性:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#新目录中文件的属性
[[email protected] ~]# ll /mysql_database/
total 176184
-rw-rw---- 1 mysql mysql    16384 Jun  4 22:34 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Jun  4 22:34 aria_log_control
drwx------ 2 mysql mysql     4096 Jun  4 00:10 ccnet_db
drwx------ 2 mysql mysql     4096 Jun  4 00:11 ejbca
-rw-rw---- 1 mysql mysql 79691776 Jun  4 22:34 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Jun  4 22:34 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Jun  4 00:01 ib_logfile1
-rw-rw---- 1 mysql mysql        0 Jun  4 00:03 multi-master.info
drwx--x--x 2 mysql mysql     4096 Jun  4 00:01 mysql
drwx------ 2 mysql mysql       19 Jun  4 00:01 performance_schema
drwx------ 2 mysql mysql     4096 Jun  4 00:11 seafile_db
drwx------ 2 mysql mysql       19 Jun  4 00:10 seafile_t1
drwx------ 2 mysql mysql     8192 Jun  4 00:11 seahub_db
 
#原目录中文件的属性
[[email protected] ~]# ll /var/lib/mysql.bak/
total 176176
-rw-rw---- 1 mysql mysql    16384 Jun  4 00:13 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 Jun  4 00:13 aria_log_control
drwx------ 2 mysql mysql     4096 Jun  4 00:10 ccnet_db
drwx------ 2 mysql mysql     4096 Jun  4 00:11 ejbca
-rw-rw---- 1 mysql mysql 79691776 Jun  4 00:13 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Jun  4 00:13 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Jun  4 00:01 ib_logfile1
-rw-rw---- 1 mysql mysql        0 Jun  4 00:03 multi-master.info
drwx--x--x 2 mysql mysql     4096 Jun  4 00:01 mysql
drwx------ 2 mysql mysql       19 Jun  4 00:01 performance_schema
drwx------ 2 mysql mysql     4096 Jun  4 00:11 seafile_db
drwx------ 2 mysql mysql       19 Jun  4 00:10 seafile_t1
drwx------ 2 mysql mysql     8192 Jun  4 00:11 seahub_db

确认无误后,即可将原目录重命名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] ~]# mv /var/lib/mysql /var/lib/mysql.bak

注意!在确认迁移成功之前请不要删除原目录,也不要使用mv命令将原目录移动至新路径中!!!

# 3.配置

完成数据的迁移后还不能启动,还需要修改mariadb的配置文件,以便让mariadb知道自己的data目录。为此,我们需要在以下文件中添加几行内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#打开文件
[[email protected] ~]# vim /etc/my.cnf
 
#在[mysqld]块中添加以下内容
[mysqld]
datadir=/mysql_database/
socket=/mysql_database/mysql.sock

因为服务器的socket路径变了,为方面本地client的使用方便,还需要修改client的配置文件,以便让client知道socket的路径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] ~]# vim /etc/my.cnf
# 添加以下内容
[client]
socket=/mysql_database/mysql.sock
port=3306

# 4.修改service

打开service文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /usr/lib/systemd/system/mariadb.service

找到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ProtectHome=true

修改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ProtectHome=false

执行命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl daemon-reload

systemctl start mariadb

# 5.启动MariaDB

执行命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] ~]# systemctl restart mariadb

如果一切正常,那么通过以下命令即可发现mariadb处于运行状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] ~]# systemctl status mariadb

# 参考文档

修改与迁移mariadb的data文件夹

Can‘t create test file /home/mysql/data1/localhost.lower-test

# 其他

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=xx3sgbvuw66m

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CentOS 7系统修改mariadb的数据目录
安装MySQL/MariaDB数据库时,使用了默认的数据目录空间。 今天创建数据表时失败,报错如下:
程裕强
2019/05/27
1.1K0
MySQL安装
误入歧途
2024/05/08
1690
lvm-snapshot:基于LVM快照的备份
续 lvm-snapshot:基于LVM快照的备份之准备工作  http://www.linuxidc.com/Linux/2014-05/101308.htm
星哥玩云
2022/06/30
1.1K0
CentOS 7.x 卸载删除MariaDB,重新安装
【2021年11月22日更新】 如果没有删除对应的数据目录,重新安装MariaDB后,启动时会出现如下异常
程裕强
2022/05/06
1.4K0
4种备份MySQL数据库(基本备份方面问题不大了)
我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么比数据跟更为重要. 那么我们该如何保证数据不丢失、或者丢失后可以快速恢复呢?只要看完这篇, 大家应该就能对MySQL中实现数据备份和恢复能有一定的了解。 为什么需要备份数据? 其实在前言中也大概说明了为什么要备份数据, 但是我们还是应该具体了解一下为什么要备份数据 在生产环境中我们数据库可能会遭遇各种各样的不测从而
老七Linux
2018/05/31
3.7K0
MariaDB Centos7 下安装MariaDB
rpm包为例,对于标准服务器安装,至少需要下载client,shared,serve文件(安装时如果少了,会有错误提示的
授客
2019/09/11
4K0
MariaDB Centos7 下安装MariaDB
CentOS 7.x 卸载删除MariaDB,重新安装
-rw-rw---- 1 mysql mysql 16384 May 5 10:31 aria_log.00000001
OwenZhang
2021/12/08
3980
MySQL(十四)之数据备份与还原
前言   上一篇分享了关于MySQL事务的知识,在我们数据库中最重要的就是数据了,所以数据的备份就显的特别的重要!   为什么要备份数据?   在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种:     硬件故障、软件故障、自然灾害、黑客攻击、误操作(占比例大)   所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据, 备份数据的策略要根据不同的应用场景进行定制, 大致有几个参考数值, 我们可以根据这些数值从而定制符合特定环境中的数据备份策略:     能够
用户1195962
2018/01/18
3.3K0
MySQL(十四)之数据备份与还原
RaspberryPi(树莓派)如何安装 MariaDB / MySQL 数据库
这是因为你的安装服务器只绑定了能够本地访问,你需要修改配置,让你的服务器能够支持远程访问。
HoneyMoose
2020/04/05
2.8K0
RaspberryPi(树莓派)如何安装 MariaDB / MySQL 数据库
MySQL ibdata1文件迁移
目的:主机系统/var目录快满了,经查询最大的文件是mysql的ibdata1文件,有17G大小,故需要迁移这个文件到其他目录下,以释放/var目录空间。
Alfred Zhao
2019/05/24
2K1
基于Innobackupex的全备恢复
    对于MySQL数据库的热备,xtrabackup是大多数DBA朋友们的选择。xtrabackup内嵌了一个innobackupex可用于热备MySQL数据库。本文描述了基于innobackupex这个工具全备下的恢复并给出演示供大家参考。     有关Innobackupex的全备可参考:Innobackupex 全备数据库
Leshami
2018/08/13
9480
基于Innobackupex的全备恢复
Install Joomla
因为插件丰富,架构灵活,可以简单而快速实现大部分的网站功能,在国外很受欢迎,连续好几年都获得开源 CMS 的冠军
franket
2021/08/11
1.1K0
Linux基础(day61)
17.1 MySQL主从介绍 MySQL主从介绍 ---- MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启binlog才能进行主从。 binlog,其实就是一个文件,文件里记录了一些日志,文件是 二进制文件,无法cat 主从过程大致有3个步骤 1)主将更改操作记录到binlog里 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylo
运维小白
2018/02/07
6460
Linux基础(day61)
Install WordPress
mariadb 仓库配置可以参考 Setting up MariaDB Repositories
franket
2021/08/11
6970
mysql 迁移10
监测进展 [root@slave02 data]# watch -n 2 du -sh /data/mysql/ 每两秒看一下数据目录大小 ---- 恢复完成 151209 03:57:34 [01] Copying ./mysqltestt_db/kqmobile_payments.ibd to /var/lib/mysql/mysqltestt_db/kqmobile_payments.ibd 151209 03:57:34 [01] ...done 151209 03:57:34 [01
franket
2022/03/22
2.1K0
如何在Debian 9上安装MariaDB
MariaDB是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分代替MySQL安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。由于许可问题,MariaDB于2009年从MySQL分支出来。
苏子晨
2018/10/30
3.1K0
11.6 MariaDB安装
安装mariadb cd /usr/local/src wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz mv mariadb-10.2.6-linux-glibc_214-x86_64
运维小白
2018/02/06
1.1K0
Install Drupal
访问 http://192.168.56.217/drupal/core/install.php
franket
2021/08/11
1.8K0
MySQL误删除文件场景
同事反馈说某个测试的MySQL数据库误删除了ibdata1文件,导致库启动不了,而且没做备份,能不能恢复?
bisal
2023/11/04
4190
MariaDB的二进制格式安装
MariaDB是MySQL的一个分支,由MySQL的创始人Michael Widenius主导开发,当期主要由开源社区在维护,采用GPL授权许可。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。MariaDB以源码,二进制及rpm/deb格式分发。
用户1456517
2019/03/05
7830
相关推荐
CentOS 7系统修改mariadb的数据目录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验