[以下操作使用root用户进行]
一、主从库系统环境
1.主库系统:CentOS Linux release 7.6.1810 (Core)
2.从库系统:Ubuntu 18.04.3 LTS
二、主从库系统MYSQL版本
1.主库MYSQL版本:mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)
2.从库MYSQL版本:mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper
三、主库(IP:192.168.117.6)MYSQL配置
1.找到mysql的配置文件my.cnf
locate my.cnf
- 如下图,路径为/etc/my.cnf
- 我们在修改这个my.cnf前先把这个文件备份一下
cp /etc/my.cnf /etc/my.cnf_back
- 我们将这个my.cnf文件打开
vi /etc/my.cnf
- 在[mysqld]下增加如下配置,其中binlog-do-db是指定作为要同步的数据库,如果需要所有数据库都同步,那么这一项可以去掉
- 修改完成后重启mysql服务
service mysqld restart
- 登录mysql,执行完下面的命令后输入root用户的密码即可
mysql -uroot -p
- 在master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
CREATE USER 'slave'@'%' IDENTIFIED BY '@#$Rfg345634523rft4fa';
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '@#$Rfg345634523rft4fa';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
>>语句中的%
代表所有服务器都可以使用这个用户,如果想指定特定的ip,将%
改成ip即可。
- 查看主mysql的状态
show master status;
上面图中的File和Position在从库配置中会用到,记录下File
和Position
的值,并且不进行其他操作以免引起Position
的变化
- 主库配置完毕
四、从库(IP:192.168.117.5)MYSQL配置
- 同样找到my.cnf的位置
locate my.cnf
如下图,my.cnf的位置在 /etc/mysql/my.cnf
- 同样备份这个文件
cp /etc/mysql/my.cnf /etc/mysql/my.cnf_back
- 编辑my.cnf文件
vi /etc/mysql/my.cnf
在[mysqld]下增加如下配置:
- 重启mysql
service mysql restart
- 登录mysql,执行下面命令后输入密码即可
mysql -uroot -p
- 执行同步主库命令
change master to master_host='192.168.117.6', master_user='slave', master_password='@#$Rfg345634523rft4fa', master_port=3306, master_log_file='mysql-bin.000006', master_log_pos= 6033, master_connect_retry=30;
【参数说明】
master_host :Master的地址
master_port:Master的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
- 开启主从复制
start slave;
- 查看主从同步状态(\G是格式化输出)
show slave status \G;
[SlaveIORunning 和 SlaveSQLRunning 都是Yes说明主从复制已经开启]
- 从库配置完成
- 现在可以在主库中增加一条数据,然后看从库中是否有该数据,如果有则说明,主从同步已经配置成功了