zoukankan      html  css  js  c++  java
  • 【转】如何将MySQL数据目录更改为CentOS 7上的新位置

    本文转载自:http://www.leftso.com/blog/362.html

     

    介绍

    数据库随着时间的推移而增长,有时超过了文件系统的空间。当它们与操作系统的其他部分位于同一分区上时,也可能遇到I / O争用。RAID,网络块存储和其他设备可以提供冗余和其他所需的功能。无论您是增加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程将指导您重新定位MySQL的数据目录。

     

    先决条件

    要完成本指南,您需要:

    • 一个CentOS 7服务器,具有sudo安装有权限和MySQL 的非root用户。您可以在CentOS 7初始服务器设置指南中了解更多关于如何设置具有这些权限的用户。如果您还没有安装MySQL,CentOS 7指南中的如何安装MySQL可以帮助您。

    在这个例子中,我们将数据移动到一个块存储设备上/mnt/volume-nyc1-01。您可以在DigitalOcean指南的“ 如何使用数据块存储”中了解如何设置。

    无论您使用何种底层存储,本指南都可以帮助您将数据目录移到新的位置。

     

    第1步 - 移动MySQL数据目录

    为了准备移动MySQL的数据目录,让我们通过使用管理凭证启动交互式MySQL会话来验证当前位置。

     mysql -u root -p

    出现提示时,提供MySQL根密码。然后从MySQL提示符下选择数据目录:

     select @@datadir;
    +-----------------+
    | @@datadir       |
    +-----------------+
    | /var/lib/mysql/ |
    +-----------------+
    1 row in set (0.00 sec)

    这个输出证实MySQL被配置为使用默认数据目录,/var/lib/mysql/,所以这是我们需要移动的目录。确认后,键入exit并按下“ENTER”离开监视器:

     exit
    为了确保数据的完整性,在实际更改数据目录之前,我们将关闭MySQL:
     sudo systemctl stop mysqld
     

    systemctl 不会显示所有服务管理命令的结果,因此如果您想确保成功,请使用以下命令:

     sudo systemctl status mysqld

    如果输出的最后一行告诉您服务器已停止,则可以确定它已关闭:

     mysqld.service - SYSV: MySQL database server.
       Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
       Active: inactive (dead) since 三 2018-01-31 10:49:00 CST; 4s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 11689 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=0/SUCCESS)
      Process: 11420 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
     Main PID: 11650
    
    1月 31 10:38:03 localhost.localdomain systemd[1]: Starting SYSV: MySQL database server....
    1月 31 10:38:04 localhost.localdomain mysqld[11420]: Starting mysqld:  [  确定  ]
    1月 31 10:38:04 localhost.localdomain systemd[1]: mysqld.service: Supervising process 11650 which is not our child. We'll most likely not notice when it exits.
    1月 31 10:38:04 localhost.localdomain systemd[1]: Started SYSV: MySQL database server..
    1月 31 10:48:58 localhost.localdomain systemd[1]: Stopping SYSV: MySQL database server....
    1月 31 10:49:00 localhost.localdomain mysqld[11689]: Stopping mysqld:  [  确定  ]
    1月 31 10:49:00 localhost.localdomain systemd[1]: Stopped SYSV: MySQL database server..
    

    现在服务器已关闭,我们将使用现有的数据库目录复制到新的位置rsync。使用该-a标志保留权限和其他目录属性,同时-v提供详细的输出,所以你可以按照进度。

    注意:确保目录中没有结尾斜杠,如果使用了选项卡完成,可能会添加该斜杠。当有斜线时,rsync会将目录的内容转储到挂载点,而不是将其转移到包含的mysql目录中:

     sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01

    一旦rsync(如果rsync命令未安装通过命令yum install rsync安装完成,用.bak扩展名重命名当前文件夹中保存,直到我们已经证实,此举是成功的。通过重新命名它,我们将避免可能从新旧位置的文件中产生混淆:

     sudo mv /var/lib/mysql /var/lib/mysql.bak

    现在我们准备把注意力转向配置。

    第2步 - 指向新的数据位置

    MySQL有几种方法来覆盖配置值。默认情况下,在文件中datadir设置为。编辑这个文件以反映新的数据目录:/var/lib/mysql/etc/my.cnf

     sudo vi /etc/my.cnf

    找到以[mysqld]块开始的那一行,datadir=用几个注释与块标题分开。改变后面的路径来反映新的位置。另外,由于套接字先前位于数据目录中,因此我们需要将其更新到新的位置:

     /etc/my.cnf中
     [mysqld]
    . . .
    datadir=/mnt/volume-nyc1-01/mysql
    socket=/mnt/volume-nyc1-01/mysql/mysql.sock
    . . .
    

    更新现有的行后,我们需要为mysql客户端添加配置。在文件的底部插入以下设置,以便不会在[mysqld]块中分割指令:

    /etc/my.cnf中
     [client]
    port=3306
    socket=/mnt/volume-nyc1-01/mysql/mysql.sock
    

    当你完成后,点击ESCAPE,然后键入:wq!保存并退出文件。

    第3步 - 重新启动MySQL

    现在我们已经更新了配置以使用新的位置,我们准备启动MySQL并验证我们的工作。

     sudo systemctl start mysqld
    sudo systemctl status mysqld

    要确保新的数据目录确实在使用中,请启动MySQL监视器。

     mysql -u root -p

    再次查看数据目录的值:

     select @@datadir;
    +----------------------------+
    | @@datadir                  |
    +----------------------------+
    | /mnt/volume-nyc1-01/mysql/ |
    +----------------------------+
    1 row in set (0.01 sec)

    现在您已经重新启动了MySQL并确认它正在使用新的位置,请借此机会确保您的数据库功能完整。一旦您验证了任何现有数据的完整性,您可以使用删除备份数据目录sudo rm -Rf /var/lib/mysql.bak

     

    总结

    在本教程中,我们已经将MySQL的数据目录移到新的位置,并更新了SELinux以适应调整。尽管我们使用的是块存储设备,但是这里的说明应该适用于重新定义数据目录的位置,而不考虑底层技术。

     

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

  • 相关阅读:
    大名鼎鼎的红黑树,你get了么?2-3树 绝对平衡 右旋转 左旋转 颜色反转
    django 数据库连接模块解析及简单长连接改造
    django settings最佳配置
    Django 多数据库联用
    初步了解Shuttle ESB
    linux 线程切换效率与进程切换效率相差究竟有多大?
    进行mysql压力測试须要注意的几点
    POJ 2762 Going from u to v or from v to u?(强联通,拓扑排序)
    linux中O(1)调度算法与全然公平(CFS)调度算法
    LeetCode 121 Best Time to Buy and Sell Stock
  • 原文地址:https://www.cnblogs.com/flyingaway/p/10008546.html
Copyright © 2011-2022 走看看