红联Linux门户
Linux帮助

阿里云Centos6.5 mysql5.6数据文件迁移

发布时间:2015-12-17 10:20:42来源:linux网站作者:chenpy

由于安装mysql服务器的是没有注意,把mysql的数据文件放到了系统盘。
注:rpm安装mysql,默认的mysql的主目录是【/var/lib/mysql/】,也就是mysql主要的数据文件的存放目录
现在需要把这些文件放到数据盘。本地的数据盘挂载到了/data目录下,迁移步骤如下:


1:迁移工作
1.1:停掉mysql服务器

service mysql stop


1.2:复制数据库到数据盘

我的数据盘目录是/data

>cd /data
>mkdir mysql
>cd mysql
>cp -r /var/lib/mysql/* ./


1.3:把新建的目录改为mysql的用户组

chown -R mysql:mysql /data/mysql/


1.4:配置/etc/my.cnf
如果没有请新建该文件
文件示例:

[mysqld]

datadir = /data/mysql
port = 3306
server_id = 1
socket = /data/mysql/mysql.sock

default_storage_engine = InnoDB

#INNODB
innodb_buffer_pool_size = 4G
innodb_log_file_size = 8M
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

#MyISAM
key_buffer_size = 64M

#LOGGING
log_error = /data/mysql/mysql-error.log
slow_query_log = 1
slow_query_log_file = /data/mysql/mysql-slow.log

#OTHER
tmp_table_size = 64M
max_heap_table_size = 64M
query_cache_type = 1
query_cache_size = 64M
max_connections = 1000
thread_cache_size = 256
table_open_cache = 10000
open_files_limit = 65535

innodb_thread_concurrency = 4

skip_name_resolve
character_set_server=utf8

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
socket = /data/mysql/mysql.sock
port = 3306
host = localhost


1.5:启动mysql服务

>service mysql start


2:常见问题
2.1 首先迁移完的目标目录的权限问题。

ERROR! The server quit without updating PID file

这个是权限问题,mysql没有这个目录下的权限
因为刚复制过来的mysql文件的拥有者是root,所以要改变该目录的拥有者,执行下面命令来改变
chown -R mysql:mysql /data/mysql/


2.2 用mysql客户端连接不上服务器

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

其实是你的mysql的配置文件没有配置正确。
mysql启动如果没有读到

[client]
socket = /data/mysql/mysql.sock
port = 3306
host = localhost

这些配置,则mysql会默认找 /var/lib/mysql/mysql.sock文件,
如果要解决这个问题就需要把上面的东西加入到你的/etc/my.cnf配置文件中。

下面普及下mysql的有关配置文件的知识,以前我也是迷迷糊糊,现在搞清楚了一些。
用 service mysql start 命令启动mysql,mysql会默认找/etc/my.cnf 配置文件,如果没有找到,则会按照默认的启动目录来启动mysql
就是【/var/lib/mysql】
会在此目录下生成 10-4-19-161.pid 类似的pid文件 和 sock文件【mysql.sock】
但是如果你建立的了my.cnf 文件则mysql会按照你的配置文件来启动mysql。

对my.cnf 文件的简单解释

[mysqld]
#mysql 数据文件存储位置
datadir = /data/mysql
#端口号
port = 3306
#做主从复制的时候会用到,整个服务器集群唯一。
server_id = 1
#mysql启动 的时候自动生成的文件,在mysql的主目录中生成。如果用mysql命令连接数据库的时候 mysql.sock文件找不到,请检查你的mysql-client的配置 ,就是本示例文件的最后一行。是否指向了正确的mysql.sock文件,如果还是没有,看看mysql启动了没有,因为mysql只有在启动的时候才会生成这个文件。
socket = /data/mysql/mysql.sock

#默认的存储引擎
default_storage_engine = InnoDB

#存储引擎的基础配置
#INNODB
innodb_buffer_pool_size = 4G
innodb_log_file_size = 8M
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

#MyISAM
key_buffer_size = 64M

#mysql日志文件存储位置
#LOGGING
#错误日志
log_error = /data/mysql/mysql-error.log
slow_query_log = 1
#慢查询日志
slow_query_log_file = /data/mysql/mysql-slow.log

#OTHER
tmp_table_size = 64M
max_heap_table_size = 64M
query_cache_type = 1
query_cache_size = 64M
max_connections = 1000
thread_cache_size = 256
table_open_cache = 10000
open_files_limit = 65535

innodb_thread_concurrency = 4

skip_name_resolve
character_set_server=utf8

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#mysql 客户端的基础配置,请指定sock的的地址,要不然mysql会读取默认的mysql.sock文件的地址【/var/lib/mysql/mysql.sock】,这样使用mysql命令连接数据库的时候就会发现mysql.sock文件找不到了
[client]
socket = /data/mysql/mysql.sock
port = 3306
host = localhost


2.3 用户密码过期问题

Your password has expired. To log in you must change it using a client that supports expired passwords

则需要修改 mysql的用户表
刚开始以为修改用户密码就可以解决密码过期的问题,其实不是的。需要修改msyql.user表的 password_expired值
Y表示已经过期,需要修改成N。
首先在本机进入mysql

>mysql -uroot -pxxxxx
>use mysql
>select host,user,password_expired from user;
+-------------+----------+------------------+
| host        | user     | password_expired |
+-------------+----------+------------------+
| localhost   | root     | Y                |
| 10-4-19-161 | root     | Y                |
| 127.0.0.1   | root     | Y                |
| localhost   | data     | N                |
| 127.0.0.1   | shangbao | N                |
+-------------+----------+------------------+

如果有些是Y,则需要吧哪些是Y的改为N。
update set user.password_expired = ‘N’ where user.user = ‘root’;
root是你密码过期的用户

然后刷新权限

>flush privileges;

因为mysql的权限是启动的时候缓存起来的,如果修改的用户的权限,需要手动刷新用户权限才会生效。


阿里巴巴技术架构首次曝光|站在双11的肩膀上看阿里云企业级互联:http://www.linuxdiyf.com/linux/15914.html

阿里云云服务器Linux系统挂载数据盘图文教程:http://www.linuxdiyf.com/linux/14984.html

阿里云服务器挂载数据盘:http://www.linuxdiyf.com/linux/13885.html

阿里云服务器ECS Ubuntu系统安装配置:http://www.linuxdiyf.com/linux/13662.html

Ubuntu系统中登陆阿里云服务器的方法:http://www.linuxdiyf.com/linux/13369.html