本帖最后由 狙击姐姐的心 于 2022-10-19 15:49 编辑
MySQL主从介绍 1、MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 2、MySQL主从是基于binlog的,主上须开启binlog才能进行主从。 3、 主从过程大致有3个步骤 (1)主将更改操作记录到binlog里 (2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里中继日志 (3)从根据relaylog里面的sql语句按顺序执行 4、主上有一个log dump线程,用来和从的I/O线程传递binlog/5、从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地
MySQL主从原理图
MySQL主从配置 主配置(安装完mysql的虚拟机)
基础配置 # vi /etc/my.cnf 编辑配置文件 log_bin=linux1
# /etc/init.d/mysqld restart
查看# ll /data/mysql/
重启mysqld服务
# vim /etc/profile export PATH=$PATH:/usr/local/mysql/bin (文件末尾加入) # source /etc/profile # mysqldump -uroot mysql > /tmp/mysql.sql 备份mysql库(加入环境变量)
创建一个库保存数据 # mysql -uroot kei < /tmp/mysql.sql 将mysql库恢复成新建的库,作为测试数据 数据库配置 # mysql -uroot 进入数据库(没有密码) > grant replication slave on *.* to 'repl' @192.168.31.133 identified by 'password';
创建用作同步数据的用户并赋予权限,IP地址为从节点的地址(replication是MySQL非常出色的一个功能,该功能将一个MySQL实例中的数据复制到另一个MySQL实例中。)
> flush tables with read lock; 将表锁住,保持表内数据不变
> show master status; 显示主机状态
从配置(安装完mysql的虚拟机)
基础配置 # vi /etc/my.cnf 编辑配置文件,主从配置文件 sever id 不可以一样。
# /etc/init.d/mysqld restart 重启mysqld服务
在主上将文件拷贝到从上,并在从上查看文件大小是否一致
# mysql -uroot -e "create database kei" //创建一个和主一样的库
# mysql -uroot kei < /tmp/mysql.sql 将文件内容导入库 数据库配置 # mysql -uroot mysql> stop slave; 进入数据库(没有密码)(698861为show master status;中的大小) > change master to master_host='192.168.31.132',master_user='repl',master_password='123456',master_log_file='linux1.000001',master_log_pos=698861;
mysql> start slave;
关闭防火墙和selinux systemctl stop firewalld / setenforce 0 mysql> show slave status\G
> unlock tables; 在主上执行解锁表
检验主从配置是否正常
从上操作 > show slave status\G; 在从上执行命令,查看(将防火墙关闭)
主、从同时操作 mysql> use kei; mysql> show tables; mysql> select count(*) from db;
主上操作,删除数据 mysql> truncate table db; mysql> select count(*) from db;
从上查看数据 mysql> select count(*) from db;
也可drop table尝试看看
几个配置参数
主服务器上
从服务器上
测试主从
主服务器上 # mysql -uroot -p密码 在主上进入数据库 > select count(*) from db; > truncate table db;
从服务器上 # mysql -uroot kei 在从上进入数据库 > select count(*) from db;
|