签到成功

知道了

CNDBA社区CNDBA社区

Linux下MySQL数据库目录更改转移

2018-04-10 00:47 2274 0 原创 mysql
作者: leo

场景,ibdata1文件增长过快,或者数据库数据量增长过快导致datadir 目录快满的情况下,将datadir 目录下数据迁移到其他目录。http://www.cndba.cn/cndba/leo1990/article/2712

http://www.cndba.cn/cndba/leo1990/article/2712
http://www.cndba.cn/cndba/leo1990/article/2712http://www.cndba.cn/cndba/leo1990/article/2712http://www.cndba.cn/cndba/leo1990/article/2712
http://www.cndba.cn/cndba/leo1990/article/2712
http://www.cndba.cn/cndba/leo1990/article/2712
http://www.cndba.cn/cndba/leo1990/article/2712http://www.cndba.cn/cndba/leo1990/article/2712
http://www.cndba.cn/cndba/leo1990/article/2712

备份数据库

备份数据库很重要,防止迁移数据库失败恢复数据库。
[root@www.cndba.cn/]# mysqldump -uroot -proot --all-databases --opt --add-drop-database --add-drop-table --default-character-set=utf8 --master-data=2  --log-error=backup/mysqldump.log  > backup/all_mysql.sql

关闭Mysql服务

[root@www.cndba.cnbackup]# /etc/init.d/mysql stop
Stopping mysql (via systemctl):                            [  OK  ]

修改配置文件

备份配置文件
[root@www.cndba.cndata]# cp /etc/my.cnf /etc/my.cnf.20180410
修改配置文件
注释掉之前的代码
[client]
socket          =/tmp/mysql.sock
[mysqld]
socket          = /tmp/mysql.sock
datadir         = /data/mysql/data
修改改为
[client]
socket          = /data1/mysql/data/mysql.sock
[mysqld]
socket          = /data1/mysql/data/mysql.sock
datadir         = /data1/mysql/data

移动数据文件到新的数据文件目录

从/data/mysql/data移动到/data1/mysql/data
[root@www.cndba.cndata]# cd /data/mysql/data
[root@www.cndba.cndata]# cp -a * /data1/mysql/data
[root@www.cndba.cndata]# cd /data1/mysql/data/
查看复制过来的文件权限
[root@www.cndba.cndata]# ll
total 403484
-rw-rw---- 1 mysql mysql     16384 Apr  8 20:57 aria_log.00000001
-rw-rw---- 1 mysql mysql        52 Apr  8 20:57 aria_log_control
drwxr-xr-x 2 mysql mysql        26 Apr  9 09:17 data
-rw-rw---- 1 mysql mysql      2000 Apr  8 20:57 ib_buffer_pool
-rw-rw---- 1 mysql mysql  10485760 Apr  8 20:57 ibdata1
-rw-rw---- 1 mysql mysql 134217728 Apr  8 20:57 ib_logfile0
-rw-rw---- 1 mysql mysql 134217728 Apr  8 18:03 ib_logfile1
-rw-rw---- 1 mysql mysql 134217728 Apr  8 18:03 ib_logfile2
drwx------ 2 mysql root       4096 Apr  8 18:03 mysql
drwx------ 2 mysql mysql        20 Apr  8 18:03 performance_schema
drwx------ 2 mysql root        117 Apr  8 21:43 test

启动数据库

[root@www.cndba.cndata]# /etc/init.d/mysql start
Starting mysql (via systemctl):                            [  OK  ]
[root@www.cndba.cntmp]# mysql -uroot -proot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data1/mysql/data/mysql.sock' (2)
如果遇到以上错误,需要建立一个mysql.sock的软链接
[root@www.cndba.cntmp]# ln -s /data1/mysql/data/mysql.sock /tmp/mysql.sock
验证数据文件目录是否为新的目录
[root@www.cndba.cndata]# mysql -uroot -proot
Welcome to the MariaDB monitor.  Commands end with ; or /g.
Your MariaDB connection id is 27
Server version: 10.2.13-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.

MariaDB [(none)]> show global variables like 'datadir';
+---------------+-------------------+
| Variable_name | Value             |
+---------------+-------------------+
| datadir       | /data1/mysql/data/ |
+---------------+-------------------+

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
leo

leo

关注

坚持你的坚持

  • 202
    原创
  • 0
    翻译
  • 39
    转载
  • 16
    评论
  • 访问:765386次
  • 积分:1270
  • 等级:核心会员
  • 排名:第8名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ