美文网首页
mysql主从配置

mysql主从配置

作者: flyjar | 来源:发表于2022-05-19 15:29 被阅读0次

主从同步原理图

v2-44cb6d90b7b1537ccdae495a2a1daacc_1440w.jpg
主从同步工作流程
  • Mysql复制过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。
  • 第二部分就是slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。
  • SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。
    此外,在master中也有一个工作线程:和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程。复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。

mysql复制的模式

  • 1--主从复制:主库授权从库远程连接,读取binlog日志并更新到本地数据库的过程;主库写数据后,从库会自动同步过来(从库跟着主库变);
  • 2--主主复制:主从相互授权连接,读取对方binlog日志并更新到本地数据库的过程;只要对方数据改变,自己就跟着改变;

具体配置

  • 1、主从配置文件(配置文件默认是/etc/my.cnf)
[mysqld]

## 唯一
server-id=100  

## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
  • 2、给权限用于主从同步数据 在主库上创建一个用户,授权远程访问和所有权限。此账号是为了从库读取主库的上了binlog
CREATE USER 'slave'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
  • 3、从库配置(配置文件默认是/etc/my.cnf)
[mysqld]
## 唯一(不要与主的重复了)
server-id=101  

## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   

## relay_log配置中继日志
relay_log=edu-mysql-relay-bin  

## 指定只同步某个库
replicate-do-db=databaseName

## 如果指定多个库
replicate-do-db=databaseName2

## 指定只同步某个表
replicate-do-table=databaseName.tableName

## 如果指定多个表
replicate-do-table=databaseName.tableName2
  • 4、查看主库的状态
image.png
  • 5、在从库上执行同步连接命令
change master to master_host='IP', master_user='slave', master_password='password', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 1, master_connect_retry=30;

master_log_file是第四步中File的值
master_log_pos是第四步中Postion的值

master_host :Master的地址
master_port:Master的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

  • 6、从库上开启slave,并查看salve状态
start slave;
show slave status;
image.png

Slave_IO_Running等于yes代表已经连接到主库
Slave_SQL_Running等于yes 可执行主库binlog

image.png

这四个记录了 IO或者SQL连接或者执行出现的错误

  • 7、主从同步失败常见问题


    v2-842a32e2c557582387c96e8021d11c33_r.png

    这种情况是master_log_pos或者master_log_file没有读取到主库最新的
    可以执行stop slave; 再去主库查看最新的状态。重新执行change命令。在开启start slave;

相关文章

网友评论

      本文标题:mysql主从配置

      本文链接:https://www.haomeiwen.com/subject/dpctprtx.html