1. 环境说明
服务器:linux(CentOS7.5),内存4G,
主节点ip:192.168.52.150
从节点ip:192.168.52.151
MySQL版本: 8.0.21
2. 安装mysql
MySQL的安装在我之前的博客里已经详细说明,这里不在赘述,下面是链接
CentOS7.x的mysql8.0.21离线安装_mysql8.0离线安装_langmeng110的博客-CSDN博客
主要将主和从节点需要注意的地方做说明
3. MySQL主节点需要的操作
1.编辑/etc/my.cnf
1) 设置server-id,这个值不能和从节点一样
例如: server-id=1
2) 设置同步信息,不设置时,默认同步所有库的所有表规则很多,这里只罗列几个常规的
binlog-do-db | 需要同步的库名 |
binlog-ignore-db | 不需要同步的库名 |
replication-do-table | 需要同步的表名,格式:库名.表名(test.t_table) |
replication-ignore-table | 不需要同步的表名,格式:库名.表名(test.t_table) |
3) 为从节点同步数据创建专属账号(也可使用现有账号) 例如账号:replica
create user 'replica'@'%';
grant replication slave on *.* to 'replica'@'%' identified by 'zheshimima';
flush privileges;
4. MySQL从节点需要的操作
1. 编辑 /etc/my.cnf
1) 设置server-id,这个值不能和主节点一样
例如: server-id=2
2) 同步之前主库的数据(如果不需要也可以略过)
#在/usr/local/mysql/bin/目录下执行
./mysqldump --single-transaction --all-databases --master-data=1 --host=192.168.52.150 --user=replica --password=replica --apply-slave-statements
3) 关闭slave
stop slave;
3.1) 此时主数据库可能依旧在活动中,有可能Position会发生偏移,所以最好执行以下命令
flush tables with read lock; 阻止库的写操作
3.2) 查询主节点bin-log日志文件名称及位置
show master status;
4) 设置同步信息
change master to master_host='192.168.52.150',master_port=3306,master_user='replica',master_password='replica',master_log_file='bin-log.000004',master_log_pos=431;
5) 开启slave并解锁
start slave;
unlock tables;释放锁
6) 查看slave状态
show slave status;
如果Slave_IO_Running和Slave_SQL_Running都为YES则说明成功了
如果其中有NO的,则需要看Last_IO_Error和Last_SQL_Error中具体问题
5. 测试
在主库新增一条记录,在从库查询,即可发现也有这条记录了
如此,算是大功告成了