官网教程:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html
1. 关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2. 下载MySQL Yum Repository
- 官网地址:https://dev.mysql.com/downloads/repo/yum/
- 下载地址:https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
3. 安装MySQL服务
安装仓库: yum localinstall mysql80-community-release-el7-1.noarch.rpm
sudo yum install mysql-community-server
4. 启动MySQL服务
sudo service mysqld start
sudo service mysqld status
5. 获取root密码
sudo grep 'temporary password' /var/log/mysqld.log
6. 登录修改root密码
mysql -uroot -p
# 输入上面获取的密码
# WITH mysql_native_password 使用历史密码认证插件 方便客户端登录,新的认证插件是caching_sha2_password会导致如果客户端版本过低链接不上
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Root2018@';
7. 集群配置:my.conf 文件修改
vim /etc/my.cnf
# 添加服务ID,bin log配置,MySQL8 默认是开启bin log的
server-id=1 #服务器 id
log-bin=mysql-bin #二进制文件存放路径
# esc 退出编辑模式,shift+: 输入wq 保存退出
# 重启MySQL服务
service mysqld restart
8. 创建master 主从同步用户
# 创建用户
CREATE USER 'zmhslave'@'%' IDENTIFIED WITH mysql_native_password BY 'Root2018@';
# 赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'zmhslave'@'%';
# 生效 flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;
# 显示当前master状态 , file 和 position 从库配置使用
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 1605 | | | |
+------------------+----------+--------------+------------------+-------------------+
master 到此配置完毕
9. 从库 安装
重复1-6步安装MySQL服务并登陆修改密码
10. 从库my.conf 配置
vim /etc/my.cnf
server-id=2 #服务器 id 保证唯一性
11. 设置master
# 注意主master关闭防火墙或者开放3306端口
CHANGE MASTER TO MASTER_HOST='10.211.55.9', MASTER_USER='zmhslave', MASTER_PASSWORD='Root2018@',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1605;
12. 启动 slave
start slave
# 停止 stop slave
# 重置 reset slave
13. 查看slave状态
show slave status\G
# 表示启动成功
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
# 参数详解:https://www.jianshu.com/p/3c4d7c6c6205
14. 可以去master测试了
# 比如在master创建个用户以供远程链接使用
# 创建用户
CREATE USER 'minghui'@'%' IDENTIFIED WITH mysql_native_password BY 'Root2018@';
# 设置所有权限
GRANT ALL PRIVILEGES ON *.* TO 'minghui'@'%';
# 授权基本的查询修改权限,按需求设置
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO 'minghui'@'%';
# 从库也会自动创建用户,并设置权限
15. 搭建主主复制模式(更改从节点也为主节点)
vim /etc/my.cnf
# 添加bin log配置,MySQL8 默认是开启bin log的
log-bin=mysql-bin #二进制文件存放路径
# 重启服务
service mysqld restart
16. 从节点创建复制用户
# 创建用户
CREATE USER 'zmhslave'@'%' IDENTIFIED WITH mysql_native_password BY 'Root2018@';
# 赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'zmhslave'@'%';
# 生效 flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;
# 显示当前master状态 , file 和 position 从库配置使用
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 2162 | | | |
+------------------+----------+--------------+------------------+-------------------+
17.主节点设置master
# 注意主master关闭防火墙或者开放3306端口
CHANGE MASTER TO MASTER_HOST='10.211.55.10', MASTER_USER='zmhslave', MASTER_PASSWORD='Root2018@',MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=2162;
# 启动slave
start slave
# 查看状态
show slave status\G