1. 下载MySQL(5.7.42)
rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2.安装
yum install mysql-server
2.1 安装过程中如果报错如下,按下边方法处理。否则略过即可
2.2 解决方案:执行以下命令
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2.3 再次执行安装命令
yum install mysql-server
3. 设置/etc/my.cnf 文件内容
3.1 设置master数据库 my.cnf文件
vim /etc/my.cnf
复制下边内容
datadir=/data/mysql/data # 数据存放路径
port=3306
socket=/var/lib/mysql/mysql.sock
server_id=1 # server_id 主从三台机器必须不一致
log-bin=/data/mysql/data/mysql-bin # binlog日志存放路径
expire_logs_days = 7
binlog-ignore-db=mysql # 忽略mysql这个数据库,不进行同步,也可以采用binlog-do-db=mysql指定同步mysql库
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
log-error=/data/mysql/log/mysqlerror.log # 日志存储位置
pid-file=/var/run/mysqld/mysqld.pid
3.2 创建3.1中设置的文件路径
mkdir mysql/data/mysql
mkdir /mysql/data/log
touch /data/mysql/log/mysqlerror.log
3.3 赋予mysql访问权限
chown mysql:mysql /data/mysql/log/mysqlerror.log
chown mysql:mysql /data/mysql/data/
3.4 设置slave节点的 /etc/my.cnf
vim /etc/my.cnf
datadir=/data/mysql/data # 日志文件位置
port=3306
socket=/var/lib/mysql/mysql.sock
server_id=2 # slave节点id,另一个节点可设置为3,必须唯一
expire_logs_days = 7
replicate-ignore-db=mysql # 忽略复制mysql数据库,也可以通过replicate-do-db=test指定复制某test数据库
log-error=/data/mysql/log/mysqlerror.log # 日志文件位置
pid-file=/var/run/mysqld/mysqld.pid
3.5 创建3.4中文件路径并服务mysql访问权限
mkdir mysql/data/mysql
mkdir /mysql/data/log
touch /data/mysql/log/mysqlerror.log
chown mysql:mysql /data/mysql/log/mysqlerror.log
chown mysql:mysql /data/mysql/data/
4.启动MySQL主从节点
4.1 启动mysql命令
systemctl start mysqld
systemctl stop mysqld # 停止MySQL服务命令,此处不需要执行
4.2 查看mysql启动状态
systemctl status mysqld
4.3 查看mysql默认密码
vim /var/log/mysqld.log
/password # 在vim编辑器中搜索
5. 进入MySQL客户端
mysql -uroot -p
# 回车后输入前边查询的密码
5.1 进入MySQL客户端连接后,修改密码(在主从节点都要完成此操作)
# 设置密码策略为最低级别,策略共有三个级别,复杂度依次增加,只有LOW级别,支持简单密码,如12345678这样。
set global validate_password_policy=LOW;
# 修改密码
alter user 'root'@'localhost' identified by '12345678';
# 刷新
FLUSH PRIVILEGES;
# 赋予远程任何机器连接权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;
5.2 在主节点MySQL连接客户端添加数据同步从节点账户
# 支持任意从节点连接
grant replication slave on *.* to 'root'@'%' identified by '12345678';
5.3 退出MySQL客户端连接,重启mysql
systemctl restart mysql
5.4 重启后,重新进入MySQL客户端连接
show master status;
记录 File 名称和 Position 数字,等会从连接主节点时需要用到。
5.5 进入从节点MySQL连接客户端
注意:如果主库数据与从库数据相差较大,尽量先将主库数据导出后,手动导入到从库,然后在进行主从同步构建,否则可能因数据差距较大出现同步异常问题。
- 修改从库同步设置
# master_log_file='mysql-bin.000002' 和master_log_pos=2740 对应上图(5.4)
change master to master_host='主库ip(192.168.1.1)',master_user='root',master_password='12345678',master_log_file='mysql-bin.000002',master_log_pos=2740;
- 开启从库slave
start slave;
- 查看从库状态
show slave status\G;
如下图所示均显示 Yes,则表示主从同步已成功建立。另一个从节点的操作与上述一致。