常见高可用方案
MySQL的各种高可用方案,大多是基于以下几种基础来部署的:
- 基于主从复制;
- 基于Galera协议;
- 基于NDB引擎;
- 基于中间件/proxy;
- 基于共享存储;
- 基于主机高可用;
在这些可选项中,最常见的就是基于主从复制的方案,其次是基于Galera的方案。其余几种方案在生产上用的并不多。
前期准备
- 准备机器资源
- 确认服务器版本
- 确认需要的mysql版本
- 下载mysql:https://dev.mysql.com/downloads/mysql/
- 主备机器放入tar包
安装mysql
原生安装手册地址:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html
此处对手册主要步骤进行说明
- 解压下载的tar包
- 使用sudo或root用户yum install mysql-community-* 安装相关包
- 启动mysql:sudo service mysqld start
- 检查启动状态: sudo service mysqld status
- 修改/etc/my.cnf 所有者为数据库用户或其他非root用户
- 首次启动获取初始化密码: sudo grep 'temporary password' /var/log/mysqld.log
- 登录mysql修改初始root密码:
shell> mysql -uroot -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
Note
validate_password
is installed by default. The default password policy implemented by validate_password
requires that passwords contain at least one uppercase letter, one lowercase letter, one digit, and one special character, and that the total password length is at least 8 characters.
主要内容翻译:密码必须包含大小写字母,一个数字和一个特殊字符。总长度最小为8位。
同样流程安装其余2台数据库。
主从复制配置
主节点配置
1、修改mysql配置文件: vim /etc/my.cnf [mysqld] # 该名称可以修改,务必配置防止hostname修改导致主从复制失效。 log-bin=zy-bin log-bin-index=master-bin.index server-id=1 2、新增主从复制用户用于从数据库连接 mysql> CREATE USER 'copy'@'%' IDENTIFIED WITH mysql_native_password BY 'tqw961110'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'copy'@'%'; # 务必进行刷新防止更新不生效 mysql> flush privileges; 3、获取主节点信息 mysql> SHOW MASTER STATUS; #从展示出的信息中找到File 和 Position字段【后续从节点需要配置】
从节点配置
1、修改mysql配置文件: vi /etc/my.cnf [mysqld] server-id=2 relay-log=relay-log relay-log-index=relay-log.index 2、创建主从关系 mysql> CHANGE MASTER TO MASTER_HOST='【主节点IP】', MASTER_USER='【主节点创建的复制用户】', MASTER_PASSWORD='【主节点创建的用户密码】', MASTER_LOG_FILE='【主节点STATUS内容中的File字段】', MASTER_LOG_POS=【主节点STATUS内容中的position字段】; 3、开启主从同步 start slave; 4、查看状态 主要看4点: MasterHost、MasterUser、Slave_IO:yes?、Slave_SQL:yes?
出现的问题汇总
- rpm安装时报error: can't create transaction lock on /var/lock/rpm/transaction 错误
错误原因:无权限,调整方式:使用root用户或者使用sudo
- navicat 无法连接mysql出现报错
Navicat for MySQL 连接新版本 Mysql时 出现Client does not support authentication protocol
错误原因:mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
低版本navicat不支持该加密规则,修改方式:修改加密规则