首先准备两台CentOS7(其他操作也行,本文由CentOS7做讲解),保证两台机器能够ping通
并且包装两台服务器当中安装同样版本的数据库,可参考我写的MySQL5.7安装文档https://blog.csdn.net/m0_51510236/article/details/113791490
然后使用其中一台作为主数据库(写、更改、删除都在这个里面),这里我是用 192.168.235.5
作为主数据库,用 192.168.235.7
作为从数据库(读可以在这个里面)。在 192.168.235.5
服务器当中修改 /etc/my.cnf
的 mysqld
添加如下配置:
# [mysqld]
server-id=5 # 建议使用IP地址的后缀,因为本机IP地址为 192.168.235.5 ,所以server-id为5
log-bin=master-bin
log_bin_index=master-bin.index
binlog_do_db=xiaohh_user # xiaohh_user是要同步的数据库的名称,不写默认同步所有数据库
# 需要排除的数据库
binlog_ignore_db=information_schema
binlog_ignore_db=mysql
binlog_ignore_db=performance_schema
binlog_ignore_db=sys
写好之后:
然后使用 systemctl restart mysqld
重启数据库服务器,然后使用 show master status;
查询MySQL的 File
和 Position
:
在 192.168.235.7
的从服务器上按照同样的方式配置上如下配置,然后从其服务器
# [mysqld]
server-id=7 # 建议使用IP地址的后缀
log-bin=slave-bin
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
然后在 192.168.235.7
当中执行如下SQL:
change master to master_host='192.168.235.5', master_port=3306, master_user='root', master_password='root', master_log_file='master-bin.000001', master_log_pos=154;
以上SQL的讲解:
# 指定主数据库的地址
master_host='192.168.235.5'
# 指定主数据库的端口
master_port=3306
# 指定主数据库的登陆用户名
master_user='root'
# 指定主数据库的登陆密码
master_password='root'
# 在上一步当中利用 show master status; 命令查询出来的 File 字段
master_log_file='master-bin.000001'
# 在上一步当中利用 show master status; 命令查询出来的 Position 字段
master_log_pos=154
目前两台数据库服务器是没有 xiaohh_user
这个数据库的
192.168.235.7
数据库执行命令:
start slave;
我们使用SQL语句在 192.168.235.5
主服务器上创建这个数据库:
CREATE DATABASE `xiaohh_user`;
USE `xiaohh_user`;
CREATE TABLE `user` (
`user_id` BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '用户id',
`username` VARCHAR(50) NOT NULL COMMENT '用户名',
`age` TINYINT UNSIGNED DEFAULT 18 COMMENT '年龄',
`gender` TINYINT UNSIGNED DEFAULT 2 COMMENT '性别;0=男,1=女,2=未知'
) COMMENT '用户表';
查看效果:
在 192.168.235.5
插入一条数据并在从数据库当中查看:
INSERT INTO `user` (`username`, `age`, `gender`) VALUES ('XiaoHH', '24', '0');
在 192.168.230.7
从数据库当中查看:
应为我是在 VMware workstation 里面克隆的虚拟机,所以主数据库和从数据库在 auto.cnf
里面的uuid相同,我们可以在从数据库当中改一下uuid,这个文件默认是在 /var/lib/mysql/auto.cnf
,随意更改最后一个字母或数字即可(毕竟这东西可以给世界上每一粒沙子编一个uuid,如果还重复,那么你可以去买彩票了):
从新启动集群,然后就正常了