原目录:/var/lib/mysql
成都创新互联主要从事成都网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务潮阳,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
新目录:/data/mysql
1.将/smp/mysql/mysql.sock文件复制到/data/db/mysql.sock,并停止运行mysql(注意,需将
mysql.sock文件复制后,才能停止mysql)
/smp/mysql/bin/mysqladmin -uroot -p shutdown
2.data目录迁移
cp -a /var/lib/mysql/* /data/mysql
3.修改/etc/my.cnf
socket=/data/db/mysql.sock(注意将原来的socket文件注释掉,方便回滚)
datadir=/data/db/data
4.建立软链接
ln -s /data/db/mysql.sock /var/lib/mysql/mysql.sock
想知道你的mysql装在哪里吗?CentOS7一般是装在/var/lib/mysql中的
在完成迁移之前,先用下面的指令来停止mysqld服务
service mysqld stop,或者直接点sudo systemctl stop mysqld
然后用df-h指令看服务器上剩余空间是多少,假设我们新挂了一块500G的硬盘到/data上
那么请把mysql整个文件夹拷贝到/data中,像下面这样:
sudo cp -rf /var/lib/mysql /data/mysql,拷完以后原来的mysql文件夹就可以删除了
然后再修改/etc/my.cnf,这个也是需要su的:
sudo vi /etc/my.cnf
里面有一个字段叫[mysqld],将datadir和socket修改成这样:
datadir=/data/mysql
socket=/data/mysql/mysql.sock
接下来,有的人说要修改/etc/init.d/mysqld,但我的服务器不需要,直接通过
service mysqld start就可以启动SQL服务了,远程也可以连接上,但是:
当你使用终端mysql -u root -p的时候,就会报下面这个错:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
这个时候,你有两种解决办法,一种是造一个软连接
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock,原因是你已经删掉之前的mysql目录了
另外一种办法,是在/etc/my.cnf下面新建一个新字段:
[mysql]
socket=/data/mysql/mysql.sock
第一种方法不需要重启mysql server,第二种方法需要重启mysql server,
然后,你就可以成功地从终端里进入mysql了
敲黑板,不要在[mysql]下面自做主张地写上datadir=/data/mysql,这样会导致本地命令行登录时报错:Unknown Variable: datadir=/data/mysql
1、首先在桌面上双击打开“此电脑”软件。
2、然后在打开的此电脑页面中,找到并双击打开C盘。
3、选中需要移动的文件,再右击选中的文件,从弹出的快捷菜单中选择“剪切”命令。
4、在窗口中双击打开D盘或E盘。
5、最后鼠标右击窗口空白处,从弹出的快捷菜单中选择“粘贴”命令即可。
第一种方案的优点:会重建数据文件,减少数据文件的占用空间。
第一种方案的缺点:时间占用长。(导入导出都需要很长的时间,并且导出后的文件还要经过网络传输,也要占用一定的时间。)
第二种方案的优点:设置完成后传输无人值守
第二种方案的缺点:
设置繁琐。
传输中网络出现异常,不能及时的被发现,并且会一直停留在数据传输的状态不能被停止,如不仔细观察不会被发现异常。
传输相对其他fang时间长。
异常后很难从异常的位置继续传输。
第三种方案的优点:时间占用短,文件可断点传输。操作步骤少。(绝大部分时间都是在文件的网络传输)
第三种方案的缺点:可能引起未知问题,暂时未发现。
caching_sha2_password认证插件提供更多的密码加密方式,并且在加密方面具有更好的表现,目前MySQL 8.0选用caching_sha2_password作为默认的认证插件,MySQL 5.7的认证插件是MySQL_native_password。如果客户端版本过低,会造成无法识别MySQL 8.0的加密认证方式,最终导致连接问题。
MySQL存储引擎现在负责提供自己的分区处理程序,而MySQL服务器不再提供通用分区支持,InnoDB和NDB是唯一提供MySQL 8.0支持的本地分区处理程序的存储引擎。 如果分区表用的是别的存储引擎,存储引擎必须进行修改。要么将其转换为InnoDB或NDB,要么删除其分区。通过MySQLdump从5.7获取的备份文件,在导入到8.0环境前,需要确保创建分区表语句中指定的存储引擎必须支持分区,否则会报错。
MySQL 8.0的默认字符集utf8mb4,可能会导致之前数据的字符集跟新建对象的字符集不一致,为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和校验规则。
MySQL 8.0启动使用的lower_case_table_names值必须跟初始化时使用的一致。使用不同的设置重新启动服务器会引入与标识符的排序和比较方式不一致的问题。
lower_case_table_names
要避免MySQL 8.0上的启动失败,MySQL配置文件中的sql_mode系统变量不能包含NO_AUTO_CREATE_USER。
从MySQL 5.7.24和MySQL 8.0.13开始,MySQLdump从存储程序定义中删除了NO_AUTO_CREATE_USER。必须手动修改使用早期版本的MySQLdump创建的转储文件,以删除NO_AUTO_CREATE_USER。
在MySQL 8.0.11中,删除了这些不推荐使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。从5.7到8.0的复制场景中,如果语句使用到废弃的SQL Mode会导致复制异常。
在执行到MySQL 8.0.3或更高版本的in-place升级时,BACKUP_ADMIN权限自动授予具有RELOAD权限的用户。
本文对MySQL 5.7到MySQL 8.0的升级过程中出现部分易出现问题进行整理:升级对MySQL版本的要求、升级都做了哪些内容、数据库升级做了哪些步骤以及注意事项,希望对大家版本升级有帮助。