主从复制:主库可写(会写入从库)可读,从库只能读

主主复制:两个库可写可读,一个库修改会写入另一个库

A.主从复制

1.准备两台机器
192.168.1.193 master 主库机器
192.168.1.194 slave 从库机器
2.在两台机器安装mysql5.7

https://blog.csdn.net/qq_16676539/article/details/81904714

3.**配置 master 主库机器 **
a.开启binlog
设置mysql的唯一编号(mysql5.7即更高版本新加参数), 和开启binlog日志
输入vi /etc/my.cnf 进入配置文件,按Insert键进入编辑模式,添加如下参数
server-id=1 (机器的唯一标识)
log-bin=/var/lib/mysql/mysql-bin (开启binlog)
这里写图片描述
添加完后,按Esc键,输入 :wq! 保存退出

b.重启 service mysqld restart
这里写图片描述

c.进入mysql,查看binlog是否开启成功,输入cd /var/lib/mysql,看到如下文件代表开启成功
这里写图片描述
d.创建用户并授权
登录MySQL mysql -uroot -p
创建用户:create user ‘repl’ identified by ‘repl’;
授权:grant replication slave on . to ‘repl’@‘192.168.1.%’ identified by ‘repl’;

4.配置slave 从库机器
a.开启binlog
输入vi /etc/my.cnf 进入配置文件,按Insert键进入编辑模式,添加如下参数
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
( ( server-id机器的唯一标识),后面两步是用来打开slave的relaylog功能的)这里写图片描述
添加完后,按Esc键,输入 :wq! 保存退出
b.重启 service mysqld restart
5.建立主从关系
a.打开主库机器登录mysql
输入 show master status; 查看状态
这里写图片描述

b.打开从库机器登录mysql
输入 show slave status\G; 查看状态,状态未开启时进行如下设置:
change master to
master_host=‘192.168.1.193’, // 主节点
master_port=3306, //主节点的端口号
master_user=‘repl’, // 账号
master_password=‘repl’, // 密码
master_log_file=‘mysql-bin.000002’, // show master status 对应的的日志
master_log_pos=936; // show master status 对应的
这里写图片描述

c.输入start slave 开启从节点
输入 show slave status\G; 查看状态,如下图所示为成功
这里写图片描述

6.Navicat数据库工具创建主从库连接,如下图所示:
如主从库未开启远程访问,需先开启,操作如下:
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
这里写图片描述

这里写图片描述

可以操作数据库啦
这里写图片描述

B.主主复制

1.准备两台机器
192.168.1.193 master 主库机器
192.168.1.195 master 主库机器
2.在两台机器安装mysql5.7

https://blog.csdn.net/qq_16676539/article/details/81904714
3.修改my.cnf
开启binlog
输入vi /etc/my.cnf 进入配置文件,按Insert键进入编辑模式,添加如下参数
第一台:
server-id=1
log-bin=/var/lib/mysql/mysql-bin
auto_increment_increment=2
auto_increment_offset=1
这里写图片描述
第二台:
server-id=3
log-bin=/var/lib/mysql/mysql-bin
auto_increment_increment=2
auto_increment_offset=2
这里写图片描述
重启 service mysqld restart
4. 创建用户并授权
登录MySQL mysql -uroot -p
创建用户:create user ‘repl’ identified by ‘repl’;
授权:grant replication slave on . to ‘repl’@‘192.168.1.%’ identified by ‘repl’;
这里写图片描述
set global validate_password_policy=0;
set global validate_password_length=1;

5.建立关系
第二台关联第一台
a.打开第一台机器登录mysql
输入 show master status; 查看状态
这里写图片描述

b.打开第二台机器登录mysql,执行如下操作
change master to
master_host=‘192.168.1.193’, // 主节点
master_port=3306, //主节点的端口号
master_user=‘repl’, // 账号
master_password=‘repl’, // 密码
master_log_file=‘mysql-bin.000002’, // show master status 对应的的日志
master_log_pos=2072; // show master status 对应的
这里写图片描述

第一台关联第二台
a.打开第二台机器登录mysql
输入 show master status; 查看状态
这里写图片描述

b.打开第一台机器登录mysql,执行如下操作
change master to
master_host=‘192.168.1.195’, // 主节点
master_port=3306, //主节点的端口号
master_user=‘repl’, // 账号
master_password=‘repl’, // 密码
master_log_file=‘mysql-bin.000001’, // show master status 对应的的日志
master_log_pos=702; // show master status 对应的
这里写图片描述

6.启动库,执行start slave
这里写图片描述
这里写图片描述

7.数据库工具Navicat新建连接,远程操作数据库,可以看到两个库可以互相读写
这里写图片描述
*大功告成~~~~*

原文链接:https://blog.csdn.net/a375015762/article/details/80164042

binlog主要用途

原文链接:https://blog.csdn.net/hblfyla/article/details/70225249

binlog的两个重要用途:

  1. 主从复制
    对于主从部署的mysql server,master将所有可能更改数据库状态的操作写入binlog并将其同步给slave,后者重放binlog中的操作序列以便使其数据库状态与master达到一致,这样就实现了master-slave的数据同步。

  2. 数据恢复
    数据库恢复时可以回放binlog重建宕机时的数据状态。假设数据库在某个备份点后又运行一段时间后宕机,则server重启后,可以在上次备份点的基础上,通过回放binlog来重做数据以便恢复上次备份点到server宕机这段时间内的数据状态。

注意:binlog只包含可能改变数据库状态的操作,因此,select或show等不会修改数据的操作不会记录在binlog中。

Logo

更多推荐