MYSQL——主从复制快速上手

复制原理

使用Mysql的 bin 日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL 语句,其中包含insert、update、delete、create/alter/drop table、grant 等。把主服务器上的 bin 日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

复制步骤

主数据库配置

1、修改my.ini(linux修改my.cnf)

#添加下面的内容
log-bin = mysql-bin
server-id =1
innodb-file-per-table =ON
skip_name_resolve=ON

 2、查看主数据库的bin日志是否开启

#执行命令 log_bin=on说明已开启
show GLOBAL VARIABLES like '%log_bin%';

3、查看主数据库二进制日志

#执行命令
show master logs;

4、查看server_id信息

#执行命令
show GLOBAL VARIABLES like '%server%';

5、创建有复制权限的用户给从数据库使用

#创建用户
grant replication slave,replication client on *.* to '创建的账号名'@'%' identified by '创建的密码';
#刷新用户
flush privileges;

从数据库配置

1、修改my.ini(linux修改my.cnf)

#添加下面的内容
relay-log=relay-log
relay-log-index=relay-log.index
server-id=2
innodb_file_per_table=ON
skip_name_resolve=ON

2、查看从数据库的中继日志是否打开

#执行命令
show GLOBAL VARIABLES like '%relay_log%';

3、查看server_id信息

#执行命令
show GLOBAL VARIABLES like '%server%';

4、在从节点配置访问主节点的参数信息

添加主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。

注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。

#在主数据库执行
show master logs;

#执行命令   从节点配置访问主节点的参数信息
CHANGE MASTER TO MASTER_HOST='主数据库的ip地址',MASTER_USER='前面主数据库创建的账号',MASTER_PASSWORD='对应的账号密码', MASTER_LOG_FILE='查询到的最后一个bin日志名称',MASTER_LOG_POS=513212(当前bin日志到达的位置)

5、查看从数据库状态

SHOW SLAVE STATUS;

6、启动复制线程

#启动主从复制
start slave;
#停止主从复制
stop slave;


测试配置结果

1、主数据库创建一个新的数据库

#创建后执行命令File_size值会变大
show master logs;

2、从服务器端查看是否有新的库存在

#如果有新的库继续执行,看Read_Master_Log_Pos的值是否跟主数据库File_size一样
SHOW SLAVE STATUS;


需要注意的问题

如何保证主从复制时的事物安全

1、在主节点设置参数

sync_binlog=1: Mysql开启bin-log日志使用bin-log时,默认情况下,并不是每次执行写入就与硬盘同步,这样在服务器崩溃时,就可能导致bin-log最后的语句丢失。可以通过这个参数来调节,sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。

如果用到innode 存储引擎

innodb_flush_logs_at_trx_commit=ON(刷写日志:在事务提交时,要将内存中跟事务相关的数据立即刷写到事务日志中去。)

innodb_support_xa=ON (分布式事务:基于它来做两段式提交功能)

sync_master_info=1:每次给从节点dump一些事件信息之后,主节点的master info 信息会立即同步到磁盘上。让从服务器中的 master_info 及时更新。

2、在每个slave节点

skip_slave_start =ON (跳过自动启动,使用手动启动。)

relay_log也会在内从中先缓存,然后在同步到relay_log中去,可以使用下面参数使其立即同步。

sync_relay_log =1 ,默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制。

sync_relay_log_info=1每间隔多少事务刷新relay-log.info,如果是table(innodb)设置无效,每个事务都会更新

注: 在从节点中 master.info是记录在主节点复制位置的文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值