mysql 主从复制

一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。

一、复制的基本原理

slave 会从master读取binlog日志 来进行数据的同步

1、 MySQL复制过程分成三步:

 master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;

 slave将master的binary log events拷贝到它的中继日志(relay log);

 slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的

2、复制的基本原则

 每个slave 只有一个master
 每个slave 智能有一个唯一的服务器ID
 每个master 可以有多个slave

3、主从配置

主机修改my.ini 配置文件

server-id=1    【必须】主服务器唯一ID
log-bin=自己本地的路径/mysqlbin  【必须】启用二进制日志
log-err=自己本地的路径/mysqlerr。   【可选】启用错误日志
basedir="自己本地路径"            【可选】根目录
tmpdir="自己本地路径"             【可选】临时目录
datadir="自己本地路径/Data/"      【可选】数据目录
主机,读写都可以                    read-only=0
binlog-ignore-db=mysql          【可选】设置不要复制的数据库
binlog-do-db=需要复制的主数据库名字 【可选】设置需要复制的数据库

从机修改my.cnf 配置

[必须]从服务器唯一ID
[可选]启用二进制日志

注意:

修改配置文件之后重启mysql 后台服务
主从机都关闭防火墙
windows手动关闭。
关闭虚拟机linux防火墙    service iptables stop

4、windows 主机建立账户并授权slave

授权

GRANT REPLICATION SLAVE ON *.* TO 'lxy'@'192.168.1.144' IDENTIFIED BY '123456';

flush privileges;

查看 master 状态

show master status;   记录下FilePosition的值

⚠️ 执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

5、在Linux从机上配置需要复制的主机

启动mysql 服务

/opt/mysql/init.d/mysql start

通过命令行登录管理 mysql 服务

/opt/mysql/bin/mysql -uroot -p'new-password'

配置复制主机(设置 上一步的 File和Position 值)

CHANGE MASTER TO MASTER_HOST='192.16.1.175',MASTER_USER='lxy',MASTER_PASSWORD='123456',MA
STER_LOG_FILE='File名字',MASTER_LOG_POS=Position数字;

⚠️
1.在执行grant授权的时候就限定数据库;
2.在主服务器上限定binlog_do_db = 数据库名;
3.主服务器上不限定数据库,在从服务器上限定replicate-do-db = 数据库名;

启动从服务器复制功能

start slave

查看从服务器的状态

show slave status\G

下面两个参数都是Yes,则说明主从配置成功!

Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 

如何停止从服务复制功能

stop slave

开始测试:
主机新建库、新建表、insert记录,从机复制

扩展

如果想实现 主-从(主)-从 这样的链条式结构,需要设置:
log-slave-updates #只有加上它,从前一台机器上同步过来的数据才能同步到下一台机器。
当然,二进制日志也是必须开启的:
log-bin=/opt/mysql/binlogs/bin-log
log-bin-index=/opt/mysql/binlogs/bin-log.index

还可以设置一个log保存周期:
expire_logs_days=14。

6、测试场景

主数据库服务器:192.168.1.175,MySQL已经安装,并且无应用数据。
从数据库服务器:192.168.1.143,MySQL已经安装,并且无应用数据。

⚠️ 以上是主机为windows 系统 从机为Linux 系统,当然实际的应用中可能都是Linux 系统,类似操作,配置文件中以上时常用参数,其他的参数可以参考相关资料

你可能感兴趣的:(mysql)