mysql8主从复制

本文详细介绍了在CentOS7环境下MySQL8的主从复制和读写分离配置。主从复制通过二进制日志实现数据同步,确保主库和从库数据一致性。配置包括设置服务器ID、日志选项、复制过滤等,以及在主从服务器上的相应步骤。此外,主从复制能提供高可用性、读写分离和便捷备份。
摘要由CSDN通过智能技术生成

mysql8主从复制和读写分离

1. 准备工具

	1. Centos7
	2. MySQL8
  1. 先安装好MySQL,如果在linux中不会安装MySQL的,可以去看

https://blog.csdn.net/YangH000001/article/details/120901131?spm=1001.2014.3001.5501

这篇文章,讲了在linux中如何安装MySQL

3. 什么是主从复制

	 将主数据库中的DDL和DML操作通过二进制日志传输到从数据库上,然后将这些日志重新执行;从而使得从数据库的数据与主数据库保持一致。

4. 主从复制的作用

1. 主数据库出现问题,可以切换到从数据库,从库做备用的。
  2. 可以进行数据库层面的读写分离,主机负责写,从机负责读,剪切每个数据库的压力
  3 可以在从数据库上进行日常备份。

5. 主从复制的流程图

在这里插入图片描述

6. 配置主从复制

  1. 安装配置好主服务的MySQL之后会在linux中的/etc目录下有一个my.cnf文件
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql8.0
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql8.0/data

# 下面这一截是做主从复制需要配置的信息
server-id=1  # 这个需要配置,并且在整个MySQL的主从复制中,这个id的值不能一样
log-bin=mysql-bin # 这个是主从复制的日志信息,从库是根据日志信息来备份数据的
binlog-ignore-db=mysql # 这个是备份忽略的数据库
binlog-do-db=mdb # 这个是需要备份的数据库
binlog_format=STATEMENT #默认的格式
#  binlog_format 的三种格式
#  1. Row 主库进行的所有操作,都会一行一行的进行日志记录,然后发给从库进行执行,这种方式很安全,但是如果主库执行了100万数据的操作,那么日志种就会记录100万的日志操作,记录的记录量太大,
# 2. STATEMENT  主库写入执行的SQL语句到binlog中,从库读取这些SQL语句并执行,这种格式会有一个问题,在从库读取到binlog的日志并且执行的时候,会有一定的时间延迟,如果主库执行的update更新时间的操作,那么到从库的时候就会时间有偏差
# 3. mixed 这个结合了前面两个的问题,会自动的进行切换,但是这个识别不了关键词,比如@@hostname,如果执行这种关键词,主库和从库数据不一致会

#双主双从配置 
log-slave-updates #因为自己也可以会作为从机,所以需要开启这个从机日志更新操作
auto-increment-increment=2
auto-increment-offset=1

# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
  1. 安装好从服务的MySQL的/etc的my.cnf配置文件
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data

#主从复制的从服务的id
server-id=2
relay-log=mysql-relay

# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

  1. 在主服务器上登录MySQL,创建账号授权从服务访问
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
  1. 在主服务MySQL中执行show master status;
+------------------+----------+--------------+-------------------------+
| File             | Position [接入点]| Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+-------------------------+
| mysql-bin.000001 |      1199         | test | mysql,infomation_schema |                   
+------------------+----------+--------------+-------------------
  1. 在从服务MySQL中执行
#连接主服务器
change master to master_host='主服务器IP地址',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=1199;
#启动slave
start slave
#查看slave的状态
show slave status\G(注意没有分号)
#如果显示两个yes就代表是成功了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值