linux笔记37-mysql主从/主主配置

mysql主从/主主配置
1、MySQL主从
     每个从仅可以设置一个主。主在执行sql之后,记录二进制log文件(bin-log)。从连接主,并从主获取binglog,存于本地replay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。
主从之间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。如果主从的网络断开,从会在网络正常后,批量同步。如果对从进行修改数据,那么很可能在执行主动的bin-log时出现错误而停止同步,所以一般不直接修改从上的数据。
      一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。
可以应用在读写分离的场景中,用以降低单台MySQL服务器的I/O,可以实现MySQL服务的HA集群,可以是1主多从,也可以是相互主从。
2、安装、配置MySQL
    首先在机器A(主)和B(从)安装启动MySQL服务,然后使用rsync同步数据:
rsync -av wei blog 192.168.1.120:/data/mysql


3、配置主

(1)编辑机器A的my.cnf,修改、添加(默认不需要修改):
log-bin=mysql-bin 
server-id = 1
两个可选参数(2选1)
binlog-do-db=db1,db2 #需要同步的库
binlog-ignore-db=db1,db2 #不需要同步的库
我们这里选择第二个:
binlog-ignore-db=mysql

重启服务,生效新配置!
(2)在主mysql上配置从的权限
grant replication slave on *.* to 'repl'@'192.168.1.120' identified by '123456';
flush privileges;            #是授权立即生效
flush tables with read lock;   #锁定表状态
show master status;        #查看主状态,用于后面从的配置

4、配置从

(1)编辑机器A的my.cnf,修改、添加:
server-id = 2
两个可选参数,主已经配置了,从可以不配置(2选1):
replicate-do-db=db1,db2 #需要同步的库
replicate-ignore-db=db1,db2 #不需要同步的库
重启服务生效新配置;
在从mysql配置主:
slave stop;
change master to master_host='192.168.1.119',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=106;
slave start;
show slave status\G;



配置完成从后,需要解除主的锁定状态:
unlock tables;
5、测试主从
在主创建库www:
create database www;
可以看到从已经自动同步创建了www库;
建议:MySQL主从机制比较脆弱,谨慎操作,如果重启master,必须要先把slave停掉,即要在slave执行slave stop命令后,再去重启master的mysql服务,否则会导致中断,重启后,还需要把slave开启slave start。
6、mysql主主配置
在前面主从的基础上,再做一遍B-A:主-从
(1)修改A上mysql配置文件/etc/my.cnf,在[mysqld]添加如下项目:
auto-increment-increment = 2 #应为整个结构中服务器的总数,本案例用到两台服务器,所以设为2
auto-increment-offset = 1  #设置自动增长的字段的偏移量,即初始值为1



(2)修改B上mysql配置文件/etc/my.cnf,在[mysqld]添加如下项目:
auto-increment-increment = 2 
auto-increment-offset = 2  #设置自动增长的字段的偏移量,即初始值为2
binlog-ignore-db = mysql

     在B上mysql对A授权:
grant replication slave on *.* to 'repl'@'192.168.1.119' identified by '123456';
show master status;        #查看主状态,用于后面从的配置



     (3)在A上配置从:
slave stop;
change master to master_host='192.168.1.120',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000006',master_log_pos=106;
slave start;
show slave status\G;




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值