mysql8.0数据库主从配置
1.2.1、主库配置
服务器:192.168.30.81
1、修改Mysql数据库的配置文件 vim /etc/my.cnf
在打开的文件中加入下面两行,其中的server-id不一定是100,确保唯一即可
log-bin=mysql-bin #[必须]启用二进制日志 (8.0已默认开启)
server-id=100 #[必须]服务器唯一ID
2、重启Mysql服务
systemctl restart mysqld
3、创建数据同步的用户并授权
登录进去MySQL之后才能够执行下面的命令,因为这是SQL命令,Linux不认识这玩意是啥。
CREATE USER 'master'@'192.168.30.58' IDENTIFIED WITH mysql_native_password BY '123456!';
GRANT REPLICATION SLAVE ON *.* TO 'master'@'192.168.30.58';
记得刷一下权限
FLUSH PRIVILEGES;
注意master是主服务器的用户,而 47.92.132.179 指的是从数据库的服务器IP,意思就是让从服务器有访问的权限
4、查看master同步状态
这个时候还 不用退出MySQL ,因为下面的命令还是SQL命令,执行下面的SQL,可以拿到我们后面需要的两个重要参数。
show master status;
执行完这一句SQL之后,不要再操作主库避免两个属性值会发生变化 。
1.2.2、从库配置
服务器:192.168.30.58
1、 修改Mysql数据库的配置文件 vim /etc/my.cnf
这里要注意server-id和主库以及其他从库都不能相同,否则后面将会配置不成功。
2、重启Mysql服务
这里有三个方法都能重启MySQL,最简单的无疑就是一关一开:
systemctl restart mysqld
3、设置主库地址及同步位置
登录进去MySQL之后才能够执行下面的命令,因为这是SQL命令
CHANGE MASTER TO MASTER_HOST='47.92.202.2', -- 主服务器IP
MASTER_USER='master', -- 主服务器用户
MASTER_PASSWORD='123456!', -- 主服务器用户密码
MASTER_LOG_FILE='mysql-bin.000001', -- 主服务器
MASTER_PORT=3306, -- 端口号默认3306
MASTER_LOG_POS=856; --LOG位置 主库会显示
例子:
CHANGE MASTER TO MASTER_HOST='192.168.30.81',
MASTER_USER='master',
MASTER_PASSWORD='123456!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_PORT=3306,
MASTER_LOG_POS=847;
#记得记得开启从库配置
start slave;
参数说明:
- master_host: 主库的 IP地址
- master_user: 访问主库进行主从复制的 用户名 ( 上面在主库创建的 )
- master_password: 访问主库进行主从复制的用户名对应的 密码
- master_log_file: 从哪个 日志文件 开始同步 ( 即1.2.1中第4步获取的 File )
- master_log_pos: 从指定日志文件的哪个 位置 开始同步 ( 即1.2.1中第4步获取的 Position )
4、查看从数据库的状态
这个时候还 不用退出MySQL ,因为下面的命令还是SQL命令,执行下面的SQL,可以看到从库的状态信息。通过状态信息中的 Slave_IO_running 和 Slave_SQL_running 可以看出主从同步是否就绪,如果这两个参数全为 Yes ,表示主从同步已经配置完成。
show slave status\G;