配置步骤
首先准备两台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; • 1
我们使用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,如果还重复,那么你可以去买彩票了):
从新启动集群,然后就正常了