首先了解主从复制是什么
主从复制是建立一个和主数据库一样的数据库,称为从数据库作用就是做数据的热备,作为后备数据库,在主数据库出现故障后,可以切换到数据库继续工作,避免数据丢失
读写分离,数据库可以支撑更多的并发
原理是数据库里面有一个bin-log 二进制文件 ,记录了所有的sql语句
从服务器的io 进程去获取主服务器的bin-log 二进制文件,将结果返回到中继日志relay-log 在从服务器的sql进程获取中继日志中的bin-log 二进制文件 ,并执行这些sql语句
在数据库主从复制的过程中,可以通过修改 `/etc/my.cnf` 文件来配置主从复制相关的设置。下面是一些常见的主从复制配置选项:
1. `server-id`: 设置数据库服务器的唯一标识符,主从服务器应该分别设置不同的值。
2. `log-bin`: 启用二进制日志,用于记录所有的数据库更新操作。
3. `binlog-do-db` 和 `binlog-ignore-db`: 设置要复制或忽略的数据库或表。
4. `relay-log`: 设置中继日志文件的路径和名称,用于从服务器接收和存储主服务器的二进制日志。
5. `replicate-do-db` 和 `replicate-ignore-db`: 设置要复制或忽略的数据库或表。
修改 `/etc/my.cnf` 后,需要重新启动 MySQL 服务器才能使配置生效。
请注意,对于不同的 MySQL 版本和发行版,配置文件的位置和名称可能会有所不同。因此,最好参考相应的文档或操作手册以确保正确的配置主从复制。
在主数据库中需要做的操作
进入配置文件加 log-bin 和 server-id
创建授权账户
先进入数据库 mysql -u root -p密码
在授权创建用户 grant all *.* to '用户名'@'主机或者%' identified by '密码';
all 是所有权限 第一个* 是所有库 第二个*是所有表
权限有replication slave; 拥有这个权限可以查看从服务器 ,从主服务器读取二进制日志
super 允许用户使用修改全局变量的set 语句 及change master 语句
reload 权限 必须拥有这个权限才可以执行 flush 刷新表日志 权限
刷新授权表 flush privileges ; 退出数据库
需要重启数据库服务 systemctl restart mysqld
在进入主数据库 输入命令 show binlog events;
找到主数据库的binlog日志的log_name 的名字复制
在从数据库需要进行的操作
进入配置文件修改vi /etc/my.cnf
添加 log-bin 和 server-id
重启服务 systemctl restart mysqld
在进入从数据库
输入edit 回车
输入
change master to
master_host='主数据库的主机名',
master_user='主服务器的用户名',
master_password='密码',
master_port=端口号,
master_log_file='binlog中的log_name',
master_log_pos=4, 日志位置
master_connect_retry=10; 默认尝试次数
stop slave
reset slave