起序:虚拟机安装,服务器是 克隆
来的。
一、环境
- 虚拟机:VMware Workstation 15.5 Pro
- Linux:CentOS-7-x86_64-DVD-2003.iso
- MySQL:mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar
二、安装
1、CentOS 安装
- 害,我没有写
2、MySQL 安装
三、服务器分配
服务器名称 | IP 地址 |
---|---|
Master | 10.1.0.97 |
Slave1 | 10.1.0.82 |
Slave2 | 10.1.0.83 |
注:从服务器的搭建基本相同,所以下面教程就没有重复写 第三台从数据库服务器
的搭建步骤了,只是在每个 /etc/my.cnf
中 [mysqld]
下的 server-id=#{num}
不同而已。
1、Master
登陆数据库后,创建数据库
test
,创建一张表test
,字段少许id、name
。
-- 创建数据库 test
create database test;
-- 选中数据库 test
use test;
-- 创建字段 id, name
create table test(id int, name varchar(20));
创建新用户
slave
,密码为1234
,(注:我这是为了做教程,密码设置的简单好记)。
-- 'slave'@'%': % 的意思是任意主机都可以通过这个账号密码访问(本教程使用的是这个)
create user 'slave'@'%' identified by '1234';
-- 也可以设置 '192.168.3.%' 表示只有 '192.168.3' 这个网段内才能访问这个数据库
create user 'slave'@'192.168.3.%' identified by '1234';
创建新用户时,可能会遇到
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这个问题,这是因为设置密码的策略问题,看下面这篇文章可解决问题:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
授权,
MySQL
的授权方式和版本有关系,下方列出了MySQL-5
和MySQL-8
的方式。
-- MySQL-5
grant replication slave on *.* to 'slave'@'%' identified by "1234";
-- MySQL-8
grant replication slave on *.* to 'slave'@'%';
-- 刷新权限列表
flush privileges;
配置
Master
的/etc/my.cnf
文件
# 修改主从配置的文件
vim /etc/my.cnf
############################
# 加入下面内容 #
############################
# 启用二进制日志
log-bin=mysql-bin-master
# 服务编号 ID,必须是唯一的
server-id=1
# 需要同步的库
binlog-do-db=test
# 不同步 mysql 这个库,因为每个服务器的 mysql 库的权限信息都不一样,同步之后就会乱套
binlog-ignore-db=mysql
重启数据库服务器,查看主服务的状态。
# 重启 MySQL 服务器
systemctl restart mysqld
# 登陆 MySQL
mysql -uroot -p
# 查看主服务的状态
show master status;
导出新建的
test
的sql
库
mysqldump -uroot -p -B test > test.sql
拷贝到
从数据库服务器
的/root
目录下
scp ./test.sql root@10.1.0.82:/root
2、Slave
- 从服务器的配置基本一样,这儿就写了一遍。
将
test.sql
导入到MySQL
中
mysql -uroot -p < test.sql
# 查看 test.sql 是否导入成功
mysql -uroot -p -e "show databases"
配置
Slave
的/etc/my.cnf
文件
# 配置从服务器
vim /etc/my.cnf
############################
# 加入下面内容 #
############################
# 服务编号 ID,必须是唯一的
server-id=2
数据库中的配置
必须先停止从服务器的运行
,才能配置,不然是会报错的。
-- 关掉同步
set sql_log_bin=off;
-- 停止从服务器
stop slave;
-- 告诉从服务器你的主服务器是 10.1.0.97,用来主从同步的账号是 slave,密码是 1234
change master to master_host='10.1.0.97', master_user='slave', master_password='1234';
-- 开启从服务器
start slave;
-- 开启同步
set sql_log_bin=on;
重启
从数据库服务器
systemctl restart mysqld
查看
从数据库服务器
的状态
show slave status\G
--------------------------------------------
-- 如果下面这两个的值不是 yes, 就是没有配置成功 --
--------------------------------------------
-- 负责 IO 通信的
Slave_IO_Running: Yes
-- 负责 SQL 同步的
Slave_SQL_Running: Yes
3、可能出现的问题
都在
从数据库上
的。
1、问题 1
show slave status\G;
解决方法
# 使用账号在从服务器上登录一次
mysql -uslave -p1234 -h 10.1.0.97
再查看一次
从数据库
的状态
show slave status\G;
注:下面 问题 2
是因为我在虚拟机配置的,服务器都是 克隆
而来的,MySQL
的唯一标识和主库一致。
2、问题 2
查看
从数据库
的状态
show slave status\G;
解决方法
# 删除 UUID,重启服务自动生成新 UUID
rm -f /var/lib/mysql/auto.cnf
# 重启数据库服务
systemctl restart mysqld
4、测试
插入一条数据做测试。
insert into test values(1, "ben");
主
数据库服务器
。
从
数据库服务器
。
如果对您有帮助,点个赞再走吧。