前期准备
- 在虚拟机上创建三台centos7服务器。例如我的创建的IP如下:
序号 | ip | 类型 |
---|---|---|
服务器1 | 192.168.83.156 | 主节点 |
服务器2 | 192.168.83.157 | 从节点 |
服务器3 | 192.168.83.158 | 从节点 |
- 在三台服务器中安装好mysql8,并保证能使用。
安装mysql8的脚本参照:centerOs7安装相关的应用脚本
主从配置
主节点配置
在 192.168.83.156 主节点服务器中,打开mysql的配置文件my.ini.
# 我的mysql配置文件地址在/etc/下,根据自己的实际位置修改
vim /etc/my.cnf
在配置文件中找到**[mysqld]** 的部分,在这部分下添加以下内容:
#指定需要同步给从节点的数据库 。不写则默认全部同步,会忽略binlog-ignore-db部分
# binlog-do-db=testDB
# 指定不同步到从节点的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#自动清理 180 天前的log文件,可根据需要修改
expire_logs_days=180
# 启用二进制日志
log-bin=master-bin
# 自定义服务器唯一ID
server-id=156
log_bin_index = master-bin.index
如下图:
从节点配置
在 192.168.83.157 从节点 和 192.168.83.158 从节点 中打开mysql的配置文件
在配置文件中找到**[mysqld]** 的部分,在这部分下添加以下内容:
# 我的mysql配置文件地址在/etc/下,根据自己的实际位置修改
vim /etc/my.cnf
在配置文件中找到 [mysqld] 的部分,在这部分下添加以下内容:
# 自定义服务器唯一id
server-id = 157
read_only = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay-log = slave-relay-bin
#主服务器I/O日志读取、记录及存放
relay-log-index = slave-relay-bin.index
如下图:
检查msyql的uuid配置
进入主从三台服务器中的MySQL安装路径,找到data文件夹,此文件夹下有一个auto.cnf 的文件
查看uuid值。必须确保三个uuid都不相等。如果相等,则需要修改为新的uuid。
如下:
序号 | ip | uuid截图 |
---|---|---|
服务器1 | 192.168.83.156 | |
服务器2 | 192.168.83.157 | |
服务器3 | 192.168.83.158 | |
配置从节点连接到主节点上
查看主节点的信息
进入主节点服务器,并使用以下命令重启mysql
service mysql restart
重启成功后使用以下命令进入mysql操作界面
# 执行这个命令后输入连接的密码即可
mysql -uroot -p
登录进入mysql 后,使用以下mysql 语句查看主节点的信息
show master status \G;
如下图,框选中的File 和 Position 两个部分需要记录下来,从节点的配置使用到。:
配置从节点连接主节点
进入从节点服务器,并使用以下命令重启mysql
service mysql restart
重启成功后使用以下命令进入mysql操作界面
# 执行这个命令后输入连接的密码即可
mysql -uroot -p
登录进入mysql 后,使用以下mysql语句配置从节点连接主节点
change master to master_host='主节点ip地址',master_port=主节点mysql的端口,master_user='登录主节点mysql的账号',master_password='登录主节点mysql的密码',master_log_file='主节点file值',master_log_pos=主节点positon值
例如:
change master to master_host='192.168.83.156',master_port=3306,master_user='root',master_password='1234',master_log_file='master-bin.000002',master_log_pos=157
使用一下mysql的语句查看从节点连接主节点的状态
show slave status\G;
如下图:
当 下图选中的值都为Yes时说明节点关联成功。
注意: 若上图红框部分中出现no的时候,请按下面两个方式之一的步骤操作:
方式1:
- 使用命令行断开停止从节点
stop slave;
- 重新配置主从
change master to master_host='主节点ip地址',master_port=主节点mysql的端口,master_user='登录主节点mysql的账号',master_password='登录主节点mysql的密码',master_log_file='主节点file值',master_log_pos=主节点positon值
- 启动从节点
start slave;
方式2
1. 使用命令行断开停止从节点
shell stop slave;
2. 使用命令忽略错误继续同步
set global sql_slave_skip_counter=1;
3. 启动从节点
start slave;
主从测试
在主从节点中任意选则一个,进入musql,使用以下建表语句
drop table if EXISTS t_test;
create table t_test (
id int(11) not null PRIMARY key auto_increment COMMENT 'id',
create_time int(11) not null COMMENT '创建时间',
update_time int(11) null comment '更新时间',
delete_flag TINYINT(2) not null DEFAULT '0' comment '是否删除 0否未删除,1是已删除',
state TINYINT(1) not null DEFAULT '1' COMMENT '状态是否可用, 0不可用,1可用',
remark varchar(255) null comment '备注'
)COMMENT '主从测试表';
创建完成之后,使用以下sql语句查看其他节点是否已经成功同步出表。
show tables;
存在则说明成功。