CentOS下mysql数据库data目录迁移和配置优化

目录迁移

  1. 关闭数据库服务

    service mysqld stop
  2. 复制数据库

    mv  /var/lib/mysql /data/mysql
    # 或者使用cp -a复制
    # 这两个命令都会带权限到新目录去
  3. 修改配置文件 /etc/my.cnf

    [mysqld]
    #datadir=/var/lib/mysql                      ------原系统默认路径
    datadir=/data/mysql      ------现有路径
    #socket=/var/lib/mysql/mysql.sock            ------原socket路径现
    socket=/data/mysql/mysql.sock                ------现有路径
    
    [mysqld_safe]
    socket=/data/mysql/mysql.sock                 -----现有路径
    [client]
    socket=/data/mysql/mysql.sock                 -----现有路径
    [mysql.server]
    socket=/data/mysql/mysql.sock                 -----现有路径
  4. 重新启动服务

    service mysqld start
  5. 遇到迁移目录之后无法启动的问题,有可能是selinux搞的鬼,可以设置成Permissive模式

    # getenforce
    Enforcing
    # setenforce 0
    # getenforce
    Permissive
    # setenforce 1 设置SELinux 成为enforcing模式
    # setenforce 0 设置SELinux 成为permissive模式

    或者之间关闭selinux,vi /etc/selinux/config 修改 SELINUX=disabled

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted

配置优化

yum安装的mysql默认配置似乎是不能满足要求的,主要修改以下配置

# 批量执行语句包的大小
max_allowed_packet = 16M
# innodb缓存,设置为服务器内存的 80%左右
innodb_buffer_pool_size = 2048M
# 锁等待超时时间
innodb_lock_wait_timeout = 30
# 0时表示关闭,1时表示打开,2表示只要select 中明确指定SQL_CACHE才缓存
query_cache_type = 0
# 最大连接数
max_connections = 1024
# 下面两个参数一起设定
innodb_flush_log_at_trx_commit = 2
sync_binlog = 1000
# 表不区分大小写
lower_case_table_names = 1

相关推荐