Linux Centos 迁移Mysql 数据位置

mysql_logo

由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql是通过yum安装的.

Centos6.5
Mysql5.1

yum 安装的mysql服务

查看mysql的安装路径

执行查询SQL

show variables like '%dir%';

datadir就是数据路径

转移操作

  • 新建mysql数据目录

      mkdir /data/mysqlData
  • 停止mysql服务

      mysqladmin -u root -p shutdown

    输入密码, 等待停止

  • /var/lib/mysql整个目录复制到 /data/mysqlData

      cp -rf /var/lib/mysql /data/mysqlData/
  • 修改my.cnf文件

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

    文件内容如下, 需要修改datadir, socket对应的目录

      [mysqld]
      default-character-set=utf8
      #datadir=/var/lib/mysql
      datadir=/data/mysqlData/mysql ####
      #socket=/var/lib/mysql/mysql.sock
      socket=/var/lib/mysql/mysql.sock ####
      user=mysql
      # Disabling symbolic-links is recommended to prevent assorted security risks
      symbolic-links=0
    
      [mysqld_safe]
      log-error=/var/log/mysqld.log
      pid-file=/var/run/mysqld/mysqld.pid
    
       [mysql]
             default-character-set=utf8
      [client]
             default-character-set=utf8
  • 修改MySQL启动脚本/etc/init.d/mysqld

      vim /etc/init.d/mysqld

    修改文件中datadir路径

      #get_mysql_option mysqld datadir "/var/lib/mysql"
      get_mysql_option mysqld datadir "/data/mysqlData/mysql"

    因为是通过yum安装的需要修改/usr/lib64/mysql/mysql_config文件

      vim /usr/lib64/mysql/mysql_config

    修改内容

      #ldata='/var/lib/mysql'
      ldata='/data/mysqlData/mysql'
      #socket='/var/lib/mysql/mysql.sock'
      socket='/data/mysqlData/mysql/mysql.sock'
  • 修改权限

      [root@sample ~]# chown -R mysql:mysql /data/mysqlData/mysql/ ← 改变数据库的归属为    mysql

重启mysql服务

service mysqld restart

执行一下查询sql

show variables like '%dir%';

发现datadir的路径变了, 可以正常的运行sql, 证明可以正常的获取数据了.

总结

这次操作是在测试服务器上操作的, 心情还是很紧张, 如果需要操作线上的数据库, 一定要谨慎, 一定要谨慎, 一定要谨慎. 一定要注意备份. 这次迁移要保证在20分钟完成, 这样减少一下损失.

注意⚠️

⚠️ 通过yum安装的需要修改/usr/lib64/mysql/mysql_config文件

[TOC]

LijunSong wechat
欢迎您扫一扫上面的微信公众号,订阅IT江湖!