生产环境升级mysql流程及配置主从服务
之前写到过mysql升级8.4的文章, 因此不再介绍mysql的安装过程
避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客
生产环境升级mysql8.4.x流程
安装mysql
参考之前文章: 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客
配置主从
配置主从主要就看my.cnf里的配置
log-bin=/data/mysql8/data/mysql-bin
server-id=3
注意主从的server-id不要为同一个值
主数据库设置
-- 创建用户 slave
CREATE USER 'slave'@'%' IDENTIFIED BY 'password';
-- 授权
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
查看bin-log日志名称
8.4.0及以上的版本不能再使用SHOW MASTER STATUS;
SHOW BINARY LOG STATUS;
记住以下两个值
配置从数据库
登录到从数据库,注意使用以下命令登录
./mysql --defaults-file=/data/mysql8/my.cnf -uroot -p
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.0.103',
SOURCE_PORT=3306,
SOURCE_USER='slave',
SOURCE_PASSWORD='password',
SOURCE_LOG_FILE='binlog.000016',
SOURCE_LOG_POS=158;
从库执行命令,开始同步主库
START REPLICA;
查看复制状态
SHOW REPLICA STATUS\G;
如果上面状态有报错或复制失败 可能是数据不一致的原因,在从库上先停止复制
STOP REPLICA;
然后重置复制,它将清除复制元数据存储库,删除所有中继日志文件,并启动新的中继日志文件
RESET REPLICA;
最后重启复制
START REPLICA;
如果以上步骤还是不对,那么就重新再主数据库查询bin-log状态,然后从数据库切换为root账号复制, 注意:root账号一定要能在从服务器登录才行
可能遇到的问题
-
导入数据时可能会出现编码/排序规则不对的情况, 这个问题是在创建数据库的时候需要设置编码格式为utf8mb3, 因为在mysql8.4中默认的字符集是utf8mb4, 且由utf8mb3取代了utf8
-
导入数据时如果用到了坐标函数, 会出现GeomFromText does not exist的错误, 这是因为mysql8.0以后的版本废弃了这个函数, 改为了
GeomFromText
==>ST_GeomFromText
, 参考链接: mysql 出现 GeomFromText does not exist 解决方案-CSDN博客 -
在整个升级的过程中, 可能最容易出问题的就是设置主从, 在创建好slave用户, 且分配权限之后,可能还会出现复制不成功的情况, 解决方法, 可以使用root账号进行主从复制, 或给slave账号分配更多的权限