- 环境准备:2台CentOS7主机
- master:192.168.152.71
- slave:192.168.152.72
一、安装MySQL
master 和 slave 都要安装
配置 MySQL 的 yum 仓库;MySQL官方 yum 仓库地址
yum install -y https://dev.mysql.com/get/mysql84-community-release-el7-1.noarch.rpm
上面命令执行完毕后只能安装 MySQL84 版本,要想安装 MySQL80 版本还需执行下面三条命令
yum-config-manager --enable mysql80-community
yum-config-manager --disable mysql-8.4-lts-community
yum makecache
安装MySQL
yum install -y mysql-community-server
二、修改配置文件
修改配置文件,通常在 /etc/my.cnf 或 /etc/mysql/my.cnf
vim /etc/my.cnf
master 配置文件添加以下内容
server-id=1 # 为每个 MySQL 实例指定一个唯一的 ID
log_bin=mysql-bin # 启用二进制日志,指定日志文件名
binlog_format=ROW # 设置二进制日志的格式;ROW 记录每行数据的变化,statement 记录 SQL 语句
slave 配置文件添加以下内容
server-id=2 # 为每个 MySQL 实例指定一个唯一的 ID
三、登录MySQL
启动 MySQL
systemctl start mysqld
systemctl enable mysqld
获取初始密码
grep 'passwork' /var/log/mysqld.log
结果大概为 2024-08-19T08:59:46.026947Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: vrP+yyDAI2lE
行尾的 vrP+yyDAI2lE
即为初始密码
或者运行下面命令直接获得,(只要日志格式不变,原理上是可以用的)
grep 'password' /var/log/mysqld.log | awk '{print $NF}'
更改密码
mysqladmin -uroot -p'初始密码' password '新密码'
四、连接master主机
登录 master 主机的mysql,创建一个专用于复制的用户
注意替换内容:replica_user 和 password
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
并执行以下 SQL 语句,记录下 File 和 Position 的值
SHOW MASTER STATUS;
登录 slave 主机的 mysql,执行下面命令
CHANGE MASTER TO
MASTER_HOST='master.IP',
MASTER_USER='replica_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='主服务器的File值',
MASTER_LOG_POS=主服务器的Position值,
get_master_public_key=1;
如果报错,看下面内容
注意:在MySQL 8.0中,CHANGE MASTER TO
语句用于配置复制。但是,从MySQL 8.0.14开始,该语句已经被弃用,并建议使用新的语句CHANGE REPLICATION SOURCE TO
启动复制进程
START SLAVE;
执行以下 SQL 语句确认复制状态是否正常
SHOW SLAVE STATUS\G;
其中的两项如下,表示已经成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes