MySQL实战(二):主主配置

环境准备

两台虚拟机:

master1的IP:192.168.192.136

master2的IP:192.168.192.135

一、配置

master1操作:

  1. 修改my.cnf的配置文件

    设置server-id值,并开启bin_log日志,重启mysql。

    [root@localhost ~]# vim /etc/my.cnf
    [mysqld]
    character_set_server=utf8   #设置MySQL的字符编码
    validate_password=off       
    #关闭MySQL的密码策略,可设置成简单的密码,可以不写入,这里主要是为了方便
    
    log_bin=master1
    max_binlog_size=1024M  #binlog单文件最大
    server_id=11
    auto_increment_offset=1     #自增id起始值  
    auto_increment_increment=2  #每次自增数字
    
    [root@localhost ~]# systemctl restart mysqld
    
  2. 建立同步账号

    [root@localhost ~]# mysql -uroot -p123
    mysql> grant replication slave on *.* to repl@192.168.192.135 identified by '123456';
    
  3. 查看主库状态,记住file值和position值。

    mysql> show master status;                                                                         
    +----------------+----------+--------------+------------------+-------------------+
    | File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +----------------+----------+--------------+------------------+-------------------+
    | master1.000003 |      456 |              |                  |                   |
    +----------------+----------+--------------+------------------+-------------------+
    

master2操作:

  1. 修改my.cnf的配置文件

    设置server-id值,并开启bin_log日志,重启mysql。

    [root@localhost ~]# vim /etc/my.cnf
    [mysqld]
    character_set_server=utf8   #设置MySQL的字符编码
    validate_password=off       
    
    log_bin=master1
    max_binlog_size=1024M  #binlog单文件最大
    server_id=11
    auto_increment_offset=1     #自增id起始值  
    auto_increment_increment=2  #每次自增数字
    
    [root@localhost ~]# systemctl restart mysqld
    
  2. 建立同步账号

    [root@localhost ~]# mysql -uroot -p321
    mysql> grant replication slave on *.* to 'repl21'@192.168.192.136 identified by '654321';
    
  3. 查看主库状态,记住file值和position值。

    mysql> show master status;                                                                         
    +----------------+----------+--------------+------------------+-------------------+
    | File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +----------------+----------+--------------+------------------+-------------------+
    | master2.000003 |      154 |              |                  |                   |
    +----------------+----------+--------------+------------------+-------------------+
    

master1与master2相互同步配置,在上面步骤的基础之上进行操作。

  1. master1设置与master2同步,启动master1从库

    mysql> change master to
         -> master_host='192.168.192.135',
         -> master_port=3306,
         -> master_user='repl21',
         -> master_password='654321',
         -> master_log_file='master2.000003',
         -> master_log_pos=154;
     Query OK, 0 rows affected, 2 warnings (0.02 sec)
     
     mysql> start slave;
     Query OK, 0 rows affected (0.01 sec)
     
     #查看是否配置成功
     mysql> show slave status\G;
    

    在这里插入图片描述

  2. master2设置与master1同步,启动master2从库

    mysql> change master to master_host='192.168.192.136',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql.000003',master_log_pos=456;
    Query OK, 0 rows affected, 2 warnings (0.01 sec)
     
     mysql> start slave;
     Query OK, 0 rows affected (0.01 sec)
     
     #查看是否配置成功
     mysql> show slave status\G;
    

另:

由于我们不是一开始就配置同步的,所以未同步之前的数据双方不会共享,如果要将双方的数据弄成一样的话,就需要用到mysqldump备份、scp文件传输、以及mysql将文件写入到另一方的数据库中。

追加:

如果我们要配置多主多从的话,就要在每个master的配置文件中(my.cnf)添加一个参数—— log-slave-updates ,在多主多从配置中很重要的一个参数,与log_bin一同使用,表示开启master的slave的二进制日志。如果没有这个参数。

假设有个双主双从的配置:master1,master2,slave1(是master1的slave),slave2(是master2的slave)
当你在 master1 上修改 db 数据, master2 的 db 数据会更新,但 slave2 的 db 不会更新。原因是在 master1 上修改数据时, master2 就只是一个 slave ,master2不会把更新数据写入 log-bin 中,只会写入 log-slave 中。
如果你想要 slave2 能跟着 master1 更新数据,就要在 master2 的 my.cnf 配置文件里加上 log-slave-updates 。

比较建议,在配置多主多从时,在每个 master 上的配置文件都添加上 log-slave-updates 。

log-slave-updates 是与 log-bin 一同使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值