mysql8.0主从复制搭建

mysql8.0主从复制搭建

1.安装两个相同版本8.0的mysql数据库

主从IP端口
主库192.168.139.1283306
从库192.168.139.1303306

在这里插入图片描述

2.主从复制配置

2.1 修改mysql配置文件my.conf

主机mysql配置完整

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# 套接字文件所在目录
socket=/var/lib/mysql/mysql.sock
 
[mysqld]
#主从复制
#服务器id 此id在主从复制服务器集群中要保持唯一(每台服务器的这值都是唯一的)
server-id=1
#二进制文件存放路径,非必须,mysql8后默认存放/var/lib/mysql这里
log-bin=mysql-bin
#想要同步的数据库,如果有多个以空格隔开db1 db2 db3 ....
#如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
#binlog-do-db=db_test
#不同步的数据(可以不配置)  如果有多个以空格隔开db1 db2 db3 ....
replicate-ignore-db=mysql,information_schema,sys,performance_schema

# 服务端口号,默认为 3306
port=3306
user=root
# 指定 MySQL 安装的绝对路径;
basedir=/usr/local/mysql/mysql-8.0
# 指定 MySQL 数据存放的绝对路径;
datadir=/usr/local/mysql/mysql-8.0/data
# socket 文件所在目录
socket=/var/lib/mysql/mysql.sock
# 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用 4 个字节)
character-set-server=utf8mb4
# 设置 client 连接 mysql 时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
# 允许最大连接数
max_connections=100000
# 是否对 sql 语句大小写敏感,1 表示不敏感
lower_case_table_names=1
# 表示 SQL 模式的参数,通过这个参数可以设置检验 SQL 语句的严格程度
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#导出限制 
secure-file-priv="" 
#事件开启 
event_scheduler=on 
# 关闭通用查询日志
general_log=1
# 通用查询日志存放路径
general_log_file=/var/log/mysql/mysql.log
innodb_data_home_dir=/usr/local/mysql/mysql-8.0/data
# 在事务被提交并写入到表空间磁盘文件上之前,事务数据存储在InnoDB的redo日志文件里
innodb_log_group_home_dir=/usr/local/mysql/mysql-8.0/data/
# 默认为ON,设置为OFF,关闭事务自动提交
autocommit=1
# 默认使用“mysql_native_password”插件认证
#default_authentication_plugin=mysql_native_password
authentication_policy=* 
[mysqld_safe]
log-error=/usr/local/mysql/mysql-8.0/data/mysql.log
pid-file=/usr/local/mysql/mysql-8.0/data/mysql.pid

主从复制相关内容

#主从复制
#服务器id 此id在主从复制服务器集群中要保持唯一(每台服务器的这值都是唯一的)
server-id=1
#二进制文件存放路径,非必须,mysql8后默认存放/var/lib/mysql这里
log-bin=mysql-bin
#想要同步的数据库,如果有多个以空格隔开db1 db2 db3 ....
#如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
#binlog-do-db=db_test
#不同步的数据(可以不配置)  如果有多个以空格隔开db1 db2 db3 ....
replicate-ignore-db=mysql,information_schema,sys,performance_schema

从机配置主要添加行

#主从复制
#服务器id 此id在主从复制服务器集群中要保持唯一(每台服务器的这值都是唯一的)
server-id=2  
#二进制文件存放路径,非必须,mysql8后默认存放/var/lib/mysql这里
log-bin=mysql-bin  

2.2 还要确认mysql的uuid是否不同,Vmware复制的服务器mysql的uuid 是相同的,需要修改,文件目录/usr/local/mysql/mysql-8.0/data/auto.cnf
主机的配置文件
在这里插入图片描述
从机配置文件
在这里插入图片描述
这时候是相同的,我们把从机的auto.cnf文件删除,然后重启mysql,会生成新的auto.cnf如下,这样就可以配置主从复制了
在这里插入图片描述
2.3然后重启两个mysql
在这里插入图片描述
在这里插入图片描述
2.4创建主从复制账户rep,密码123456,并授权,然后刷新配置

//mysql8授权用户需要先创建,创建和授权同一条语句的话会报错
create user rep@'%' identified by '123456';
//再授权
GRANT ALL PRIVILEGES ON *.* TO 'rep'@'%'WITH GRANT OPTION;
//刷新
flush privileges;

2.5 查看主机的Master的状态,执行完此SQL后不要再主机执行任何操作
show master status;
在这里插入图片描述
2.6 在 从机192.168.139.130 的命令窗口执行命令
master_host: 主机名
master_port:主机端口
master_user: 主从复制账户rep
master_password:rep密码
master_log_file:上面图片查出来的内容,粘贴上来
master_log_pos:上面图片查出来的内容,粘贴上来

change master to master_host="192.168.139.128",master_port=3306,master_user="rep",master_password="123456",master_log_file="mysql-bin.000001",master_log_pos=1397;

start slave;

在这里插入图片描述

2.7 查看主从复制搭建是否成功
在从机里查询show slave status
在这里插入图片描述
Slave_IO_Running yes
Slave_SQL_Running yes
代表主从复制搭建成功了

3.查看主从复制效果

主机新建数据库和表test,从机也新建了数据库和表test
在这里插入图片描述
然后再主机新增一条数据
在这里插入图片描述
打开从机test表
在这里插入图片描述
搭建成功

4.主从复制失败的可能原因

可能原因1:MySQL的uuid是唯一的,查看主从机器的uuid是否唯一。
可能原因2:确认主从机器的server-id不能相同。查看文件:/etc/mysql/my.cnf
可能原因3:因为从库MySQL重启导致二进制文件位置从库和主库不一致master_log_file=“mysql-bin.000001”,master_log_pos=1397。

5.主从复制的使用规则

1.只能在主机里面执行DML 语句,不能在从机里面执行DML语句(会破坏主从)
2.在从机里面可以执行查询语句
3.主机只有一台,但是从机可以有多台

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,关于mysql8.0 主从复制搭建,您可以参考以下步骤: 1. 配置主服务器:在my.cnf配置文件中增加如下配置: [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=db1 binlog-do-db=db2 binlog-ignore-db=mysql relay-log=relay-bin relay-log-index=relay-bin.index 其中,server-id表示服务器的唯一ID,每个服务器必须不同;log-bin表示启用二进制日志文件,binlog-do-db表示需要同步的数据库名称,可以同时写入多个;binlog-ignore-db表示不需要同步的数据库;relay-log和relay-log-index为备库记录主库日志和索引文件的位置。 2. 创建复制用户:执行以下SQL语句: CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; 其中,repl为复制用户,password为密码。 3. 导出主服务器的数据:使用mysqldump将主服务器需要同步的数据库导出,并使用source命令在备库中导入。 4. 配置从服务器:在my.cnf配置文件中增加如下配置: [mysqld] server-id=2 relay-log=relay-bin relay-log-index=relay-bin.index 其中,server-id为从服务器的唯一ID。 5. 启动主从同步:在备库中执行以下SQL语句: CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123456; 其中,master_host为主服务器的IP地址,password为复制用户的密码,MASTER_LOG_FILE和MASTER_LOG_POS表示从哪个位置开始同步数据。 6. 启动从服务器的复制线程:执行以下SQL语句: START SLAVE; 复制线程会自动从主库拉取数据并同步到备库中。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值