将MYSQL数据文件拷贝到使用LVM扩容的磁盘中

      默认的云服务器(比如青云服务器) 只有20G的存储空间,随着时间推移MYSQL数据库的空间不够用了(尤其是开启了bin-log日志功能后),这时候需要增加一个磁盘,建议采用Linux LVM硬盘管理及LVM扩容,扩容后将mysql数据文件迁移到新的逻辑卷中。  


    据说阿里云服务器扩容比较容易,直接申请将默认的20G空间扩容即可,估计是一开始初始化的20G空间也是采用类似于LVM技术管理的。


     LVM技术主要是可以将多个物理磁盘挂载到同一个目录中使用,

     关于LVM详细的技术介绍建议访问他人博客: 

     http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html 

    http://www.cnblogs.com/mchina/p/linux-centos-logical-volume-manager-lvm.html

   如果你查看上面博客后,应该会很快掌握LVM命令的使用,我这边自己整理下我的操作过程。  


   1. 判断LVM依赖的rpm包是否已经安装

     查看 lvm包是否安装,使用命令:rpm -qa lvm*

     

     如果没有安装 yum install  lvm* 进行安装,如果你是redhat 版本的linux  建议修改yum源指定到光盘中。

   

   2. 增加一块物理磁盘,采用fdisk进行分区格式化

     新增一块物理磁盘后,暂未分区。使用命令fdisk -l查看

     将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第1张图片

     从上图中可以看到  /dev/sdb 是新增的一块4G磁盘,暂未格式化


    3.  格式化新增的磁盘,使用命令  fdisk    /dev/sdb进行格式化,格式化成lvm需要的文件格式。

    将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第2张图片

    输入的命令参数  顺序是  n  ,   p   ,   t  , 8e ,  w

    对于命令参数“p”是将磁盘格式化为主分区, 每一块磁盘至少一个主分区,最多4个主分区,一般我们都全盘设置成一个主分区存储数据。

    每个参数意思可以查看参数输出的说明。

   将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第3张图片 


    再次 使用  fdisk -l 查看目前linux系统的分区情况

    将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第4张图片

    通过上图最后两行内容看出  新增的磁盘格式化成  lvm需要的文件格式。

    

   4. 使用LVM技术进行系统扩容

      关于LVM我这里贴出两张他人博客里示意图,增加理解,有助于记忆。

将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第5张图片

    上图是LVM的结构示意图,具体的名词含义如下:

              PV:   物理的磁盘分区

             VG:   LVM中的物理的磁盘分区,PV必须加入VG,可以将VG理解为一个仓库。

             LV:   从VG中划分的逻辑分区

    这个图对应的物理存储结构如下:

      将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第6张图片

      5. 使用命令  pvdisplay  显示目前是否创建了一下 pv(物理的磁盘分区

          使用命令  pvcreate   创建  pv

           同理创建 vg, lv   具体查看下图:

  将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第7张图片

            上图中主要的命令如下:

               pvcreate   /dev/sdb1                                         创建pv

               vgcreate   VolGroup00  /dev/sdb1                    如果已经存在VolGroup00,则会加入已经存在的vg中

               lvcreate    -L  3.5G -n lvData01  VolGroup00    创建lv

    说明:lvcreate 时候,不要使用全部的空间,比如4G 只指定3.5或3.8G,否则会报错误,这个可能是lvm需要部分空间存储相关的配置信息。


  6. 格式化 lv ,挂载逻辑分区

  将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第8张图片


将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第9张图片

            

            最后挂载新创建出的lv,/mysqlData 是新创建的目录。

            mount  dev/mapper/VolGroup00-lvData01         /mysqlData 


    7. 为了开机自动挂载,将挂载信息配置到 /etc/fstab 文件中。

      将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第10张图片


            * 注意:在云服务器中如果重启服务器后可能盘符会变化,这样导致开机硬盘检查异常开机不了!

                          很多云服务提供商官方文档建议使用 UUID方式开机自动加载硬盘。


               (1) 采用  blkid /dev/mapper/VolGroup00-lvData01 命令得到磁盘的uuid,比如在命令行中得到如下信息:

                     /dev/mapper/VolGroup00-lvData01: UUID="185dc58b-3f12-4e90-952e-7acfa3e0b6fb" TYPE="ext4"

               (2) 然后 /etc/fstab 中删除原来使用直接指定 /dev/....的方式加载硬盘的一行内容代码,重新加入下面一行:

                     UUID=82603db7-1116-476e-984e-d98466c6de32 /boot         ext4    defaults        1 2


             *说明:fstab中最后5,6项数字的含义:   

              (第五项)是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0。  
              (第六项)是设定此filesystem是否要在开机时做check的动作,除了root的filesystem其必要

                                      的check为1之外,其它皆可视需要设定,内定值是0。 


   8.  使用  df  -TH 查看分区情况

     将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第11张图片

 
  9. 迁移 MYSQL 数据库的相关数据文件    

      查看你的系统上mysql数据文件存放路径,比如:/var/lib/mysql/下, 要拷贝到/mysqlData下:


     先关闭MYSQL数据库和相应的web应用,例如tomcate等程序。


               cd      /var/lib/
               cp      -a mysql  /mysqlData


         chown     -Rmysql:mysql /mysqlData/
        chmod     775/mysqlData/                        # 这步根据自己的情况授权
        chmod     775/mysqlData/mysql              # 这步根据自己的情况授权


 10. 找到my.cnf 的文件位置,一般在/etc/my.cnf,修改MYSQL的配置文件my.cnf中datadir 和socketdir 参数

       需要注意的是,MYSQL加载my.cnf 是按照一定顺序的,使用mysql --help |grep my.cnf 查看顺序:

       Default options are read from the following files in the given order:
/etc/my.cnf     /etc/mysql/my.cnf     /usr/etc/my.cnf      ~/.my.cnf 

      仔细查找这几个位置如果存在就一并修改吧

将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第12张图片


    这里需要说明下 关于socket的路径问题,如果一开始没有修改路径之前,socket的文件单独存放在另外的目录里,     比如在: /var/run/mysqld/mysqld.sock,与数据文件存放的不是同一个目录,则my.cnf无需修改socket路径!

    也不用像其他博客里说的要增加文件链接等。

    11. 另外还需修改mysql的启动文件

          我的启动文件存放在  /etc/init.d/mysql  ,编辑改文件,主要将里面的数据文件存放目录修改下。

          vi       /etc/init.d/mysql  修改里面的 datadir 变量为目前的数据文件目录,

                                              不同的mysql版本可能里面内容布局不一样,但修改的变量是一样。

    将MYSQL数据文件拷贝到使用LVM扩容的磁盘中_第13张图片


  12. 重新启动MYSQL数据库,查看数据库中数据是否正常。

        有可能启动不了的情况发生,主要查看错误日志,看看是否系统目录MYSQL没有使用权限,

        比如无法创建mysql.socket文件。数据文件目录归属用户和用户组是否是mysql

        一般启动不了的情况大多数是系统权限问题,注意查看错误日志输出。

       有一些MYSQL启动不了的情况可能需要在CentOS Linux下面永久关闭SELinux
        (1)  vi /etc/selinux/config
        (2)  #SELINUX=enforcing     #注释掉
        (3)  #SELINUXTYPE=targeted  #注释掉
        (4)  SELINUX=disabled  #增加
        (5)  :wq  #保存,关闭。
        (6)  shutdown -r now   #重启系统







    

  

       


  




你可能感兴趣的:(mysql,mysql,磁盘,lvm,数据)